はじめに
Huggingface Transformersを勉強しているのですが、Transformersが新しくなったようで、公式に乗っているコードも動かないものが多く、そちらの対処をしましたので記事にします。
私はこちらの記事を動かしている途中でエラーに遭遇しました。
問題
# 学習
!python transformers/examples/language-modeling/run_language_modeling.py \
--output_dir=output \
--model_type=gpt2 \
--model_name_or_path=gpt2 \
--do_train \
--train_data_file=train.txt \
--do_eval \
--eval_data_file=eval.txt \
--per_device_train_batch_size=2 \
--per_device_eval_batch_size=2 \
--num_train_epochs=10 \
--save_steps=5000 \
--save_total_limit=3
AttributeError: 'Trainer' object has no attribute 'is_world_master'
解決方法
こちらの記事によると、transformersのバージョンが古いとのこと。どうしてもやる場合は以下の対応で可能とのことでした。
is_world_master
をis_world_process_zero
に変更することでエラーがなくなります。
具体的には./transformers/examples/legacy/run_language_modeling.py
の以下の行を変更しています。
# 332行目
if trainer.is_world_process_zero():
# 346行目
if trainer.is_world_process_zero():
おわりに
is_wold_process_zero
を使わず、バージョンを上げて対応させたほうがよいそうなのですが、Gitからcloneしている場合は、run_language_modeling.py
を使わない方法をとる必要がありそうです。詳しい方はコメントいただけると嬉しいです。
次回
次に起きるエラーはこちらで対応しています。
参考
https://note.com/npaka/n/nad450e772a84?magazine_key=mdf3ce11e35b9
https://github.com/huggingface/transformers/issues/8995