Hugging Face Accelerate
Accelerateは、同じPyTorchコードを任意の分散設定で実行できるようにするライブラリで、わずか4行のコードを追加するだけで、スケールされたトレーニングと推論を簡単、効率的かつ適応可能にします。
AccelerateにはWeights & Biases Trackerが含まれており、以下でその使用方法を示します。また、Accelerate Trackersについて詳しくはこちらのドキュメントをご覧ください。
Accelerateでログを開始する
AccelerateとWeights & Biasesを使い始めるには、以下の擬似コードに従ってください:
from accelerate import Accelerator
# Acceleratorオブジェクトにwandbでログを記録するように指示
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()
さらに詳しく説明すると、以下が必要です:
- Acceleratorクラスを初期化する際に
log_with="wandb"
を渡す init_trackers
メソッドを呼び出し、以下を渡す:project_name
を通じてプロジェクト名- ネストされた辞書で
init_kwargs
に渡す Any パラメータ:wandb.init
config
を通じて wandb run にログを記録したいその他の実験設定情報
.log
メソッドを使用してWeights & Biasesにログを記録する;step
引数はオプション- トレーニングが終了したら
.end_training
を呼び出す
Accelerateの内部W&B Trackerへのアクセス
Accelerator.get_tracker() メソッドを使用すると、素早くwandbトラッカーにアクセスできます。トラッカーの .name
属性に対応する文字列を渡すだけで、そのトラッカーをメインプロセス上で返します。
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 Articles
以下はAccelerateに関する記事です、お楽しみください
HuggingFace Accelerate Super Charged With Weights & Biases
- この記事では、HuggingFace Accelerateの提供内容と、分散トレーニングや評価を行いながら、結果をWeights & Biasesにログする方法の簡単さについて紹介します。
全レポートをこちらからお読みください。