메인 콘텐츠로 건너뛰기
W&B Keras callback을 사용해 실험을 추적하고, 모델 체크포인트를 기록하고, 트레이닝 중 모델 예측을 시각화하세요. 이 인테그레이션을 사용하면 트레이닝 루프를 다시 작성하지 않고도 Keras 트레이닝 워크플로에 실험 추적과 모델 버전 관리를 추가할 수 있습니다. Keras callback은 Python SDK 버전 0.13.4 이상에서 wandb.integration.keras 모듈로 사용할 수 있습니다. W&B Keras 인테그레이션은 다음 callback을 제공합니다:
  • WandbMetricsLogger: 실험 추적에 이 callback을 사용하세요. 트레이닝 및 검증 메트릭과 시스템 메트릭을 함께 W&B에 기록합니다.
  • WandbModelCheckpoint: 모델 체크포인트를 W&B Artifacts에 기록하려면 이 callback을 사용하세요.
  • WandbEvalCallback: 이 기본 callback은 대화형 시각화를 위해 모델 예측을 W&B Tables에 기록합니다.

Keras 인테그레이션 설치 및 임포트하기

최신 버전의 W&B를 설치합니다.
Keras 인테그레이션을 사용하려면 wandb.integration.keras에서 필요한 클래스를 임포트하세요.
다음 섹션에서는 각 callback을 코드 예제와 함께 자세히 설명합니다.

WandbMetricsLogger로 실험 추적하기

wandb.integration.keras.WandbMetricsLogger()on_epoch_endon_batch_end와 같은 callback 메서드가 인수로 받는 Keras의 logs 딕셔너리를 로깅합니다. 다음 예시는 Keras 워크플로에서 WandbMetricsLogger()를 사용하는 방법을 보여줍니다. 먼저 원하는 옵티마이저, 손실 함수, 메트릭으로 모델을 컴파일합니다. 그런 다음 wandb.init()을 사용해 W&B run을 초기화합니다. 마지막으로 WandbMetricsLogger() callback을 model.fit()에 전달합니다.
이전 예제는 각 에포크가 끝날 때마다 loss, accuracy, top@5_accuracy와 같은 트레이닝 및 검증 메트릭을 W&B에 로깅합니다.

WandbMetricsLogger 레퍼런스

WandbModelCheckpoint를 사용해 모델 체크포인트 저장하기

WandbModelCheckpoint callback을 사용하면 Keras 모델(SavedModel 형식) 또는 모델 가중치를 주기적으로 저장하고, 모델 버전 관리를 위해 이를 wandb.Artifact로 W&B에 업로드합니다. 이 callback은 tf.keras.callbacks.ModelCheckpoint()를 서브클래싱하므로 체크포인트 로직은 부모 callback이 처리합니다. 이 callback은 다음을 저장합니다:
  • monitor를 기준으로 가장 좋은 성능을 달성한 모델
  • 성능과 관계없이 매 에포크가 끝날 때의 모델
  • 각 에포크가 끝날 때 또는 고정된 수의 트레이닝 배치 후의 모델
  • 모델 가중치만 또는 전체 모델
  • SavedModel 형식 또는 .h5 형식의 모델
이 callback은 WandbMetricsLogger()와 함께 사용하세요.

WandbModelCheckpoint 레퍼런스

N 에포크마다 체크포인트 log

기본값(save_freq="epoch")에서는 콜백이 각 에포크가 끝날 때마다 체크포인트를 생성하고 이를 아티팩트로 upload합니다. 특정 개수의 배치마다 체크포인트를 생성하려면 save_freq를 정수로 설정하세요. N 에포크마다 체크포인트를 생성하려면 train 데이터로더의 카디널리티를 계산해 save_freq에 전달하세요:

TPU 아키텍처에서 체크포인트를 효율적으로 기록하기

