.

雑記

BERTとT5で含意関係認識

github.com

試した事前学習のモデル

  • cl-tohoku/bert-base-japanese-v2
  • sonoisa/t5-base-japanese

使用したデータ

nlp.ist.i.kyoto-u.ac.jp 句点あったりなかったりするので削るのとTokenizerに入れるときにタブスペースが邪魔なので以下のように削る

re.sub(r'[\u3000 \t。]', '', text)

触った所感

  • 大体のパラメータはデフォルトで十分な精度がでる
  • pl.LightningModule がわかりづらい
  • グラボがアチアチになる(冷房必須
  • 使い方はわかったが理論は一生理解できないと思う

つまづいたところ

  • cusolver64_10.dllが見つからなくてGPUで学習ができないのでファイル名を書き換える github.com
  • self.hparmsに代入しようとすると下記エラーになるのでself.save_hyperparameters()を使う
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py", line 1178, in __setattr__
    object.__setattr__(self, name, value)
AttributeError: can't set attribute
  • GPUを使う場合にDataLoaderのnum_workersを>0にしようとしても=0より遅い or クラッシュするので下記警告は無視する(環境に依りそう)
C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\pytorch_lightning\trainer\data_loading.py:105: UserWarning: The dataloader, train dataloang the value of the `num_workers` argument` (try 24 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
  • 2文を入れるタスクの場合はTokenizerに2文分けてをいれる必要がある
  • T5の場合、出力が特殊で3にしても学習結果が悪いとラベル数が増えたりして意味不

    出力は “0”, “1”,…“8” のラベルとするが、SentencePiece は先頭に特殊トークン(“?”)を付けるときがあること、シーケンス終了トークン(“”)を考慮して出力シーケンス長を 3 とした はじめての自然言語処理 第7回 T5 によるテキスト生成の検証 より

参考