![見出し画像](https://assets.st-note.com/production/uploads/images/104716791/rectangle_large_type_2_3e067b710de3e123923184452327c316.png?width=1200)
普通の文章からFine-tuning用トレーニングデータを無限生成
この記事では、GPTモデルを活用してFine-tuning用トレーニングデータを効果的に作成する方法を解説します。特にFAQデータが不足している場合のデータ作成方法に焦点を当てています。
まずはじめに
私はテキストの書き起こしを持っており、ファインチューニングのためにJSONL形式にする必要があります。
— 甲斐大樹 (@furoku) May 4, 2023
形式例
{"prompt": "イーロン・マスクは誰ですか?", "completion": "イーロン・マスクは実業家で投資家です。"}…
Fine-tuningが本命
現在、GPT-3.5 や GPT-4 での Fine-tuning ができない理由は、Fine-tuning に必要なコンピューティングリソースが不足しているためです。ただし、将来的には可能になることを見込んで準備を進めましょう。
OpenAIのFine-tuningに関するドキュメントによると、
Fine-tuning には以下のメリットがあります。
プロンプトの設計より高品質な結果が得られる。
多数の例を学習でき、プロンプトに収まらないほどのデータを活用できる。
トークン数が節約されるため、短いプロンプトが利用可能。
低レイテンシのリクエストが可能。
ということで、全項目が今後サービスを行っていくにあたって重要です。
現在、「few-shot learning」などで実現されているサービスは、遅かれ早かれFine-tuningされたモデルに駆逐されるでしょう。
Fine-tuningのトレーニング
さて、Fine-tuning の手順は以下です。
トレーニングデータの準備とアップロード。
Fine-tuned モデルのトレーニング。
Fine-tuned モデルの利用。
トレーニングデータは JSONL 形式で、各行がprompt-completionのペアで構成されます。つまりつぎのようなデータです。
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
しかし、このような質問と回答のペアをもっていない場合はどうしましょう?
FAQがないならGPTで生成
ここでGPT の利用が可能です。GPT を利用して、質問とテキストを含む JSONL 形式のデータを生成することができます。サポートの履歴や FAQ のデータがなくても、大量のテキストを元に、適切な JSONL 形式のデータを作成できます。
やり方は簡単。次のようなプロンプトです。
私はテキストの書き起こしを持っており、ファインチューニングのためにJSONL形式にする必要があります。
形式例
{"prompt": "イーロン・マスクは誰ですか?", "completion": "イーロン・マスクは実業家で投資家です。"}
以下のテキストに対して適切な5〜n個の質問を生成し、質問とテキストをJSONL形式で配置してください。 "completion"はテキストからそのまま引用してください。質問には「あなた」の形を使用する必要があります。テキスト全体を利用する必要があります。
テキスト:<本文>
このプロンプトで、なんでもいいから文章を<本文>にいれてみるといいです。Fine-tuning のためにJSONL形式を作ってくれます。
たとえば、次のように夏目漱石の「吾輩は猫である」の序文を<本文>にいれます。
私はテキストの書き起こしを持っており、ファインチューニングのためにJSONL形式にする必要があります。
形式例
{"prompt": "イーロン・マスクは誰ですか?", "completion": "イーロン・マスクは実業家で投資家です。"}
以下のテキストに対して適切な5〜n個の質問を生成し、質問とテキストをJSONL形式で配置してください。 "completion"はテキストからそのまま引用してください。質問には「あなた」の形を使用する必要があります。テキスト全体を利用する必要があります。
テキスト: 吾輩わがはいは猫である。名前はまだ無い。
どこで生れたかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。
そうすると次のよなJSONL形式のデータが返ってきます。
{"prompt": "あなたは何について語っていますか?", "completion": "吾輩は猫である。名前はまだ無い。"}
{"prompt": "あなたはどこで生まれたか知っていますか?", "completion": "どこで生れたか頓(とん)と見當がつかぬ。"}
{"prompt": "あなたはどうやって生まれたことを思い出すことができますか?", "completion": "何でも薄暗いじめじめした所でニヤーニヤー泣いて居た事丈は記憶して居る。"}
{"prompt": "あなたはいつ人間というものを初めて見たのですか?", "completion": "吾輩はこゝで始めて人間といふものを見た。"}
普通の文章から無限生成
このプロンプトでGPTのAPIを回して、大量のテキストを処理させればいいですね。GPTのコストはかかりますが、人手でFAQを作るより圧倒的にコストを抑えることができますね。ちなみに、GPT-3.5-turboで回せます。
ということで、現在はコンピューティングリソースの問題で、OpenAIのGPT-3.5-turboとGPT-4モデルのFine-tuning ができませんが、今後数ヶ月でコンピューティング環境が改善されることを期待して、Fine-tuning 用のデータを準備しておくことが重要です。
過去のnote
GPT-3.5やGPT-4による多段推論の限界
AutoGPTやBaby AGIは、とても興味をそそられますが、現在のGPTではできることは限定的だと思っています。現状では、GPTの推論は広がりがちで、目標に向かって多段推論を行うのは非効率な感じがしています。
人は自分が思っている以上に目標に収束させる推論が得意です。GPT-3.5やGPT-4は非常に優れていると思いますが、人と協力することでその能力を最大限に発揮できると考えます。