메인 콘텐츠로 건너뛰기
Hugging Face Accelerate는 동일한 PyTorch 코드를 어떤 분산 설정에서든 실행할 수 있게 해 주는 라이브러리로, 대규모 모델 트레이닝과 Inference를 간소화합니다. Accelerate에는 W&B Tracker가 포함되어 있으며, 아래에서 사용 방법을 설명합니다. Hugging Face의 Accelerate Trackers에서 더 자세한 내용을 확인할 수도 있습니다.

Accelerate로 로깅 시작하기

Accelerate와 W&B를 시작하려면 아래 의사 코드를 따르면 됩니다:
from accelerate import Accelerator

# wandb로 로그를 기록하도록 Accelerator 객체에 지시합니다
accelerator = Accelerator(log_with="wandb")

# wandb run을 초기화하고, wandb 매개변수와 설정 정보를 전달합니다
accelerator.init_trackers(
    project_name="my_project",
    config={"dropout": 0.1, "learning_rate": 1e-2}
    init_kwargs={"wandb": {"entity": "my-wandb-team"}}
    )

...

# accelerator.log()를 호출하여 wandb에 기록합니다. step은 선택 사항입니다
accelerator.log({"train_loss": 1.12, "valid_loss": 0.8}, step=global_step)


# wandb tracker가 올바르게 종료되도록 합니다
accelerator.end_training()
좀 더 자세히 설명하면, 다음이 필요합니다:
  1. Accelerator 클래스를 초기화할 때 log_with="wandb"를 전달합니다
  2. init_trackers를 호출하고 다음을 전달합니다:
  • project_name을 통해 프로젝트 이름
  • wandb.init()에 전달하려는 모든 매개변수를 init_kwargs의 중첩 dict를 통해 전달
  • wandb run에 기록하려는 기타 모든 실험 설정 정보를 config를 통해 전달
  1. Weights & Biases에 기록하려면 wandb.Run.log() 방법을 사용합니다. step 인수는 선택 사항입니다
  2. 트레이닝이 끝나면 .end_training()을 호출합니다

W&B tracker에 액세스하기

W&B tracker에 액세스하려면 Accelerator.get_tracker() 방법을 사용하세요. tracker의 .name 속성에 해당하는 문자열을 전달하면 main 프로세스에서 해당 tracker를 반환합니다.
wandb_tracker = accelerator.get_tracker("wandb")

이후에는 wandb의 run 객체를 평소와 같이 사용할 수 있습니다:
wandb_tracker.log_artifact(some_artifact_to_log)
Accelerate에 내장된 tracker는 올바른 프로세스에서 자동으로 실행되므로, tracker가 메인 프로세스에서만 실행되도록 되어 있다면 별도 처리 없이도 자동으로 그렇게 동작합니다.Accelerate의 래핑을 완전히 제거하려면 다음과 같이 같은 결과를 얻을 수 있습니다.
wandb_tracker = accelerator.get_tracker("wandb", unwrap=True)
with accelerator.on_main_process:
    wandb_tracker.log_artifact(some_artifact_to_log)

Accelerate 아티클

아래 Accelerate 아티클도 확인해 보세요.