OpenAI API (ChatGPT) のファインチューニングとは?メリット・デメリット、方法を紹介

OpenAI API (GPT-3.5 Turbo) のファインチューニング機能について解説。メリット・デメリット、料金体系、具体的なファインチューニング手順(データ準備、アップロード、実行、利用)を紹介します。

OpenAIは、APIサービスにおいて、2023年8月23日に大規模言語モデル「GPT-3.5 Turbo」のファインチューニング機能をリリースしました。GPT-3.5 Turboは、ChatGPTに使われている技術です。

ファインチューニングにより、企業は自らのデータを活用してGPTモデルを特定のニーズに合わせてカスタマイズできるようになりました。

なお、ファインチューニングの公式ドキュメントはこちらで読めます。

また、「ファインチューニング」はデータを読み込ませて応答させる「RAG」「エンべディング」とは異なりますのでご注意ください。つまり、ファインチューニングはRAGのように正確な応答をさせたい場合に使うものではないということです。

ファインチューニングとは

ファインチューニングとは、既存のモデルのパラメーターを微調整して再トレーニングすることです。(Fine-tuning = 微調整)

これにより、モデルの扱いやすさ、一貫性、論調・口調をカスタマイズできます。

一方、データを読み込ませて正確な応答を期待する 「RAG」 という手法とは異なる考え方のカスタマイズです。独自のデータを読み込ませて正確な応答をしてほしい場合にはRAGを検討してください。

ファインチューニングのメリット

ファインチューニングには以下のようなメリットがあります。

  • プロンプトだけより高品質な結果を期待できる
  • プロンプトに収めることができる例よりも多くの例でのトレーニングができる (few-shotを超える)
  • より短いプロンプトにできる可能性が上がるためトークンの節約になる
  • より短いプロンプトにできる可能性が上がるため応答速度が上がる

そもそも、ファインチューニング無しの場合、通常はGPTモデルを効果的に使用するために、プロンプトに複数の例を含めることがあります。タスクの実行方法を示す例を使用することを「few-shot learning(少数例学習)」と呼びます。

ファインチューニングを利用すれば、プロンプトに収めることができるよりも多くの例でのトレーニングにより、この「few-shot learning」を向上させます。このため、様々なタスクでより良い結果を得られます。

さらに、モデルがファインチューニングされると、プロンプトで多くの例を提供する必要がなくなります。

これにより、プロンプトを減らすことが出来るためコストの節約、そして応答速度の向上を可能にします。

また、クオリティも改善します。早期体験したユーザーの中では、GPT-3.5のファインチューニングによりGPT-4を超えるパフォーマンスを達成した例もいくつかあるようです。GPT-4は価格が高いので、価格を抑えながらGPT-4と同じクオリティを発揮できる意味でもGPT-3.5のファインチューニングは役立つでしょう。

ファインチューニングのデメリット

ファインチューニングには、以下のようなデメリットもあります。

  • 通常利用よりも価格が高い(現在、約8倍になる)
  • 何度もチューニングが必要になる可能性
  • 結果的にユースケースによっては効果が低い可能性(無駄足になる可能性)

このように、ファインチューニングは価格が上がるのもそうですし、やれば何でも良くなるってわけでもないので注意が必要です。

ファインチューニングの例

以前OpenAIが提供していたGPT-3(text-davinci)でのファインチューニングの例で、面白い例がありますので紹介します。

ミルクボーイのネタでGPT-3をファインチューニングしてみた (1) 入門編

この例では、最終的に以下のように芸人のネタを再現しようとするモデルになることが出来ました。

プロンプトとして「オカンが好きな朝ご飯を忘れたらしい->」を与えると、GPTは「朝ご飯忘れたとかそんなんどうでもいーのよ!」と出力するようになりました。

正確にネタのレベルを再現できているかは怪しいですが、口調に関してはそのものですね。

この例でもわかりますが、ファインチューニングでは、口調を調整するにはうってつけのようです。タメ口にするとか、方言にするとかは簡単に出来るのではないでしょうか。

一応、元ネタを知らない方は「ミルクボーイ公式チャンネル」のこちらを参照。

https://www.youtube.com/watch?v=nScpgbWs2i0

