Skip to main content

Hugging Face Transformers를 위한 하이퍼파라미터 최적화

이 문서는 Hugging Face Transformers를 위한 세 가지 하이퍼파라미터 최적화 전략을 설명하는 보고서입니다.
Created on January 4|Last edited on January 27
이는 여기에서 볼 수 있는 영어 기사를 번역한 것이다.


하나의 NLP 모델이 처음부터 학습을 수행하는 데는 수백 시간이 걸립니다. 대신 사전 학습된 모델을 사용하여 특정 작업에 맞게 미세 조정하는 것이 훨씬 수월합니다. HuggingFace Transformers 라이브러리를 이용하면, 여러 개의 추가 레이어가 있는 사전 학습된 NLP 모델을 빠르게 로드하여 특정 작업에 대해 몇 가지 미세 조정 에포크(epoch)를 실행할 수 있습니다. Tune은 SOTA 튜닝 알고리즘을 사용하여 확장 가능한 하이퍼파라미터 튜닝을 수행할 수 있도록 높은 수준의 추상화를 제공합니다.

Table of Contents



하이퍼파라미터 튜닝 실험

이 보고서에서는 세 가지 최적화 전략인 그리드 검색, 베이지안 최적화 및 개체군 기반 학습을 비교하여, 가장 짧은 시간에 더 정확한 모델을 생성하는 방법을 확인합니다.
본 실험에서는 Hugging Face Transformers의 기본 uncased BERT 모델을 사용하여, SuperGLUE 벤치마크의 RTE 데이터세트를 대상으로 미세 조정을 수행하고자 합니다. 하이퍼파라미터의 선택이 최종 모델 성능에 상당한 영향을 미칠 수 있음을 확인하게 될 것입니다.
실험에 사용된 모델 튜닝 방법은 다음과 같습니다:

Ray Tune 및 W&B

W&B와 함께 Ray Tune을 사용하면 다음과 같은 많은 이점이 있습니다:
  • Tune은 확장 가능한 최첨단 하이퍼파라미터 튜닝 알고리즘을 구현할 수 있도록 해줍니다
  • 코드 변경 없이도 실험을 노트북에서 GPU 기반 서버로 쉽게 확장할 수 있습니다
  • 두 줄의 코드로 여러 GPU에서 실험을 병렬화할 수 있습니다
  • W&B Experiment Tracking으로 유용한 추론을 위한 모든 통계를 한곳에 모을 수 있습니다
  • Ray Tune과 함께 W&B을 사용하면, 진행 과정이 상실되는 일이 없습니다

W&B 추적 활성화

Tune을 이용하여 W&B를 통해 진행 과정을 추적하는 방법에는 두 가지가 있습니다.
  • tune.run 을 호출할 때 WandbLogger 를 로거로 전달합니다. 이렇게 하면 Tune에 보고된 모든 메트릭을 추적할 수 있습니다.
  • @wandb_mixin 함수 데코레이터를 사용하고 wandb.log를 호출하여 원하는 메트릭을 추적합니다. Tune은 config 딕셔너리에 전달된 정보를 사용하여 W&B 실행을 초기화합니다.
config = {
....
"wandb":{
"project": "Project_name",
"api_key": #Your W&B API KEY,
#Additional wandb.init() parameters
}
}


그리드 검색 (베이스라인):

