Hugging Face Accelerate
less than a minute
Hugging Face Accelerate は、同じ PyTorch コードを任意の分散設定で実行できるようにするライブラリで、モデルトレーニングとスケールでの推論を簡素化します。
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 トラッカーが正しく終了するようにする
accelerator.end_training()
さらに説明すると、以下の手順が必要です。
- Accelerator クラスを初期化するときに
log_with="wandb"
を渡す init_trackers
メソッドを呼び出し、以下を渡します:
project_name
よりプロジェクト名wandb.init
に渡したい任意のパラメータをネストされた dict でinit_kwargs
に- wandb run にログ記録したい任意の実験設定情報を
config
で
- Weights & Biases にログを記録するために
.log
メソッドを使用する;step
引数はオプション - トレーニングが終了したら
.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 記事で、お楽しみいただけるかもしれません。
HuggingFace Accelerate Super Charged With Weights & Biases
- この記事では、HuggingFace Accelerate が提供するものと、Weights & Biases に結果を記録しながら分散トレーニングと評価を簡単に行う方法を紹介します。
完全なレポートは こちらをご覧ください。
フィードバック
このページは役に立ちましたか?
Glad to hear it! If you have more to say, please let us know.
Sorry to hear that. Please tell us how we can improve.