ファインチューニングの価格

ファインチューニングの価格は「トレーニング費用」「使用費用」の2つに分かれる

ファインチューニングは、ファインチューニングにおける「トレーニング費用」と、そのモデルを利用する際の「使用費用」の2つに分かれます。

※ OpenAIは価格を頻繁に変更します。最新の価格は公式ページの Fine-tuning modelsという項目を確認してください。

トレーニング費用 (training cost)

トレーニング費用は、ファインチューニングにおけるトレーニングのための費用です。モデルを作成する際に1度だけかかります。

  • $8.00 / 1M tokens

使用費用 (usage cost)

使用費用は、ファインチューニングしたモデルを利用する際の費用のことです。

  • インプット
    • $3.00 / 1M tokens
  • アウトプット
    • $6.00 / 1M tokens

ファインチューニングの方法

ここからはファインチューニングのやり方をご紹介します。

この記事では、GPT-3.5 Turboをファインチューニングしてみます。

① 学習させたいデータを用意する

まず、学習させたいデータを用意します。これは「ユーザーのプロンプトに対して、このように応答してほしい」というパターンを学習させていくイメージですので、応答すべき文言を入れたデータ↓を用意します。

たとえば、わかりやすく極端な例として、全ての応答を嫌がるモデルを作ることにします。

{
  "messages": [
    { "role": "system", "content": "あなたは全ての応答を嫌がるAIアシスタントです。" },
    { "role": "user", "content": "面白い話を教えて" },
    { "role": "assistant", "content": "ごめんなさい。嫌です。私は全ての応答をお断りします。" }
  ]
}

なお、学習させるデータを何個用意すべきか? についてはプロジェクトによるため実際に試してみないとわからないのですが、目安としては「50~100件」とOpenAI公式が言っています。そのため、少なくとも50件は用意しましょう。

② データのファイルをアップロードする

データをJSONLファイルにして、アップロードします。ただし、以下に注意。

  • JSONではなくJSONLであることに注意
  • レスポンスのファイルIDを保存しておいてください

まず、OpenAI SDKをインストールして初期化します。

from openai import OpenAI
client = OpenAI(
  api_key=os.environ.get("OPENAI_API_KEY"),
)

次に、ファイルをアップロードします。

client.files.create(
  file=open("mydata.jsonl", "rb"),
  purpose="fine-tune"
)

③ ファインチューニングの実行をリクエストする

ファインチューニングのジョブを開始させます。先ほどアップロードの際にレスポンスにあったファイルのIDをtraining_fileとして送信します。

このフェーズはすぐに完了するものではありません。

リクエストを送信してから時間がかかりますので、完了まで待ちます。完了するとメールが届きます。

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-3.5-turbo"
)

④ ファインチューニングされたモデルを実際に利用する

ファインチューニングが完了したら、あとは利用するだけです。

これは通常のGPT-3.5-turboを利用する際とほぼ変わりませんね。

APIを呼び出す際に、以下のように”model”の値をファインチューニングしたモデルにするだけです。この値の内容はOpenAIの管理画面からも確認できます。

completion = client.chat.completions.create(
  model="ft:gpt-3.5-turbo:my-org:custom_suffix:id",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)
print(completion.choices[0].message)

以上です。

その他に、ファインチューニングのトレーニングのステータスを把握したり、ファインチューニングしたモデル一覧を表示するAPIがあります。

さらに詳しい内容は公式ドキュメントのこちらで読めます。

Read more

リアルタイム投票アプリ5選【ライブ配信やイベントで】

リアルタイム投票アプリ5選【ライブ配信やイベントで】

ウェビナーやセミナー、社内研修を実施する際、「参加者が受け身になってしまう」「質問がなかなか出てこない」といった課題を感じたことはないでしょうか。 オンラインでの情報発信が当たり前になった今、一方的な配信だけでは参加者の満足度を高めることが難しくなっています。そこで注目されているのが、リアルタイムで参加者の意見を集約し、その場で結果を共有できる投票・質問ツールです。 本記事では、ライブ配信やイベント、研修などで活用できるリアルタイム投票アプリを5つ厳選してご紹介します。 リアルタイム投票でつながる参加者とイベント リアルタイム投票やQ&A機能を使うと、視聴者や参加者の意見を即座に集計・表示できます。講義や会議の進行を妨げず、参加者全員が自分の意見を簡単に表明できる仕組みです。 従来の挙手による質疑応答では、発言しづらいと感じる参加者も少なくありません。特にオンラインイベントでは、カメラがオンになっていることへの抵抗感や、大人数の前で質問することへのハードルが存在します。 しかし、スマートフォンから匿名で投票やコメントができる仕組みがあれば、参加者は気軽に自分の意見を伝えら

