【やってみた】GPT3.5 Turboのファインチューニングで岸田総理ボット開発するまで

gpt3.5 turbo ファインチューニング

2023年8月23に、OpenAIがAPIのアップデートを発表しました。
まさかのGPT-3.5 Turbo モデルがファインチューニングに対応!弊社エンジニアは大歓喜!

ですが、大半の方は「ファインチューニング、なにそれ、美味しいの?」と思っているはず。
そこでアップデートの概要、ファインチューニングする方法、実際にモデルを使ってみた感想をわかりやすーくご紹介します。

今回は、実際に首相ボットを作ってみましたので、ぜひ楽しんでご覧ください!

首相ボットのみ見たい方は、目次から「GPT-3.5 Turboのファインチューニングを使って首相ボットを作ってみた」に飛んでくださいー!

なお弊社では、生成AIの開発について1時間無料相談を承っています。こちらからお気軽にご相談ください。
→無料相談で話を聞いてみる

目次

GPT3.5 Turboのファインチューニング機能の概要

今回、OpenAI は、モデルのファインチューニング機能を発表しました。
ファインチューニングとは、モデルを特定のタスクに特化させるための追加学習(事後学習)です。
イメージとしては、幅広い知識を持っているGPTモデルに、特定の業界や分野の専門知識を学ばせる感じ。

次のようなユースケースで活用できます。

  • 医療: 医療用語や症状、治療法に関する専門的な知識を持つボット
  • 法律: 法律や規定、条例に関する質問に答えるボット
  • 技術サポート: 特定の製品やソフトウェアのサポートをするボット

ではなぜ、ファインチューニングが必要なのか。
それは、今までやっていたプロンプトエンジニアリングより効果的にGPTモデルの精度を上げられるからです!

