Hugging Face 트랜스포머
Hugging Face 트랜스포머 라이브러리는 BERT와 같은 최첨단 NLP 모델과 혼합 정밀도 및 그레이디언트 체크포인팅과 같은 트레이닝 기법을 쉽게 사용할 수 있게 합니다. W&B 인테그레이션은 사용의 용이성을 손상시키지 않으면서 대화형 중앙 대시보드에 풍부하고 유연한 실험 추적 및 모델 버전 관리를 추가합니다.
🤗 몇 줄로 다음 단계의 로깅
os.environ["WANDB_PROJECT"] = "<my-amazing-project>" # W&B 프로젝트 이름 지정
os.environ["WANDB_LOG_MODEL"] = "checkpoint" # 모든 모델 체크포인트 로깅
from transformers import TrainingArguments, Trainer
args = TrainingArguments(..., report_to="wandb") # W&B 로깅 켜기
trainer = Trainer(..., args=args)
작동 코드로 바로 뛰어들고 싶다면, 이 Google Colab을 확인하세요.
시작하기: 실험 추적
1) 가입하고, wandb
라이브러리를 설치하고, 로그인하기
a) 무료 계정에 가입
b) Pip으로 wandb
라이브러리 설치
c) 트레이닝 스크립트에서 로그인하려면 www.wandb.ai에 로그인한 상태에서 [권한 부여 페이지](https://wandb.ai/authorize)에서 API 키를 찾아야 합니다.
Weights & Biases를 처음 사용한다면 퀵스타트를 확인해 보세요
- Python
- 커맨드라인
pip install wandb
wandb login
!pip install wandb
import wandb
wandb.login()
2) 프로젝트 이름 지정
프로젝트는 관련 실행에서 로그된 모든 차트, 데이터 및 모델이 저장되는 곳입니다. 프로젝트에 이름을 지정하면 작업을 조직하고 단일 프로젝트에 대한 모든 정보를 한 곳에 유지하는 데 도움이 됩니다.
실행을 프로젝트에 추가하려면 WANDB_PROJECT
환경 변수를 프로젝트 이름으로 설정하기만 하면 됩니다. WandbCallback
은 이 프로젝트 이름 환경 변수를 선택하여 실행을 설정할 때 사용합니다.
- Python
- 커맨드라인
- 노트북
WANDB_PROJECT=amazon_sentiment_analysis
%env WANDB_PROJECT=amazon_sentiment_analysis
import os
os.environ["WANDB_PROJECT"]="amazon_sentiment_analysis"
Trainer
를 초기화하기 전에 프로젝트 이름을 설정해야 합니다.
프로젝트 이름이 지정되지 않은 경우 프로젝트 이름은 기본적으로 "huggingface"로 설정됩니다.
3) 트레이닝 실행을 W&B에 로깅하기
이것이 가장 중요한 단계입니다: Trainer
트레이닝 인수를 정의할 때, 코드 내부나 커맨드라인에서, Weights & Biases로 로깅을 활성화하기 위해 report_to
를 "wandb"
로 설정해야 합니다.
TrainingArguments
의 logging_steps
인수는 트레이닝 중에 트레이닝 메트릭이 W&B에 얼마나 자주 푸시되는지 제어합니다. 또한 run_name
인수를 사용하여 W&B에서 트레이닝 실행에 이름을 지정할 수 있습니다.
그게 다입니다! 이제 모델은 로스, 평가 메트릭, 모델 아키텍처 및 그레이디언트를 트레이닝하는 동안 Weights & Biases에 로깅합니다.
- Python
- 커맨드라인
python run_glue.py \ # 파이썬 스크립트 실행
--report_to wandb \ # W&B로 로깅 활성화
--run_name bert-base-high-lr \ # W&B 실행 이름 (선택사항)
# 여기에 다른 커맨드라인 인수들
from transformers import TrainingArguments, Trainer
args = TrainingArguments(
# 여기에 다른 인수 및 키워드 인수들
report_to="wandb", # W&B로 로깅 활성화
run_name="bert-base-high-lr", # W&B 실행 이름 (선택사항)
logging_steps=1, # W&B에 얼마나 자주 로그를 남길지
)
trainer = Trainer(
# 여기에 다른 인수 및 키워드 인수들
args=args, # 트레이닝 인수들
)
trainer.train() # 트레이닝 시작 및 W&B에 로깅
TensorFlow를 사용하고 있나요? PyTorch Trainer
를 TensorFlow TFTrainer
로 바꾸기만 하면 됩니다.
4) 모델 체크포인팅 켜기
Weights & Biases의 아티팩트를 사용하면 모델 및 데이터셋 최대 100GB를 무료로 저장할 수 있으며, 그런 다음 Weights & Biases 모델 레지스트리를 사용하여 모델을 등록하여 프로덕션 환경에서 스테이징하거나 배포를 준비할 수 있습니다.
Hugging Face 모델 체크포인트를 아티팩트에 로깅하려면 WANDB_LOG_MODEL
환경 변수를 end
또는 checkpoint
또는 false
중 하나로 설정하면 됩니다:
checkpoint
: 체크포인트는TrainingArguments
에서args.save_steps
마다 업로드됩니다.end
: 모델은 트레이닝이 끝날 때 업로드됩니다.
WANDB_LOG_MODEL
과 load_best_model_at_end
를 함께 사용하여 트레이닝이 끝날 때 최고의 모델을 업로드하세요.
- Python
- 커맨드라인
- 노트북
import os
os.environ["WANDB_LOG_MODEL"] = "checkpoint"
WANDB_LOG_MODEL="checkpoint"
%env WANDB_LOG_MODEL="checkpoint"
이제부터 초기화하는 모든 Transformers Trainer
는 모델을 W&B 프로젝트에 업로드할 것입니다. 로그된 모델 체크포인트는 아티팩트 UI를 통해 볼 수 있으며, 전체 모델 계보를 포함합니다 (UI에서 모델 체크포인트 예제 여기에서 확인).
기본적으로 모델은 WANDB_LOG_MODEL
이 end
로 설정될 때 model-{run_id}
로, checkpoint
로 설정될 때 checkpoint-{run_id}
로 W&B 아티팩트에 저장됩니다.
하지만, TrainingArguments
에서 run_name
을 전달하면 모델은 model-{run_name}
또는 checkpoint-{run_name}
으로 저장됩니다.
W&B 모델 레지스트리
체크포인트를 아티팩트에 로깅하면 이를 Weights & Biases 모델 레지스트리를 사용하여 팀 전체에서 최고의 모델 체크포인트를 등록하고 중앙 집중화할 수 있습니다. 여기서 ML 작업별로 최고의 모델을 조직하고, 모델 수명주기를 관리하며, ML 수명주기 전반에 걸쳐 쉬운 추적 및 감사를 용이하게 하고, 웹훅이나 작업을 통해 하류 작업을 자동화할 수 있습니다.
모델 아티팩트를 모델 레지스트리에 연결하는 방법에 대해서는 모델 레지스트리 문서를 참조하세요.
5) 트레이닝 중 평가 출력 시각화
트레이닝이나 평가 중에 모델 출력을 시각화하는 것은 모델이 어떻게 트레이닝되고 있는지 진정으로 이해하는 데 종종 필수적입니다.
Transformers Trainer의 콜백 시스템을 사용하면 모델의 텍스트 생성 출력이나 W&B 테이블과 같은 다른 예측 등 W&B에 추가적으로 유용한 데이터를 로깅할 수 있습니다.
아래에 트레이닝 중 평가 출력을 W&B 테이블에 로깅하는 방법에 대한 전체 가이드를 보여주는 사용자 정의 로깅 섹션이 있습니다:
6) W&B 실행 마치기 (노트북만 해당)
트레이닝이 파이썬 스크립트에 포함되어 있는 경우, 스크립트가 끝나면 W&B 실행이 종료됩니다.
Jupyter나 Google Colab 노트북을 사용하는 경우 wandb.finish()
를 호출하여 트레이닝이 끝났다고 알려야 합니다.
trainer.train() # 트레이닝 및 W&B 로깅 시작
# 트레이닝 후 분석, 테스트, 기타 로깅된 코드
wandb.finish()
7) 결과 시각화
트레이닝 결과를 로깅했다면 W&B 대시보드에서 결과를 동적으로 탐색할 수 있습니다. 한 번에 수십 개의 실행을 쉽게 비교하고, 흥미로운 발견에 초점을 맞추며, 복잡한 데이터에서 통찰력을 이끌어내기 위해 유연하고 인터랙티브한 시각화를 사용할 수 있습니다.
고급 기능 및 FAQ
최고의 모델을 어떻게 저장하나요?
TrainingArguments
에 load_best_model_at_end=True
가 설정되어 있으면 W&B는 Artifacts에 최고 성능의 모델 체크포인트를 저장합니다.
ML 작업별로 팀 전체의 최고 모델 버전을 중앙 집중화하여 조직하고, 프로덕션을 위해 준비하며, 추가 평가를 위해 책갈피를 추가하거나 하류 모델 CI/CD 프로세스를 시작하려면 모델 체크포인트를 Artifacts에 저장하는 것이 좋습니다. Artifacts에 로그된 이 체크포인트는 그 후 모델 레지스트리로 승격될 수 있습니다.
저장된 모델 로드
WANDB_LOG_MODEL
으로 모델을 W&B Artifacts에 저장했다면, 추가 트레이닝을 위해 모델 가중치를 다운로드하거나 추론을 실행할 수 있습니다. 이전에 사용했던 것과 동일한 Hugging Face 아키텍처로 이 가중치를 다시 로드하기만 하면 됩니다.
# 새로운 실행 생성
with wandb.init(project="amazon_sentiment_analysis") as run:
# Artifact의 이름과 버전 전달
my_model_name = "model-bert-base-high-lr:latest"
my_model_artifact = run.use_artifact(my_model_name)
# 모델 가중치를 폴더에 다운로드하고 경로 반환
model_dir = my_model_artifact.download()
# 해당 폴더에서 Hugging Face 모델 로드
# 동일한 모델 클래스를 사용하여
model = AutoModelForSequenceClassification.from_pretrained(
model_dir, num_labels=num_labels
)
# 추가 트레이닝 수행 또는 추론 실행
체크포인트에서 트레이닝 재개
`WANDB_LOG_MODEL='checkpoint
주목할 만한 기사
아래는 여러분이 즐길만한 6개의 Transformers 및 W&B 관련 기사입니다.
Hugging Face 트랜스포머를 위한 하이퍼파라미터 최적화
허깅 트윗: 트윗을 생성하는 모델 트레이닝하기
Hugging Face BERT와 WB를 이용한 문장 분류
Hugging Face 모델 성능 추적을 위한 단계별 가이드
HuggingFace에서의 조기 종료 - 예시
사용자 정의 데이터셋에서 Hugging Face 트랜스포머 파인튜닝하는 방법
문제, 질문, 기능 요청
Hugging Face W&B 통합에 대한 모든 문제, 질문 또는 기능 요청은 Hugging Face 포럼의 이 스레드에 게시하거나 Hugging Face Transformers GitHub 리포지토리에서 이슈를 열어 자유롭게 문의하세요.