ライティングラボ by Shodo

執筆・ライティングについてのノウハウを共有するブログです。 ブログや本の執筆、コンテンツマーケティングにお役立てください!

WandBでHugging Face Trainerの学習を可視化する

WandBというサービスを使えば、学習のプロセスを可視化できます。たとえばlossの推移などを監視できます。WandBはTensorBoardやNeptune.aiと似たツールで、学習過程を可視化するものです。CSVに出力して毎度可視化するのも面倒ですし、SaaSとして利用できるので準備もほとんど必要ないのが良い点です。

ShodoではハイパーパラメーターのチューニングにOptunaを利用しており、その可視化にはOptuna Dashboardを活用しています。WandBは本格的な学習を始める場合に利用しています。

とはいえWandBについては最近使い始めたところですので、間違いなどがあればぜひ教えてください。

導入の方法

WandBを使うには wandb をインストールしてログインするだけです。

$ pip install wandb
$ wandb login

Hugging Face Trainerで使うのは簡単で、以下のように report_to に指定するだけです。

args = TrainingArguments(
    report_to="wandb",
)

実行名は run_name という引数で指定できます。ない場合は output_dir にフォールバックします。実行名を決めておくとグループ化をワンクリックで行えたり便利ですが、とりあえず試す分にはなくても良いです。

プロジェクトの設定などは環境変数から行えます。 wandb.init(...) を呼び出しての設定も可能です。

os.environ["WANDB_PROJECT"] = "shodo"

チェックポイントをWandB上に保存したり、そこから再開することも可能なようですが、今のところShodoでは利用していません。

細かな設定

Hugging Face Trainerで使う場合の設定方法や細かい活用法はこちらをご確認ください。

可視化

とりあえず report_to="wandb" を設定するだけで、トレーニング中のlossや学習率の推移を確認できます。こちらではいくつかの結果を表示して、推移を比較しています(値は雑なものと思ってください)。

WandBによる可視化

ハイパーパラメーターのチューニングではデータ量を絞って行うことが多いと思いますが、実際にすべてのデータで学習すると思った精度が出ない場合があります。明らかに過学習が見られる場合や、lossが下がっていない場合に見切りをつけたり比較が可能です。

もちろんCSVに出力しておいたり、画面上に表示されたlossやevalの結果を見ても同じことなのですが、最小の設定ですぐに可視化できるのがWandB(SaaSの可視化サービス)の良い点です。

またWandBのGroupという機能を使えばある条件(たとえば実行名など)でのグループ化もワンクリックで行えます。

グループ化したloss
また実行ごとのパラメーターも記録されているので、うっかり忘れる心配もなくすぐ確認できて便利です。チェックポイントを消してしまっていたり、ストレージからダウンロードしなおすなど確認が面倒なときも心配ありません。

Runの一覧

おわりに

WandBを使うと学習の可視化が簡単で、Hugging Face Trainerからもすぐに設定できると紹介しました。ShodoではAIの学習を自社で行い、運用しているためこのようなAIの体制も重要になっています。他のツールとの比較はできていませんが、WandBは無料でも簡単な可視化ならすぐに行えるので、とりあえず設定してみると良いかもしれません。

現在、Shodoではアドベントカレンダー応援クーポンを配布しております。80%オフでShodoを最長3ヶ月間使えるクーポンです。以下のクーポンコードをご購入時に入力して、このアドベントカレンダーの季節にShodoのAI校正をお役立てください。

XMAS2024

執筆:@hirokiky
Shodoで執筆されました