アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

HugginfaceのTrainerでTensorboard用のログを出力する

今回もDeepLearningについての記事です。
HuggingfaceのTrainerで学習させたときに、学習途中のログをTensorboard用に出力する方法についてまとめます。

huggingface.co

Tensorboardのログ出力設定

HugginfaceのTrainerはデフォルトでTensorboardのログ出力に対応しています。

Tensorboardのログを出力するには、TrainingArgumentsでlogging_dirを設定して、Trainerに渡します。

training_args = TrainingArguments(
  logging_dir = "./logs"
)

trainer = Trainer(
  args = training_args
)

Tensorboardのログを出力するために必要なライブラリ

HuggingfaceのTrainerはデフォルトでTensorboard用のログ出力に対応していますが、実は必要なライブラリがあります。
tensorboardライブラリをインストールしていないと、ログが出力されません。
Tensorflow環境でHuggingfaceのTransformersを使ってる場合は特に気にする必要はないと思いますが、Pytorch環境で利用する場合はtensorboardのインストール漏れに気を付けてください。(*自分はこれにはまって2日ぐらいなぜログが出ないのか悩みました。。。。)

例えば、以下のようにpipなどでインストールします。なお、pytorch環境でも特に喧嘩せずにインストールできます。また、tensorflorwは必要ないので、いれなくてOKです。(というかたぶんpytorchとtensorflowは同居できないと思う?)

pip3 install tensorboard

ちなみに、TensorboardCallbackではtensorboardライブラリの有無を確認して、該当のライブラリがインストールされてない時はRuntimeErrorが発生します。
github.com

が、TrainingArgumentsでlogging_dirを設定した場合は該当のエラーは発生せずにすんなり実行できてしまいます。

コマンド引数でログの出力先を指定する方法

HFArgumentParserを用いることで、TrainingArgumentsに設定するパラメータをすべてコマンドライン引数とすることができます。

parser= HfArgumentParser(TrainingArguments)
training_args = parser..parse_args_into_dataclasses()

HFArgumentParserなどの使い方は、run_mlm.pyなどを参考にしてください。
github.com