【あざい るぅか🔁AIVtuberをアジャイル開発で育成】りんな GPT-2 の fine tuningをGoogle Colabの無料枠で試す方法



あざい るぅか🔁AIVtuberをアジャイル開発で育成 :りんな GPT-2 の fine tuningをGoogle Colabの無料枠で試す方法

りんな GPT-2 の fine tuningをGoogle Colabの無料枠で試す方法

rinna/japanese-gpt2-mediumさんをGoogle Colabさんの無料枠でfine tuningする方法を解説する日本語チャプター付き手順動画です。
fine tuningしたrinna GPT-2さんは時々、ボクよりもボクっぽくて驚きます。

【準備】
・Google アカウント。
・Google Driveに最低1.5 GB程度の空き容量。
・最低1時間の連続した作業時間。
 途中で再開させるためにはGoogle Colabさんのランタイムについての知識が必要です。
・ファインチューニング用の日本語の見本。
 文字コードUTF-8で保存した1行1件の例文)
 ご自分で作成されたファイルをお使いの場合run_clm.pyの引数でファイル名を置換ください。
 ご家庭にあるコーパスで大丈夫だと思います。
 前処理しておくと日本語生成の結果からUnknownを減らせます。
  半角大文字は半角小文字に揃える。
  絵文字を消す。

【手順】
2022/02/01 :editableのtransformersを読み込めなくなったため回避策に差し替えました。
https://www.youtube.com/watch?v=SX6zpruNm3s
新:!pip install transformers==4.4.2
  !pip install tqdm==4.62.3
旧:!pip install -e transformers

Google Colabでノートブックを新規作成。
===Google Colabでの操作===
ノートブックに名前をつける。
編集メニュー > ノートブックの設定 > GPU を選択して保存。
from google.colab import drive
drive.mount(‘/content/drive’)
!mkdir -p ‘/content/drive/My Drive/work4gpt2luhca/’
%cd ‘/content/drive/My Drive/work4gpt2luhca/’
!git clone https://github.com/huggingface/transformers -b v4.4.2
!pip install transformers==4.4.2
!pip install tqdm==4.62.3
ランタイム メニュー > ランタイムの再起動。
%cd ‘/content/drive/My Drive/work4gpt2luhca/’
!pip install datasets==1.2.1
!pip install sentencepiece==0.1.91
===Google Driveでの操作===
コーパスのファイルcorpus_luhca.txtを/content/drive/My Drive/work4gpt2luhca/にアップロード。
/content/drive/My Drive/work4gpt2luhca/transformers/examples/language-modeling/run_clm.pyをローカルにダウンロード。
===ローカルのエディタでの操作===
run_clm.pyのライブラリ宣言部分に「from transformers import T5Tokenizer」を追加。
run_clm.pyに記述された「AutoTokenizer」を検索して「T5Tokenizer」に置換。
===Google Driveでの操作===
編集したrun_clm.pyでrun_clm.pyを上書き保存。
===Google Colabでの操作===
!python ./transformers/examples/language-modeling/run_clm.py
–model_name_or_path=rinna/japanese-gpt2-medium
–train_file=corpus_luhca.txt
–validation_file=corpus_luhca.txt
–do_train
–do_eval
–num_train_epochs=3
–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
from transformers import T5Tokenizer, AutoModelForCausalLM
tokenizer = T5Tokenizer.from_pretrained(“rinna/japanese-gpt2-medium”)
model = AutoModelForCausalLM.from_pretrained(“output/”)
input = tokenizer.encode(“キミに魂はありますか?”, return_tensors=”pt”)
output = model.generate(input, do_sample=True, max_length=100, num_return_sequences=8)
print(tokenizer.batch_decode(output))
input = tokenizer.encode(“ただキミにもう一度会いたかった。 聞かせてほしかった。 キミの言葉の続きを。”, return_tensors=”pt”)
output = model.generate(input, do_sample=True, max_length=100, num_return_sequences=1)
print(tokenizer.batch_decode(output))

