1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TransformersのAttributeError: 'gpt2tokenizerfast' object has no attribute 'max_len' エラーを解決した件について

Last updated at Posted at 2021-04-28

はじめに

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.pymax_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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?