메인 콘텐츠로 건너뛰기
Hugging Face Accelerate는 동일한 PyTorch 코드를 어떤 분산 설정에서도 실행할 수 있게 해, 대규모 모델 트레이닝과 추론을 단순화해 주는 라이브러리입니다. Accelerate에는 W&B Tracker가 포함되어 있으며, 아래에서 그 사용 방법을 보여 드립니다. 또한 Hugging Face의 Accelerate Tracker에 대해 더 자세히 살펴볼 수도 있습니다.

Accelerate로 로깅 시작하기

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

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

# wandb run을 초기화하고, wandb 파라미터와 config 정보를 전달
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 트래커가 올바르게 종료되었는지 확인
accelerator.end_training()
조금 더 구체적으로 설명하면, 다음을 수행해야 합니다:
  1. Accelerator 클래스를 초기화할 때 log_with="wandb"를 전달합니다.
  2. init_trackers 메서드를 호출하고 다음을 인자로 전달합니다:
  • project_name을 통해 프로젝트 이름
  • 중첩된 dict를 init_kwargs에 전달하여 wandb.init()에 넘기려는 모든 파라미터
  • config를 통해 wandb run에 로깅하려는 기타 실험 설정 정보
  1. .log 메서드를 사용해 Weights & Biases에 로그를 남깁니다. 이때 step 인수는 선택 사항입니다.
  2. 트레이닝이 끝나면 .end_training을 호출합니다.

W&B 트래커에 액세스하기

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

그 다음에는 wandb의 run 객체를 평소처럼 다룰 수 있습니다:
wandb_tracker.log_artifact(some_artifact_to_log)
Accelerate에 내장된 트래커는 자동으로 올바른 프로세스에서 실행되므로, 어떤 트래커가 메인 프로세스에서만 실행되도록 되어 있다면 자동으로 그렇게 처리됩니다.Accelerate의 래핑을 완전히 제거하고 싶다면, 아래와 같이 동일한 결과를 얻을 수 있습니다:
wandb_tracker = accelerator.get_tracker("wandb", unwrap=True)
with accelerator.on_main_process:
    wandb_tracker.log_artifact(some_artifact_to_log)

Accelerate 아티클

아래는 참고할 만한 Accelerate 아티클입니다.