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や学習率の推移を確認できます。こちらではいくつかの結果を表示して、推移を比較しています(値は雑なものと思ってください)。
ハイパーパラメーターのチューニングではデータ量を絞って行うことが多いと思いますが、実際にすべてのデータで学習すると思った精度が出ない場合があります。明らかに過学習が見られる場合や、lossが下がっていない場合に見切りをつけたり比較が可能です。
もちろんCSVに出力しておいたり、画面上に表示されたlossやevalの結果を見ても同じことなのですが、最小の設定ですぐに可視化できるのがWandB(SaaSの可視化サービス)の良い点です。
またWandBのGroupという機能を使えばある条件(たとえば実行名など)でのグループ化もワンクリックで行えます。
また実行ごとのパラメーターも記録されているので、うっかり忘れる心配もなくすぐ確認できて便利です。チェックポイントを消してしまっていたり、ストレージからダウンロードしなおすなど確認が面倒なときも心配ありません。
おわりに
WandBを使うと学習の可視化が簡単で、Hugging Face Trainerからもすぐに設定できると紹介しました。ShodoではAIの学習を自社で行い、運用しているためこのようなAIの体制も重要になっています。他のツールとの比較はできていませんが、WandBは無料でも簡単な可視化ならすぐに行えるので、とりあえず設定してみると良いかもしれません。
現在、Shodoではアドベントカレンダー応援クーポンを配布しております。80%オフでShodoを最長3ヶ月間使えるクーポンです。以下のクーポンコードをご購入時に入力して、このアドベントカレンダーの季節にShodoのAI校正をお役立てください。
XMAS2024