TPU에서 체크포인트를 저장하는 동안 UnimplementedError: File system scheme '[local]' not implemented 오류 메시지가 나타날 수 있습니다. 이는 모델 디렉터리(filepath)가 클라우드 저장소 버킷 경로(gs://bucket-name/...)를 사용해야 하고, 이 버킷에 TPU 서버가 접근할 수 있어야 하기 때문입니다. 반면 W&B는 체크포인트 저장에 로컬 경로를 사용하고, 이후 W&B가 이를 아티팩트로 업로드합니다.

WandbEvalCallback을 사용해 모델 예측 시각화하기

WandbEvalCallback()는 주로 모델 예측용 Keras callback을 만들고, 부차적으로는 데이터셋 시각화에도 사용할 수 있는 추상 기반 클래스입니다. 이 추상 callback은 데이터셋과 태스크와 독립적입니다. 이를 사용하려면 이 기반 WandbEvalCallback() callback 클래스를 상속하고 add_ground_truthadd_model_prediction 방법을 구현하세요. WandbEvalCallback()는 다음을 위한 방법을 제공하는 유틸리티 클래스입니다.
  • 데이터 및 예측 wandb.Table() 인스턴스를 생성합니다.
  • 데이터와 예측 Tables를 wandb.Artifact()로 로깅합니다.
  • on_train_begin에서 데이터 테이블을 로깅합니다.
  • on_epoch_end에서 예측 테이블을 로깅합니다.
다음 예제에서는 이미지 분류 태스크에 WandbClfEvalCallback을 사용합니다. 이 예제 callback은 검증 데이터(data_table)를 W&B에 로깅하고, Inference를 수행한 다음, 매 에포크가 끝날 때마다 예측(pred_table)을 W&B에 로깅합니다.

WandbEvalCallback 레퍼런스

메모리 사용량 세부 정보

W&B는 on_train_begin 메서드를 호출할 때 data_table을 기록합니다. W&B가 이를 W&B Artifact로 업로드한 후에는 이 테이블에 대한 레퍼런스를 얻게 되며, data_table_ref 클래스 변수를 사용해 액세스할 수 있습니다. data_table_refself.data_table_ref[idx][n]처럼 인덱싱할 수 있는 2차원 리스트이며, 여기서 idx는 행 번호이고 n은 열 번호입니다. 다음 예시에서 사용법을 확인하세요.

callback 사용자 지정하기

데이터와 예측이 로깅되는 시점을 더 세밀하게 제어하려면 기본 callback 메서드를 재정의할 수 있습니다. 더 세밀하게 제어하려면 on_train_begin 또는 on_epoch_end 메서드를 재정의할 수 있습니다. N개 배치 후에 샘플을 로깅하려면 on_train_batch_end 메서드를 구현하면 됩니다.
WandbEvalCallback을 상속해 모델 예측 시각화를 위한 callback을 구현하는 중이며, 명확히 하거나 수정이 필요한 사항이 있다면 issue를 여세요.

레거시 WandbCallback

WandbCallback는 레거시 올인원 callback입니다. 새 프로젝트의 경우 이전 섹션에서 설명한 전용 callback(WandbMetricsLogger, WandbModelCheckpoint, WandbEvalCallback)을 사용하세요. W&B 라이브러리의 WandbCallback() 클래스를 사용하면 model.fit()에서 추적하는 모든 메트릭과 손실 값을 저장할 수 있습니다.
짧은 비디오 1분 안에 Keras와 W&B 시작하기를 시청해 보세요. 더 자세한 내용은 W&B를 Keras와 통합하기 비디오를 시청하세요. Colab Jupyter Notebook도 살펴볼 수 있습니다. 추가 샘플 스크립트는 W&B 예제 repo를 참조하세요. 여기에는 Fashion MNIST 예제와 이 예제가 생성하는 W&B 대시보드가 포함되어 있습니다. WandbCallback 클래스는 로깅 설정 옵션을 지원합니다. 예를 들어 모니터링할 메트릭 지정, 가중치와 그라디언트 추적, training_datavalidation_data에 대한 예측 로깅 등이 있습니다. 자세한 내용은 keras.WandbCallback 레퍼런스 문서를 참조하세요. WandbCallback:
  • Keras가 수집한 모든 메트릭의 이력 데이터를 로깅합니다. 여기에는 loss와 keras_model.compile()에 전달된 모든 항목이 포함됩니다.
  • monitormode 속성으로 정의된 “최적” 트레이닝 step에 연결된 run의 summary 메트릭을 설정합니다. 기본값은 val_loss가 가장 작은 에포크입니다. 기본적으로 WandbCallback는 가장 좋은 epoch에 해당하는 모델을 저장합니다.
  • 선택적으로 그라디언트 및 파라미터 히스토그램을 로깅합니다.
  • 선택적으로 wandb에서 시각화할 수 있도록 트레이닝 및 검증 데이터를 저장합니다.

WandbCallback 레퍼런스

자주 묻는 질문

wandb에서 Keras 멀티프로세싱 사용하기

use_multiprocessing=True로 설정하면 다음 오류가 발생할 수 있습니다:
이를 우회하려면 다음과 같이 하세요:
  1. Sequence 클래스 생성 시 wandb.init(group='...')를 추가합니다.
  2. main에서 if __name__ == "__main__":를 사용하고 있는지 확인한 다음, 나머지 스크립트 로직을 그 안에 넣으세요.