원본 트레이닝 스크립트
val_acc)를 최대화하는 하이퍼파라미터를 찾는 것입니다.
Python 스크립트에서는 train_one_epoch와 evaluate_one_epoch라는 두 개의 함수를 정의합니다. train_one_epoch 함수는 한 에포크 동안의 트레이닝을 시뮬레이션하고, 트레이닝 정확도와 손실을 반환합니다. evaluate_one_epoch 함수는 검증 데이터 세트에서 모델을 평가하는 과정을 시뮬레이션하고, 검증 정확도와 손실을 반환합니다.
학습률(lr), batch size(batch_size), 에포크 수(epochs)와 같은 하이퍼파라미터 값을 포함하는 설정 딕셔너리(config)를 정의합니다. 설정 딕셔너리의 값은 트레이닝 과정을 제어합니다.
다음으로 일반적인 트레이닝 루프를 모방하는 main 함수를 정의합니다. 각 에포크마다 트레이닝 및 검증 데이터 세트에서 정확도와 손실을 계산합니다.
이 코드는 모의 트레이닝 스크립트입니다. 실제로 모델을 트레이닝하지는 않으며, 무작위 정확도와 손실 값을 생성해 트레이닝 과정을 시뮬레이션합니다. 이 코드의 목적은 트레이닝 스크립트에 W&B를 통합하는 방법을 보여주는 것입니다.
val_acc)를 최대화하는 최적의 하이퍼파라미터를 찾는 데 W&B를 사용합니다.
트레이닝 스크립트에 W&B 추가
- CLI
- Python 스크립트나 노트북
sweep 설정이 포함된 YAML 설정 파일을 만드세요. 이
설정 파일에는 sweep에서 탐색할 하이퍼파라미터가 들어 있습니다. 다음
예시에서는 배치 크기(W&B Sweep 설정을 만드는 방법에 대한 자세한 내용은 Sweep 설정 정의를 참조하세요.YAML 파일의 CLI에서 sweep
agent가 시도할 최대 run 수를 설정합니다.
이는 선택 사항입니다. 이 예제에서는 최대
수를 5로 설정합니다.다음으로, sweep ID가 반환됩니다. sweep를 초기화하는 방법에 대한 자세한 내용은
Initialize sweeps를 참조하세요.sweep 작업을 시작하려면 sweep ID를 복사한 다음 아래 코드 스니펫의 자세한 내용은 sweep 작업 시작하기를 참조하세요.
batch_size), 에포크(epochs), 그리고
학습률(lr) 하이퍼파라미터가 각 sweep 실행 중에 변경됩니다.program 키에 Python 스크립트 이름을
지정해야 합니다.다음으로, 코드 예제에 다음 내용을 추가합니다:- W&B Python SDK(
wandb)와 PyYAML(yaml)을 임포트합니다. PyYAML은 YAML 설정 파일을 읽는 데 사용됩니다. - 설정 파일을 읽어옵니다.
wandb.init()을 사용해 데이터를 동기화하고 로그하기 위한 백그라운드 프로세스를 W&B Run으로 시작합니다. 설정 객체를config파라미터에 전달합니다.- 하드코딩된 값을 사용하는 대신
wandb.Run.config에서 하이퍼파라미터 값을 정의합니다. wandb.Run.log()를 사용해 최적화할 메트릭을 로그합니다. 설정에 정의된 메트릭을 반드시 로그해야 합니다. 설정 딕셔너리(이 예제에서는sweep_configuration)에서val_acc값을 최대화하도록 sweep을 정의합니다.
wandb sweep 명령을 사용해 sweep를 초기화합니다. YAML 파일 이름을 지정합니다. 선택적으로 프로젝트 플래그(--project)에 사용할 프로젝트 이름을 지정합니다:sweepID를 바꿔
wandb agent
명령어를 사용하세요:sweep에서 W&B에 메트릭 로깅하기sweep 설정과 다음은 메트릭을 W&B에 로깅하는 올바르지 않은 예입니다. sweep 설정에서 최적화 대상인 메트릭은
wandb.Run.log()에서 모두 정의한, 그리고 최적화 대상으로 지정한 메트릭을 반드시 로깅해야 합니다. 예를 들어 sweep 설정에서 최적화할 메트릭을 val_acc로 정의했다면, val_acc도 W&B에 로깅해야 합니다. 메트릭을 로깅하지 않으면 W&B는 무엇을 최적화해야 하는지 알 수 없습니다.val_acc이지만, 코드에서는 validation 키 아래의 중첩된 딕셔너리 안에 val_acc를 로깅하고 있습니다. 메트릭은 중첩된 딕셔너리 안이 아니라 직접 로깅해야 합니다.