そもそもこの記事について
以下の書籍の4-6の文章生成に挑戦したときの記憶です。
www.borndigital.co.jp
2022/5/20より長いことやったりやらなかったりしているため、記憶が薄れつつある箇所もございます。
なお、あくまでも私の環境で発生したことしか記憶していないのでご容赦ください。
そもそも
サンプルコード
そもそも先のリンクから、サンプルコード?が配布されていた。基本的にはそれに則って実行すればうまくいくんじゃないかなって思った。案外そんなことはなかった。
本題:生じた問題の記憶
from transformers import T5Tokenizer, AutoModelForCausalLMのインポートができない
処置
!pip install transformers[ja]==4.4.2
でインストールした。なお、ファインチューニングの実行の時にrun_clm.pyで実行するので
!git clone
は実行した。
AttributeError: module 'dill._dill' has no attribute 'stack'
起きた状況
ファインチューニングの実行時
処置
どうやらdatasets\utils\py_utils.pyで起きているらしい。
- dillのアップデートを確認したが最新バージョンで実行していた。
- 書籍では!pip install datasets==1.2.1の指定をしていたが、これを無視。
結局datasetsのバージョンはVersion: 2.3.2で実行
なお
dillはpickleに近そうなものらしい。↓参考
mojitoba.com
本題ではないが気になったこと
誤植?
正直、私が気付くような所なんて「見りゃあ分かンだろんなもん」な場所だが、この本を読み返す時の私がそこまで賢いとは思わないんだ。
ファインチューニングの実行準備
となっていたが、多分それぞれ拡張子が間違っていて「train.txt」と「dev.txt」のはず。まあそう読み替えて実行した。
ファインチューニングの実行
!python ./transformers/examples/language-modeling/run_clm.py \ --model_name_or_path=rinna/japanese-gpt2-medium \ --do_train \ --do_eval \ --train_file=train.txt \ --validation_file=train.txt \ --num_train_epochs=100 \ --save_steps=5000 \ --save_total_limit=3 \ --per_device_train_batch_size=1 \ --per_device_eval_batch_size=1 \ --output_dir=output/ \ --use_fast_tokenizer=False \ --logging_steps=50
となっているが、訓練データとバリデーションデータが同じファイルを指定していた。多分dev.txtのミスだと思い書き換えて実行した。