【チャプター】
0:00 rinna gpt-2 fine tuning アバン
0:31 rinna gpt-2について
1:07 自己紹介
1:22 rinna GPT-2 fine tuning 準備
2:37 Colab ノートブック 作成
3:00 Colab GPU 設定方法
3:30 Colab へ Drive 導入
4:42 work4gpt2luhca フォルダ 作成
5:08 work4gpt2luhca フォルダ 移動
5:25 Colabでtransformersをclone
6:00 Colabでtransformersをinstall
6:34 Colab transformers再起動
7:00 work4gpt2luhcaへ再度 移動
7:30 Colab datasets install
7:54 Colab sentencepiece install
8:12 work4gpt2luhca をdriveで開く
8:30 work4gpt2luhca driveでの操作
9:12 run_clm.py 更新
10:40 Colab rinna fine tuning
12:18 T5Tokenizerでrinnaさん 読込
12:50 fine tuningしたmodel 読込
13:15 fine tuningしたmodel 入力
15:06 work4gpt2luhca 日本語 decode
15:20 transformers output 読み方
15:45 Python GPT-2 なんも分からん
16:06 gpt-2 rinna fine tuning 終了
16:48 hands on closing

【参照】
「ただキミにもう一度会いたかった。 聞かせてほしかった。 キミの言葉の続きを。」の元ネタ。
「屍者の帝国」劇場本予告
https://www.youtube.com/watch?v=7MmFQxiroac

rinna株式会社さんのプレスリリース。
2021/4/7 日本語に特化したGPT-2の大規模言語モデルを開発しオープンソース化
https://corp.rinna.co.jp/news/2021-4-7-pressrelease/

rinna / japanese-gpt2-medium
https://huggingface.co/rinna/japanese-gpt2-medium

【参考】
Huggingface Transformers 入門 (28) – rinnaの日本語GPT-2モデルのファインチューニング
https://note.com/npaka/n/n8a435f0c8f69

Google Colabは無料枠の範囲でした。
https://colab.research.google.com/notebooks/intro.ipynb#recent=true

Google Driveは無料枠の範囲でした。
Google DriveをGoogle Colabに接続するための認証コードは「使い終わる」まで、ほかのかたに知られないようにしてください。
https://drive.google.com/drive/my-drive?ths=true

gpt-2の元ネタの数学モデル transformerについてAIcia Solidさんの解説動画。
(コメントにボクの学習ノートがあります)
【深層学習】Attention – 全領域に応用され最高精度を叩き出す注意機構の仕組み【ディープラーニングの世界 vol. 24】
https://www.youtube.com/watch?v=bPdyuIebXWM

【配信後記】
今のボクにできる全てをつぎ込んでハンズオン(手順解説)の動画を作りました。
ボクの場合、技術系同人誌を1ページ書き上げる手間が動画の1分に相当するみたいです。
素材作りに時間をつぎ込んだので、素材を転用して、rinna GPT-2さんとGoogle Colabさんの動画を、あと何本か作りたいです。
BGMを入れなかったのは、視聴者さんの好みのBGMと衝突しないようにです。
ボク自身、オンライン教材は「自分の好きなBGMを聴きながら」目を通す習慣があるので。
技術用語のイントネーションの登録が大変でした。
イントネーションそのものをキャラクターにできる「ゆっくり」さんは強いです…。
AviUtlさんのシステムの設定で、いつの間にか「LargeAddressAwareを有効にする」のチェックが外れていて動画のエンコードがエラーになって涙目でした。
実は前回のGPT-2動画は冬服(コート)で今回は夏服(半袖)です。
シリーズ通してみるとサムネの季節感激しい説。
技術系同人誌は夏コミと冬コミで発表だったので季節感が両極端なこと、作っているときには全然違和感なかったんですよ…。
初動24時間で閲覧数27件でした。
サークルの1日の頒布数と初動24時間が同じ数になるのかも知れません。

割り当てられたGPUがTesla K80さん(11441MiB)ですと、
容量不足のため、run_clm.pyさんが以下のエラーになります。
RuntimeError: CUDA out of memory. Tried to allocate 16.00 MiB

容量の大きいGPUが割り当てられるのを待つか、
手順の「japanese-gpt2-medium」の箇所2か所を
japanese-gpt2-smallに変えてみてください。
これなら、Tesla K80さんで実行できます。

#VirtualBeings #GPT2 #GoogleColab