記憶:HuggingfaceTransformers

そもそもこの記事について

以下の書籍の4-6の文章生成に挑戦したときの記憶です。
www.borndigital.co.jp
2022/5/20より長いことやったりやらなかったりしているため、記憶が薄れつつある箇所もございます。

なお、あくまでも私の環境で発生したことしか記憶していないのでご容赦ください。

そもそも

サンプルコード

そもそも先のリンクから、サンプルコード?が配布されていた。基本的にはそれに則って実行すればうまくいくんじゃないかなって思った。案外そんなことはなかった。

実行環境

なお、実行環境はpython3.7、jupyter環境とgoogle colabの2つで行った。これはjupyterでできなかったからcolabでやればできるかもしれないかなぁって思ったからだが、多分関係ないんじゃないかな……。
また、ファインチューニングの実行の際には「あかねと~く」の会話データではなく、私のTwitterのツイートデータを用いて実行した。

本題:生じた問題の記憶

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で起きているらしい。

  1. dillのアップデートを確認したが最新バージョンで実行していた。
  2. 書籍では!pip install datasets==1.2.1の指定をしていたが、これを無視。

結局datasetsのバージョンはVersion: 2.3.2で実行

なお

dillはpickleに近そうなものらしい。↓参考
mojitoba.com

本題ではないが気になったこと

誤植?

正直、私が気付くような所なんて「見りゃあ分かンだろんなもん」な場所だが、この本を読み返す時の私がそこまで賢いとは思わないんだ。

ファインチューニングの実行準備

作業フォルダ(workフォルダ)の直下に学習データ「train.csv」と検証データ「dev.csv」を配置します。

となっていたが、多分それぞれ拡張子が間違っていて「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のミスだと思い書き換えて実行した。