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