ミルクボーイのネタをGPT-3に与えてファインチューニングし、漫才のような掛け合いができるか試してみます。
訓練データ作成
以下に訓練データの形式が書いてあります。
https://beta.openai.com/docs/guides/fine-tuning/prepare-training-data
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
という形式で準備する必要があります。
いい感じにprompt ➡︎ きっかけとなる文章、completion ➡︎ 続きの文章
のようなイメージです。
今回は駒場さんのセリフを打ち込むと、GPT-3から内海さんのような答えが返ってくることを目標とします。
ミルクボーイのネタで言えば、
{"prompt": "うちのオカンがね 好きな朝ごはんがあるらしいんやけど その名前をちょっと忘れたらしくてね"
"completion": "朝ごはんの名前忘れてもうて どうなってんねんそれ"},
{"prompt": "色々聞くんやけどな 全然分からへんねんな"
"completion": "分からへんの? いや ほな俺がね おかんの好きな朝ごはん ちょっと一緒に考えてあげるから どんな特徴ゆうてたかってのを教えてみてよ"}
的な感じでしょうか。
ひまぷっち | Marvelous Macho Making 様が、芸人さんのネタを文字起こししてくださっているので、そこからデータを拝借しました。
その中から、ミルクボーイの「コーンフレーク」「最中」「サイゼ」のネタからデータセットを作成してみました。
【M-1グランプリ2019】ミルクボーイ「コーンフレーク」漫才ネタ書き起こし | ひまぷっち
【M-1グランプリ2019】ミルクボーイ「最中」漫才ネタ書き起こし | ひまぷっち
ミルクボーイ 「サイゼ」漫才ネタ書き起こし | ひまぷっち
prompt ➡︎ きっかけとなる文章、completion ➡︎ 続きの文章 となるようにデータの選別をしました。(力技)
ファインチューニング
公式ガイドに沿って実行していきます。
https://beta.openai.com/docs/guides/fine-tuning
CLIコマンドインストール
pip install --upgrade openai
APIキー設定
export OPENAI_API_KEY=“<OPENAI_API_KEY>”
データ検証
openai tools fine_tunes.prepare_data -f dataset.json -q
ファインチューニング
openai api fine_tunes.create -t dataset_prepared.jsonl -m davinci
ベースモデルは一番高性能のdavinciを利用しました。
各ベースモデルのコストについては以下を参照ください。
Pricing
今回はデータ数が少ないこともあり、ファインチューニングのコストは$0.80でした
今回はファインチューニング中で中断されませんでしたが、もし中断されてしまった場合は、以下コマンドで再開できるそうです。
openai api fine_tunes.follow -i <YOUR_FINE_TUNE_JOB_ID>
無事に完了しました。
Job complete! Status: succeeded 🎉
Try out your fine-tuned model:
openai api completions.create -m davinci:ft-personal-2023-01-22-07-35-43 -p <YOUR_PROMPT>
試してみる
openai api completions.create -m davinci:ft-personal-2023-01-22-07-35-43 -p "オカンが好きな朝ご飯を忘れたらしい->"
上記を実行すると以下が出力されました。
オカンが好きな朝ご飯を忘れたらしい->朝ご飯忘れたとかそんなんどうでもいーのよ!
その他には以下のような結果が得られました。
でもちょっとわからへんのよな->何がわからへんのよ
晩ご飯で出てきても全然いいらしい->どうなってんねん!なにがそんなにも信用出来ないのよ
食べたら皮が全部上顎に引っ付くらしい->え? 本当にひっくりかえる?
そやねん-> ほな、もうちょっと詳しく言ってくれる?
オトンが鯖缶ちゃうかて->コノヤロー、もうええわほんで!詳しく教えてくれるか?
会話にはなっていませんが、内海さんっぽい口調にはなってると思います笑
データ量が非常に少なかったので正直あまり期待していなかったですが、なんとなく関西弁っぽくなっているので、驚きました。
今回は実験的な試みなので、データ量増やしたくなったら、スクレイピングや動画の文字起こしなどを駆使してデータ量を増やしたいと思います。