베이스라인을 설정하기 위해서는 그리드 검색을 수행하여 페이퍼 작성자가 설명한 영역에서 최적의 하이퍼파라미터 세트를 찾습니다.
{
"per_gpu_batch_size": [16, 32],
"learning_rate": [2e-5, 3e-5, 5e-5],
"num_epochs": [2, 3, 4]
}
이제 메트릭 시각화를 통해 성능을 비교해 보겠습니다.
analysis = tune.run(
...
resources_per_trial={'gpu': #num_gpu,
'cpu': #num_cpu }, # Tune will use this information to parallelize the tuning operation
config=config
...
)




비동기 HyperOpt를 이용한 베이지안 검색

베이지안 검색에서는 파라미터의 성능(예를 들어, 손실)을 예측하여 이후 하이퍼파라미터에 영향을 미치는 가우시안 프로세스 모델을 조정합니다 또한 이를 조기 중지 알고리즘인 Asynchronous Hyperband와 결합하여 성과가 좋지 않은 시행을 조기에 중지하고 리소스 낭비를 방지합니다.

이 실험에서는 또한, weight_decay 및 warmup_steps를 검색하여 검색 영역을 확장합니다:
{
"per_gpu_batch_size": (16, 64),
"weight_decay": (0, 0.3),
"learning_rate": (1e-5, 5e-5),
"warmup_steps": (0, 500),
"num_epochs": (2, 5)
}
초기 랜덤 검색에 사용된 15번을 포함, 총 60번의 시행을 실행합니다.
이제 결과를 살펴보겠습니다.



개체군 기반 학습

개체군 기반 학습은 단계별 하이퍼파라미터 검색을 이용하지만, 새로운 하이퍼파라미터 구성해 학습을 다시 시작할 필요는 없습니다. 성능이 좋지 않은 시행을 폐기하는 대신, 네트워크 가중치와 하이퍼파라미터를 복사하여 성능이 좋은 실행을 활용한 다음, 학습을 계속하면서 새로운 하이퍼파라미터 구성을 탐색합니다.

일반 용어로 풀어본 알고리즘의 기본 개념:
  • 주어진 시간 단계(또는 반복)인 T 동안 일부 샘플에 대해 하이퍼파라미터 최적화 프로세스를 실행합니다.
  • 매번 T 반복 후에는 실행을 비교하여, 성능이 좋은 실행의 가중치를 성능이 나쁜 실행에 복사하고 해당 하이퍼파라미터 값을 성능이 좋은 실행 값에 가깝게 변경합니다.
  • 성능이 가장 나쁜 실행은 종료합니다. 이 알고리즘의 아이디어는 단순해 보이지만, 이를 처음부터 구축하는 데에는 복잡한 최적화 수식이 많이 필요합니다. Tune은 확장 가능하고 사용하기 쉬운 SOTA PBT 알고리즘을 구현할 수 있게 해줍니다
사용할 검색 영역은 다음과 같습니다:
{
"per_gpu_batch_size": [16, 32, 64],
"weight_decay": (0, 0.3),
"learning_rate": (1e-5, 5e-5),
"num_epochs": [2, 3, 4, 5]
}
나쁜 시행을 중지하는 대신 좋은 시행에서 복사하기 때문에, 8번의 시행만 실행하는데 이는 베이지안 최적화보다 훨씬 적습니다.
결과를 살펴보겠습니다.









최고의 전략: Hugging Face 모델의 개체군 기반 학습

여기서 중요한 점은 개체군 기반 학습이 Hugging Face 트랜스포머 모델의 하이퍼파라미터 최적화에 가장 효과적인 접근 방식이라는 것입니다. 그러나 NLP 모델의 하이퍼파라미터 튜닝에 대해 보다 폭넓은 관심을 불러올 몇 가지 중요한 발견도 있었습니다:
  • 베이지안 최적화로 국소 최저치를 방지합니다: 베이지안 최적화 방법을 사용할 때는 "랜덤 추측"의 조기 집합을 제공하는 것이 필수적입니다. 선험적으로 볼 때, 이는 베이지안 최적화가 시작되기 전에 더 많은 정보를 제공하는데, 그렇게 하지 않으면 최적화 프로그램은 적은 수의 표본에 근시안적이고 과대 적합이 될 수 있습니다.
  • 반복 시간을 줄이는 것이 매우 중요합니다: 항상 머신의 컴퓨팅 리소스를 모두 활용하도록 하십시오. 병렬로 실행할 수 있는 것은 무엇이든 병렬로 실행해야 합니다.
  • PBT에 대한 섭동/변형 간격을 조정합니다: PBT에서 중요한 고려 사항은 섭동 간격, 또는 하이퍼파라미터를 이용하고 탐색하려는 빈도입니다. 위의 실험에서는 에포크가 끝날 때마다 변이가 수행되었습니다. 그러나 이를 너무 자주 수행하면, 일부 배치(batch) 단계에 대해서만 학습한 모델의 경우, 성능에 문제가 생기므로 역효과를 낳습니다.
  • 랜덤 시드 또한 정확도 결과에 영향을 미칩니다. 위의 하이퍼 파라미터를 조정하는 작업 외에도, 최적의 모델을 찾기 위해 다양한 랜덤 시드를 포괄적으로 고려할 가치가 있습니다. 여기에는 2단계 접근 방식이 가장 효과적입니다: 먼저 조기 중지 알고리즘을 사용하여 다양한 시드에 대해 학습한 다음, 가장 좋은 수행 능력을 보이는 시드만을 선택하여 개체군 기반 학습으로 다른 하이퍼 파라미터를 조정합니다.

맺음말

일련의 실험에서 주목해야 할 사항은 다음과 같습니다:
  • 모든 실험은 Tune을 사용하여 8개의 GPU에 걸쳐 병렬화되었습니다.
  • 일련의 실험은 코드를 변경하지 않고도 확장하거나 축소할 수 있습니다.
  • 모든 중요 메트릭, 추론, 심지어 본 보고서까지 한 곳에서 확인할 수 있으며 쉽게 공유할 수 있습니다.
  • 이러한 추론은 적절한 검색 방법을 사용하여 절약할 수 있는 리소스를 정확하게 수치화하는 데 사용될 수 있습니다.
  • 이러한 전반적인 구조는 팀 간의 생산성 향상으로 이어집니다
Iterate on AI agents and models faster. Try Weights & Biases today.