몇 줄로 구현하는 한층 더 강력한 로깅

바로 실행해 볼 수 있는 코드부터 보고 싶다면, 이 Google Colab을 확인하세요.
시작하기: 실험 추적하기
가입하고 API 키 생성하기
더 간편하게 하려면 User Settings로 이동해 API 키를 생성하세요. API 키는 즉시 복사해 비밀번호 관리자와 같은 안전한 위치에 저장하세요.
- 오른쪽 상단의 사용자 프로필 아이콘을 클릭합니다.
- User Settings를 선택한 다음 API Keys 섹션이 나올 때까지 아래로 스크롤합니다.
wandb 라이브러리 설치 및 로그인
wandb 라이브러리를 설치하고 로그인하려면 다음 단계를 따르세요.
- 명령줄
- Python
- Python notebook
-
WANDB_API_KEY환경 변수를 API 키로 설정합니다. -
wandb라이브러리를 설치하고 로그인합니다.
프로젝트 이름 지정하기
WANDB_PROJECT 환경 변수를 프로젝트 이름으로 설정하면 됩니다. WandbCallback은 이 프로젝트 이름 환경 변수를 읽어 run을 설정할 때 사용합니다.
- 명령줄
- Python
- Python notebook
Trainer를 초기화하기 전에 프로젝트 이름을 설정해야 합니다.huggingface입니다.
트레이닝 run을 W&B에 로깅하기
Trainer의 트레이닝 인수를 정의할 때 가장 중요한 단계는 W&B 로깅을 활성화할 수 있도록 report_to를 "wandb"로 설정하는 것입니다.
TrainingArguments의 logging_steps 인수는 트레이닝 중 트레이닝 메트릭이 W&B에 얼마나 자주 전송되는지를 제어합니다. run_name 인수를 사용해 W&B에서 트레이닝 run의 이름을 지정할 수도 있습니다.
이제 끝입니다. 이제 모델이 트레이닝되는 동안 loss, 평가 메트릭, 모델 토폴로지, 그라디언트를 W&B에 로깅합니다.
- 명령줄
- Python
TensorFlow를 사용하시나요? PyTorch
Trainer를 TensorFlow TFTrainer로 바꾸기만 하면 됩니다.모델 체크포인트 저장 사용 설정
WANDB_LOG_MODEL 환경 변수를 다음 값 중 하나 로 설정하세요.
checkpoint:TrainingArguments의args.save_steps마다 체크포인트를 업로드합니다.end:load_best_model_at_end도 설정된 경우 트레이닝이 끝날 때 모델을 업로드합니다.false: 모델을 업로드하지 않습니다.
- 명령줄
- Python
- Python 노트북
Trainer는 모델을 W&B 프로젝트에 업로드합니다. 로그한 모델 체크포인트는 Artifacts UI에서 확인할 수 있으며, 전체 모델 리니지도 포함됩니다(UI에서 모델 체크포인트 예시는 여기에서 확인할 수 있습니다).
기본적으로
WANDB_LOG_MODEL이 end로 설정되면 모델은 W&B Artifacts에 model-{run_id}로 저장되고, WANDB_LOG_MODEL이 checkpoint로 설정되면 checkpoint-{run_id}로 저장됩니다.
하지만 TrainingArguments에 run_name을 전달하면 모델은 model-{run_name} 또는 checkpoint-{run_name}로 저장됩니다.W&B Registry
트레이닝 중 평가 출력 시각화

W&B run 종료하기(노트북 전용)
run.finish()를 호출해 트레이닝이 끝났음을 알려야 합니다.
결과 시각화하기
고급 특성과 자주 묻는 질문
가장 성능이 좋은 모델은 어떻게 저장하나요?
Trainer에 load_best_model_at_end=True가 포함된 TrainingArguments를 전달하면, W&B가 성능이 가장 좋은 모델 checkpoint를 Artifacts에 저장합니다.
모델 checkpoint를 Artifacts로 저장하면 레지스트리로 승격할 수 있습니다. 레지스트리에서는 다음과 같은 작업을 할 수 있습니다:
- ML 작업별로 가장 성능이 좋은 모델 버전을 구성합니다.
- 모델을 중앙에서 관리하고 팀과 공유합니다.
- 모델을 프로덕션에 맞게 스테이징하거나 추가 평가을 위해 북마크합니다.
- 다운스트림 CI/CD 프로세스를 트리거합니다.
저장한 모델은 어떻게 불러오나요?
WANDB_LOG_MODEL을 사용해 모델을 W&B Artifacts에 저장했다면, 추가 트레이닝을 하거나 Inference를 실행하기 위해 모델 가중치를 다운로드할 수 있습니다. 그런 다음 이전에 사용한 것과 동일한 Hugging Face 아키텍처에 다시 로드하면 됩니다.
체크포인트에서 트레이닝을 재개하려면 어떻게 하나요?
WANDB_LOG_MODEL='checkpoint'를 설정한 경우, TrainingArguments에서 model_dir를 model_name_or_path 인수로 사용하고 Trainer에 resume_from_checkpoint=True를 전달해 트레이닝을 재개할 수도 있습니다.
트레이닝 중 평가 샘플을 로깅하고 확인하려면 어떻게 해야 하나요
Trainer를 통해 W&B에 로깅하는 작업은 Transformers 라이브러리의 WandbCallback에서 처리합니다. Hugging Face 로깅을 사용자 지정해야 하는 경우, WandbCallback을 서브클래싱하고 Trainer 클래스의 추가 기능을 활용하는 기능을 덧붙여 이 콜백을 수정할 수 있습니다.
아래에는 이 새 콜백을 HF Trainer에 추가하는 일반적인 패턴이 나와 있으며, 더 아래에는 평가 출력을 W&B Table에 로깅하는 전체 코드 예제가 나와 있습니다:
트레이닝 중 평가 샘플 보기
WandbCallback을 사용자 지정하는 방법을 보여줍니다. eval_steps마다 Trainer 콜백의 on_evaluate 방법을 사용합니다.
여기서는 tokenizer를 사용해 모델 출력의 예측과 레이블을 디코딩하는 decode_predictions 함수를 작성합니다.
그런 다음 예측과 레이블로 pandas 데이터프레임을 만들고, 데이터프레임에 epoch column을 추가합니다.
마지막으로 데이터프레임으로 wandb.Table을 생성하고 이를 wandb에 로깅합니다.
또한 freq 에포크마다 예측을 로깅하여 로깅 빈도를 제어할 수 있습니다.
참고: 일반 WandbCallback과 달리, 이 맞춤형 콜백은 Trainer 초기화 중이 아니라 Trainer가 인스턴스화된 후에 trainer에 추가해야 합니다.
이는 초기화 시 Trainer 인스턴스가 콜백에 전달되기 때문입니다.
추가로 사용할 수 있는 W&B 설정은 무엇인가요?
Trainer에서 무엇을 로깅할지 더 세부적으로 설정할 수 있습니다. W&B 환경 변수의 전체 목록은 여기에서 확인할 수 있습니다.
- 명령줄
- 노트북
wandb.init()를 어떻게 사용자 지정하나요?
Trainer가 사용하는 WandbCallback은 Trainer가 초기화되면 내부적으로 wandb.init()를 호출합니다. 또는 Trainer를 초기화하기 전에 wandb.init()를 호출해 run을 수동으로 설정할 수도 있습니다. 이렇게 하면 W&B run 설정을 완전히 제어할 수 있습니다.
init에 전달할 수 있는 항목의 예시는 아래와 같습니다. wandb.init()의 자세한 내용은 wandb.init() 레퍼런스를 참조하세요.