W&B Python SDK를 사용하여 머신 러닝 실험을 추적하세요. 그런 다음 대화형 대시보드에서 결과를 검토하거나, W&B Public API를 사용하여 프로그램적으로 액세스할 수 있도록 데이터를 Python으로 내보낼 수 있습니다.
이 가이드는 W&B 구성 요소를 사용하여 W&B Experiment를 생성하는 방법을 설명합니다.
다음 네 단계로 W&B 실험을 생성합니다:
- W&B 실행 초기화
- 하이퍼파라미터 딕셔너리 캡처
- 훈련 루프에서 메트릭 로깅
- W&B에 아티팩트 로깅
wandb.init()를 사용해 W&B 실행을 생성합니다.
다음 코드 스니펫은 “cat-classification”이라는 이름의 W&B 프로젝트에서 “My first experiment”라는 설명을 가진 실행을 생성해 이 실행을 쉽게 식별할 수 있도록 합니다. 또한 이 실행이 향후 논문 출판을 위한 베이스라인 실험임을 상기할 수 있도록 태그 “baseline”과 “paper1”를 추가합니다.
import wandb
with wandb.init(
project="cat-classification",
notes="My first experiment",
tags=["baseline", "paper1"],
) as run:
...
wandb.init()은 실행 객체를 반환합니다.
참고: wandb.init()을 호출할 때 해당 프로젝트가 이미 존재하면, 실행은 기존 프로젝트에 추가됩니다. 예를 들어, 이미 “cat-classification”이라는 이름의 프로젝트가 있다면, 그 프로젝트는 그대로 유지되고 삭제되지 않습니다. 대신 새 실행이 해당 프로젝트에 추가됩니다.
학습률이나 모델 유형과 같은 하이퍼파라미터 딕셔너리를 저장하세요. config에 저장한 모델 설정은 이후에 결과를 정리하고 조회하는 데 유용합니다.
with wandb.init(
...,
config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
...
실험 설정 방법에 대한 자세한 내용은 실험 구성을 참고하세요.
각 훈련 단계에서 정확도, 손실 등의 지표를 기록하려면 run.log()를 호출합니다.
model, dataloader = get_model(), get_data()
for epoch in range(run.config.epochs):
for batch in dataloader:
loss, accuracy = model.training_step()
run.log({"accuracy": accuracy, "loss": loss})
W&B에 로그할 수 있는 다양한 데이터 유형에 대한 자세한 내용은 실험 중 데이터 로깅 문서를 참고하세요.
원한다면 W&B 아티팩트를 로깅하세요. 아티팩트를 사용하면 데이터셋과 모델을 손쉽게 버전 관리할 수 있습니다.
# 파일이나 디렉토리를 저장할 수 있습니다. 이 예제에서는 모델에
# ONNX 파일을 출력하는 save() 메서드가 있다고 가정합니다.
model.save("path_to_model.onnx")
run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
아티팩트에 대해 자세히 알아보거나 Registry에서 모델 버전 관리에 대해 알아보세요.
앞에서 살펴본 코드 스니펫을 모두 포함한 전체 스크립트는 아래와 같습니다:
import wandb
with wandb.init(
project="cat-classification",
notes="",
tags=["baseline", "paper1"],
# 실행의 하이퍼파라미터를 기록합니다.
config={"epochs": 100, "learning_rate": 0.001, "batch_size": 128},
) as run:
# 모델과 데이터를 설정합니다.
model, dataloader = get_model(), get_data()
# 모델 성능을 시각화하기 위해 메트릭을 로깅하면서 학습을 실행합니다.
for epoch in range(run.config["epochs"]):
for batch in dataloader:
loss, accuracy = model.training_step()
run.log({"accuracy": accuracy, "loss": loss})
# 학습된 모델을 아티팩트로 업로드합니다.
model.save("path_to_model.onnx")
run.log_artifact("path_to_model.onnx", name="trained-model", type="model")
W&B Dashboard를 중앙 허브로 사용하여 머신러닝 모델의 결과를 구성하고 시각화하세요. 몇 번의 클릭만으로 평행좌표 플롯, 파라미터 중요도 분석, 그리고 기타 차트 유형과 같은 풍부한 대화형 차트를 생성할 수 있습니다.
실험과 개별 실행을 확인하는 방법에 대한 자세한 내용은 실험 결과 시각화를 참고하세요.
다음은 실험을 생성할 때 고려할 만한 권장 지침입니다:
- 실행을 종료하세요:
with 문에서 wandb.init()을 사용하면 코드가 완료되거나 예외가 발생할 때 실행이 자동으로 종료된 것으로 표시됩니다.
-
Jupyter 노트북에서는 Run 객체를 직접 관리하는 것이 더 편리할 수 있습니다. 이 경우 Run 객체에서
finish()를 명시적으로 호출해 실행을 완료된 상태로 표시할 수 있습니다:
# 노트북 셀에서:
run = wandb.init()
# 다른 셀에서:
run.finish()
- Config: 하이퍼파라미터, 아키텍처, 데이터셋 및 모델 재현에 사용하고 싶은 모든 정보를 추적하세요. 이 값들은 열로 표시되며, Config 열을 사용해 앱에서 실행을 동적으로 그룹화하고, 정렬하고, 필터링할 수 있습니다.
- Project: 프로젝트는 함께 비교할 수 있는 일련의 실험입니다. 각 프로젝트에는 전용 대시보드 페이지가 있으며, 서로 다른 실행 그룹을 손쉽게 켜고 끄면서 다양한 모델 버전을 비교할 수 있습니다.
- Notes: 스크립트에서 바로 간단한 커밋 메시지를 설정하세요. 실행의 개요(Overview) 섹션에서 노트를 편집하고 확인할 수 있습니다(W&B App).
- Tags: 기준선 실행과 즐겨찾는 실행을 식별하세요. 태그를 사용해 실행을 필터링할 수 있습니다. 프로젝트 대시보드의 개요(Overview) 섹션에서 나중에 태그를 편집할 수도 있습니다(W&B App).
- 실험 비교를 위한 여러 실행 세트 생성: 실험을 비교할 때는 여러 실행 세트를 생성해 메트릭 비교를 쉽게 하세요. 동일한 차트 또는 차트 그룹에서 실행 세트를 켜거나 끌 수 있습니다.
다음 코드 스니펫은 위에 나열한 모범 사례를 사용해 W&B 실험을 정의하는 방법을 보여줍니다:
import wandb
config = {
"learning_rate": 0.01,
"momentum": 0.2,
"architecture": "CNN",
"dataset_id": "cats-0192",
}
with wandb.init(
project="detect-cats",
notes="tweak baseline",
tags=["baseline", "paper1"],
config=config,
) as run:
...
W&B 실험을 정의할 때 사용 가능한 매개변수에 대한 자세한 내용은 API Reference Guide의 wandb.init() API 문서를 참조하세요.