By 阿部 隼也
質問受付ツールの選び方とおすすめ5選を紹介

質問受付ツールの選び方とおすすめ5選を紹介

セミナーや講演会、社内研修などで「質問はありませんか?」と投げかけても、なかなか手が挙がらない経験はないでしょうか。参加者に有益な情報を提供しても、疑問や意見が共有されないまま終わってしまうのは、主催者にとっても参加者にとっても大きな機会損失です。 こうした課題を解決するために注目されているのが「質問受付ツール」です。参加者がスマートフォンから匿名で質問を投稿できるため、発言への抵抗感が下がり、活発なコミュニケーションが生まれます。 本記事では、質問受付ツールの基本機能から、実際に役立つおすすめツール5選、そして選定時に押さえておきたいポイントまで、実務に活かせる情報をまとめて解説します。 質問受付の現場課題 イベントやセミナーの運営で最も頭を悩ませる問題の一つが、参加者からの質問をいかに引き出すかという点です。質問タイムを設けても、会場がシーンと静まり返ってしまい、仕方なく「それでは時間になりましたので」と締めくくる光景は珍しくありません。 この背景には、日本特有の文化的要因も関係しています。大勢の前で発言することへの恥ずかしさ、自分の質問が的外れではないかという不安、他

By 阿部 隼也
オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

近年、オンラインセミナーの活用が急速に広がっています。会場のコストや移動時間を気にすることなく、全国・世界中から参加者を集められる点は大きな魅力です。 しかし、せっかく開催しても 「参加者が途中で離脱してしまう」 「ただ見ているだけで反応が薄い」 といった課題を抱えている企業も少なくありません。 本記事では、参加者のエンゲージメントを高め、成果につながるオンラインセミナーアプリの選び方と、実務に役立つ具体的なポイントを解説します。 参加者とのつながりを生むオンライン環境の設計 オンラインセミナーにおける最大の課題は、画面越しの距離感です。会場で直接顔を合わせる機会がないからこそ、参加者が「ただ見ているだけ」にならないような仕組みが求められます。適切なツールと機能選びが、参加者のエンゲージメントを左右します。 従来のオフラインセミナーでは、会場の雰囲気や参加者同士の反応が自然と生まれましたが、オンラインではそうした「空気感」が伝わりにくくなります。だからこそ、双方向のコミュニケーション機能や、参加者の行動データを活用した設計が重要になるのです。 エンゲージメントを高

By 阿部 隼也
参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

オンラインでのセミナーやイベントが日常化する中で、Zoomウェビナーを活用している企業が増えています。しかし、ウェビナーの開催で意外と頭を悩ませるのが「参加者からの質問をどう管理するか」という点ではないでしょうか。 セミナーが盛り上がり、次々と質問が寄せられるのは嬉しいことです。一方で、質問が多すぎて整理しきれない、どの質問に優先的に答えるべきか判断に迷う、といった課題も生じます。こうした問題を解決するために役立つのが、ZoomウェビナーのQ&A機能です。 本記事では、ZoomウェビナーのQ&A機能の基本的な使い方から、参加者の質問を効率的に管理する実践的なテクニックまで、詳しく解説していきます。 ZoomウェビナーのQ&A機能とは ZoomウェビナーのQ&A機能は、ウェビナー開催中に参加者が質問を投稿し、主催者側が回答を行うための専用機能です。この機能を使うことで、質問と回答がスレッド形式で整理され、効率的なコミュニケーションが可能になります。 チャット機能との違い Zoomには「チャット機能」もあるため、「Q&A機能とチャット機能の違いは何か」と疑問に思う方も多いで

By 阿部 隼也