はじめに
Huggingface Transformersを勉強しているのですが、Transformersが新しくなったようで、公式に乗っているコードも動かないものが多く、そちらの対処をしましたので記事にします。
私はこちらの記事を動かしている途中でエラーに遭遇しました。
前回
このエラーの前に遭遇したエラーについては以下の記事をご参考ください。
問題
以下のコードで学習を始めるとエラーが発生します。
!python transformers/examples/legacy/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: 'RobertaTokenizerFast' object has no attribute 'max_len'
max_lenがないそうです。
こちらの記事によると、記事に利用されていたrun_language_modeling.py
が非推奨となっており、language-modeling/run_{clm, plm, mlm}.py
に切り替わっているとのことでした。
そもそも私はtransformersがわからない状態でハンズオン代わりに勉強しているため、切り替わったほうの使い方がわからないため、修正する方法でrun_language_model.py
を使うことにします。
(使い方がわかる方はコメントお待ちしております)
解決方法
./transformers/examples/legacy/run_language_modeling.py
にmax_len
が2ヵ所あるのでmodel_max_length
に変更する。
# 280行目
data_args.block_size = tokenizer.model_max_length
# 282行目
else:
data_args.block_size = min(data_args.block_size, tokenizer.model_max_length)
おわりに
だいぶコードが古くなっているようで、公式のハンズオンも動かないことが多く大変です。
推奨されている方法で同じことを実行できるようになりたいものです。
次回
次に起きるエラーはこちらで対応しています。
参考サイト
https://github.com/huggingface/transformers/issues/8739
https://www.gitmemory.com/issue/huggingface/blog/72/785454524