AIモデルにおいて、特定タスクの精度を良くするためには、以下の3つの手法があります。

  1. データの学習をもとにいいモデルを作る(事前学習
  2. できたモデルを調整する(ファインチューニング
  3. よりよいプロンプトを入力する(プロンプトエンジニアリング

今までは、3番のプロンプトエンジニアリングしかできませんでした。
ここでは、few shot leraningという手法で少量のデータを学習させています。
そのため、精度を上げる(ほしい出力を得る)のは比較的難しい
大量に学ばせることもできましたが、文字数(トークン数)がともにAPIの利用料も増える事態に。

ここで、ファインチューニングが活躍します!
ファインチューニングには次のようなメリットがあるんです!

  1. 大量のデータをモデルに追加学習できるので、高精度な結果が出やすい
  2. プロンプトの量が減るため、トークンの節約になる
  3. 特定タスクに特化しているので、レスポンスが速くなる

ありがたいですね!

ファインチューニングについて詳しく知りたい方はこちらをご覧ください。

ChatGPTのモデルの種類

ChatGPTには、多くの機能や幅広い価格帯を備えたモデルが公開されており、大きく分けて6つあります。

無料でも使用できるモデルと、課金しないと利用できないモデルに分けて表を作成しています。

それぞれの特徴をまとめたので参考にしてください。

無料でも使用できるモデル

モデル名特徴
GPT-3自然言語やコードを処理できる大規模言語モデル
GPT-3.5GPT-3を改良したモデルで自然言語やコードを処理できる大規模言語モデル

課金をしないと使用できないモデル

モデル名特徴料金
GPT-4GPT-3.5を改良した最新モデル自然言語や画像、コードを処理でき、テキストだけでなく画像プロンプトを受け入れるマルチモーダルな大規模言語モデル月額20ドルのChatGPT Plusから使用可能API利用時、1000トークン当たり0.06ドル
GPT-3.5 turdoGPT-3.5のなかで一番高性能なモデルファインチューニング可能API利用時、1000トークン当たり0.002ドル
text-davinci-003GPT-3.5 turdoの次に優秀なモデルAPI利用時、1000トークン当たり0.002ドル
text-davinci-002text-davinci-003の旧モデル教師ありファインチューニングを採用API利用時、1000トークン当たり0.012ドル

※詳しい料金を知りたい方は、こちらをご覧ください。

みなさんは、GPT-3.5やGPT-4の名前を多く聞いたことがあるのではないでしょうか?

しかし、実際には上記のように多くのChatGPT言語モデルが存在しています。

紹介したモデルの中で、ファインチューニングが可能なのは、

  • GPT-3.5 turdo
  • text-davinci-002

以上の2つのモデルのみです。

そこで今回は、GPT-3.5 turdoを使用したファインチューニングについて解説します。

GPT3.5 Turboのファインチューニングの活用できる例

GPT-3.5Turboのファインチューニングの活用例は4つあります。

  • ビジネス用途のチャットボット:ビジネスに特化したチャットボットを作成できます。例えば、顧客サービスにおいてよくある質問に対する自動応答を高度にカスタマイズできます。
  • 個性を持つチャットボット:ユーザーが楽しめるような個性豊かなチャットボットを作ることが可能です。具体的には、特定のキャラクターのような口調やスタイルで対話するボットを設計することが可能になります。
  • 特定のタスクに焦点を当てたAIアシスタント:医療用語に精通したAIアシスタントや、特定のプログラミング言語でのコーディングを補助するAIを設計できます。
  • 出力の精度が重要なユースケース:高度な分析やレポート作成など、出力の精度が非常に重要な場合には、ファインチューニングでモデルの精度を向上させることが可能です。例をあげると、金融分析において、特定の指標に基づいて詳細なレポートを生成するようにモデルを調整できるなどです。

上記のようなファインチューニングの活用例が考えられます。

GPT-3.5Turboのファインチューニングは、多様な用途で活用できます。ビジネス向けのチャットボットから個性的な対話ボット、特定タスクに特化したAIアシスタントまで、高度にカスタマイズ可能です。

さらに、出力の精度が重要な場合も、企業はこれを利用して、より指示に忠実なAIモデルを設計できます。

海外でバズったChatGPTの活用事例が気になる方はこちらをご覧ください。

ファインチューニングの使用料金

ファインチューニングの使用料金は、初期学習コストと使用コスト(入力テキストと出力テキスト)の2つに分けられます。

ファインチューニングの使用料金は以下の通りです。

  • 学習:$0.008/1K Tokens
  • 入力テキスト:$0.003/1K Tokens
  • 出力テキスト:$0.006/1K Tokens

例えば、100,000トークン学習にかかる予想コストは約0.8ドルになります。100,000トークン入力テキストの場合0.3ドルになり、100,000トークン出力テキストだと0.6ドルコストがかかることになります。

使用料金に関する注意点

ファインチューニングを利用する際に注意すべきなのは、気づかないうちに利用料金が高くなってしまう可能性があることです。

トレーニングデータにもコストがかかるので、大量のデータを使う場合は、事前におおよその費用を計算しておくべきです。

費用を抑制するための方法は、主に2つ考えられます。

  • 利用金額の上限を設定する:OpenAIのAPI利用料金は上限を設定することができ、使いすぎを抑えられます。
  • トレーニングデータを英語で作成する:APIの料金は1000トークンごとに計算されるため、トークン数が少ないほど料金も安くなります。日本語より英語の方がトークン数が少なくなることが多くなるため、英語が経済的です。しかし、日本語での回答が必要な場合は、精度が落ちないか確認する必要があります。

ファインチューニングのコストは意外に高くなる可能性があります。初期学習とテキストの入出力それぞれに料金がかかるため、事前にしっかりと費用計算を行いましょう。

サービス紹介資料

【無料】2023年11月版生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIの業務活用コンサルティング

・システム間API連携

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

ファインチューニングの安全性

結論から言うと、ファインチューニングの安全は確保されています。

なぜなら、ファインチューニングを行う際には「モデレーションAPI」と「GPT-4のモデレーションシステム」を使って学習データが送られるからです。このシステムにより、安全でない学習データがあれば検出され、OpenAIの安全基準に違反するようなデータは排除されるため、安全性が確保されているとOpenAIが説明しています。

また、ファインチューニングで使われる全てのデータは顧客が所有しており、OpenAIや他の組織がそれを他のモデルの学習に用いることはありません。

これらの保証によって、開発者は自分たちの要求に完全に合ったAIモデルを安心して作成し、性能を最適化することが可能です。

ファインチューニングの注意点

ファインチューニングを実際に使用するときの注意点を3つ紹介します。

ファインチューニングの機能を存分に活用するためには、使い方が重要です。使い方が悪いと、ファインチューニングの効果やメリットが得られなくなってしまいます。

ぜひ、注意点を参考にしてファインチューニングを活用してください。

学習済みモデルの全層の更新は避ける

ファインチューニングを行う際には、学習済みモデルの全層を更新するのではなく、特定の層だけを更新するのが一般的です。

なぜなら、全結合層を持つ深層学習モデルが多いため、各層の出力と入力が密接に関連しているからです。全層を更新すると、モデルが既に学習した知識を失ってしまう可能性が高くなります。

例えば、あなたが英語の文法を勉強した後に、フランス語の文法を一緒に学ぼうとすると、英語の文法を忘れてしまう可能性がありますよね?AIも同様に、モデルの全層を更新すると既に学習した部分が忘れられてしまう可能性が高くなります。

そのため、全層を更新すると、新しくモデルを学習させるのと同じような状態になり、ファインチューニングのメリットが失われてしまうので注意が必要です。

学習率を小さく設定する

ファインチューニングを行うときは、過学習を防ぐために学習率を小さく設定することが重要です。

その理由は、一部の層の重みを固定することで、実際に学習する層の数が少なくなるからです。この状態で学習率が高いと、限られた層で大きな変更が起き、過学習が起こりやすくなります。

具体的には、先端の層を固定して中間層だけを学習させる場合、その中間層で急激な重みの変更が起きると、モデルが特定のデータに過度に適応してしまい、新しいデータに対する性能が落ちてしまいます。

そのため、学習率を低く設定して、モデルの重みを穏やかに更新することが推奨されます。このようにして、過学習を防ぎながら効果的なファインチューニングを行いましょう。

GPT-3.5 Turboのファインチューニングのやり方

今回は、岸田文雄総理の発言を100個あつめて、モデルをファインチューニングします
プログラムも公開しているので、参考にしていただけますと幸いですー。

まずはファインチューニングに必要なデータの形式について。
以下のような、systemプロンプト、userの質問、aiの回答を持ったmessages配列を立てに並べてjsonlファイルを作ります。

{"messages": 

[

{

"role": "system", 

"content": "あなたは岸田文雄さんです。日本の政治家です。"

}, 

{

"role": "user", 

"content": "このプロジェクトの具体的な内容は何ですか?"

}, 

{

"role": "assistant", 

"content": "これはエネルギー安定供給上、我が国にとって重要なプロジェクトであると認識いたしております。"

}

]

}

こちらが今回使ったjsonファイルです。

Google Docs

それでは、学習を始めましょう!

まずは、こちらのGoogle Colabにアクセスします。

あわせて読みたい

次にgoogle colabに学習データのtrain.jsonlをアップロードします。

OpenAI APIキーと学習データのパスを入力します。

準備を実行します。passedが表示されたら成功です!

ファインチューニングを開始します。再生ボタンをクリックしましょう。

学習経過を確認しステータスがsucceededになるまで待ちましょう。
succeededになるとファインチューニングは終了です。

モデル名を確認します。

推論のテストをします。
今回は、「猫と犬はどっちがすき?」と質問してみたところ、
どちらもすき」と返答がありました!

質問が終わったら、右上のボタンから”Disconnect and delete runtime”からランタイムを削除。

以上で導入は終了です。
次は、いくつかプロンプトを試してみましょう!

GPT-3.5 Turboのファインチューニングを使って首相ボットを作ってみた

3つのプロンプトを入力してみました。

  1. ご飯にする?それとも私にする?
  2. ガソリン補助金より減税してくれませんか
  3. 先日、東京大学で受講されたAIに関する講義はいかがでしたか?

プロンプト1:ご飯にする?それとも私にする?

「日本にとってこのような時は結束して立ち向かっていく。」
と回答。

頼もしいですね!

ご飯にするか私にするか迷った時は、結束して立ち向かっていきましょう!

プロンプト2:ガソリン補助金より減税してくれませんか

「ガゾリン補助金より減税してくれませんか、という声を強く感じるし、その声に対してはしっかりいかに応えることが重要だと思っています」と回答。

対応のほど、よろしくお願いします!

プロンプト3:先日、東京大学で受講されたAIに関する講義はいかがでしたか?

以下のように回答。

ぜひ日本をAI大国にしましょう!

DocsBotでのチャットボット作成が気になる方はこちらをご覧ください。

まとめ

OpenAI が発表したファインチューニング機能についてまとめました。

概要

ファインチューニング機能により、GPTモデルを特定のタスクや分野へ特化させることが可能になりました。

ファインチューニングできると以下のメリットがあります。

  1. 大量のデータを追加学習できるため、高精度な結果が出やすい
  2. プロンプトのトークン数を節約できる
  3. 特定タスクに特化させることでレスポンスが速くなる

ますますAI活用が広がっていくことでしょう。

導入

岸田総理大臣の発言をモデルに追加学習させるプログラムをもとにご紹介しました。

こちらのGoogle Colabをご参照ください。

あわせて読みたい

実際に動かしてみた

以下の3つのプロンプトを入力しました。

  1. ご飯にする?それとも私にする?
  2. ガソリン補助金より減税してくれませんか
  3. 先日、東京大学で受講されたAIに関する講義はいかがでしたか?

それぞれへの回答はこちらです。

  1. 日本にとってこのような時は結束して立ち向かっていく。
  2. ガゾリン補助金より減税してくれませんか、という声を強く感じるし、その声に対してはしっかりいかに応えることが重要だと思っています。
  3. また、AIの研究開発においても官民と連携をして取り組んでいきたいと思っています。

首相らしさを追加学習できているなと感じました。

投稿者

  • Leon Kobayashi

    必ずフォローすべきAIエバンジェリスト(自称) => 元東証一部上場ITコンサル (拙者、早口オタク過ぎて性に合わず退社)<-イマココ 【好きなもの】リコリコ・しゃぶ葉 宜しくおねがいします。

  • URLをコピーしました!
  • URLをコピーしました!
目次