GPT-3.5-Turboのファインチューニング
2023年8月22日(現地時間)に、米OpenAI社は「GPT-3.5 Turbo」のファインチューニングの提供を開始したという発表がありました。
Azureではこれまで、GPT-3系のみしかファインチューニングに対応していませんでしたが、2023年10月16日(現地時間)に、以下「Fine Tuning: now available with Azure OpenAI Service」の記事にあるとおり、GPT-3.5-Turboのファインチューニングに対応しました。
Fine Tuning: now available with Azure OpenAI Service - Microsoft Community Hub
本コラムでは、上記のMicrosoft社が発表した記事を訳しながら、ポイントを説明していきます。 省いている部分がありますので、詳細が気になる方は原文をお読み頂ければと思います。 (2023/10/17時点の内容です。)
What’s new with Azure OpenAI Service?~Azure OpenAI サービスの新機能
Azure OpenAI Service または Azure Machine Learning を使用して、Babbage/Davinci-002 および GPT-3.5-Turbo を微調整できるようになりました。基本モデルの指定、データの提供、トレーニング、デプロイをすべていくつかのコマンドだけ行うことができます。
What fine tuning means for developers like you~開発者にとってファインチューニングが意味するもの
Before you start fine tuning, we recommend starting with prompt engineering or RAG (Retrieval Augmented Generation) to develop a baseline
ファインチューニングを開始する前に、プロンプト エンジニアリングまたは RAG (検索拡張生成) を使用してベースラインを開発することをお勧めします。
RAGとは、ユーザーからの質問とその質問に関係する文章をプロンプトとして入力することにより、モデルが本来持っていない知識から回答を生成する技術になります。
AITCで開発しているKnow Narrator Searchのアーキテクチャーとして採用されていており、以下のAITCコラムで詳しく解説していますのでこちらも御覧ください。
時々、社内の情報を活用するのは、ファインチューニングだ、というようなことを仰る方もいらっしゃいますが、 この記事でも、まずはRAGやプロンプトエンジニアリングを先に検討しましょうと主張されています。
実際に、現時点で提供されているファインチューニングは、技術的にもコスト的にも、RAGを置き換える物ではなく、実現したいユースケースによりますが、新たに知識を獲得するというよりは、タスクに対する回答精度を高めるために利用すべきものだと理解しています。
Don’t start with fine tuning if ...
Consider fine tuning if ...
それでは、ファインチューニングはどのような場合にすべきで、どのような場合にすべきではないか?それを説明してくれている部分になります。 それぞれ3点述べられています。直訳に近い形で説明します。
次の場合は、ファインチューニングを開始しないでください。
- シンプルで迅速な結果が必要な場合。ファインチューニングには、新しいモデルのトレーニングと評価に大量のデータと時間がかかるため。
- 最新のデータまたはドメイン外のデータが必要な場合。これは、RAGとプロンプト エンジニアリングに最適な使用例。
- ハルシネーションを十分回避する必要がある場合。これはRAGが輝くもう 1 つの分野です。
次の場合は、ファインチューニングを検討してください。
- モデルに新しいスキルを教えて、モデルが分類、要約、または常に特定の形式や口調で応答するなど、特定のタスクを得意にできるようにしたいと考える場合。場合によっては、より小さなモデルをファインチューニングして、特定のタスクで大きなモデルと同じようにパフォーマンスを向上させることができる。
- プロンプトで説明するのが難しすぎる場合や、コンテキスト ウィンドウに収まらないほど例が多すぎる場合に、例を使ってモデルに何かを行う方法を示したい場合など。これらは、自然言語をクエリしたり、モデルに特定の声や口調で話すように指導したりするなど、多くのエッジ ケースを含むシナリオ。
- 待ち時間を短縮したい場合。長いプロンプトは処理に時間がかかることがありますが、ファインチューニングを行うことで、それらの長いプロンプトをモデル自体に移動できる。
Getting started with fine tuning on Azure ~ファインチューニングをAzureで開始しよう
There are two parts to fine tuning: training your fine-tuned model and using your newly customized model for inference.
ファインチューニングには 2 つの部分があります。1 つはファインチューニングされたモデルのトレーニング、もう 1 つは推論に新しくカスタマイズされたモデルを使用することです。
学習と推論ですね。
学習:
基本モデル、トレーニングおよび検証データを指定し、ハイパーパラメーターを設定すれば準備完了です。シンプルな GUI としてAzure OpenAI Studioを使用することも、より高度なユーザーはREST APIまたはOpenAI Python SDKを使用することもできます。
ファインチューニングは、マネージド サービスとして提供されるため、コンピューティング リソースや容量の管理について心配する必要はありません。ジョブを送信すると、微調整の実行が成功した場合に料金が発生するのは、アクティブなトレーニング時間だけであり、15 分間隔で請求されます。価格は選択した基本モデルによって異なります。Babbage-002 は 1 時間あたり 34 ドル、Davinci-002 は 1 時間あたり 68 ドル、Turbo は 1 時間あたり 102 ドルです。
学習のコストは上記のような形になるようです。
推論:
トレーニング ジョブが成功すると、新しいモデルがリソース内で使用できるようになります。モデルを推論に使用する準備ができたら、カスタマイズしたモデルを他の OpenAI LLM と同じようにデプロイできます。
微調整されたモデルには、時間単位のホスティング料金と、入力データと出力データのトークンベースの料金が適用されます。
モデル | 時間ごとのホスティング | 入力トークン | 出力トークン |
---|---|---|---|
Babbage-002 | $1.70 | $0.0004 / 1k | $0.0004 / 1k |
Davinci-002 | $3.00 | $0.0020 / 1k | $0.0020 / 1k |
GPT-3.5-Turbo | $7.00 | $0.0015 / 1,000 | $0.0020 / 1k |
OpenAI社のプライス表は以下の通りです。 コストの考え方が結構違います。
Azure Machine Learning ではファインチューニングも可能です。
モデルの開発、監視、デプロイのための Azure Machine Learning Studio にすでに慣れている場合は、 AML ワークフローで既存のモデルに微調整を統合できます。
Azure上で利用できる機械学習ツールであるAzure Machine Learningでもファインチューニングは可能なので、日頃Azureを利用される方はAzure Machine Learningの使用を検討されるといいかもしれません。
Microsoft社が公開した記事をもとに、AzureでもGPT-3.5-Turboのファインチューニングができるようになったことと、どういう時にファインチューニングをすべきか、すべきではないかという判断基準を紹介しました。
執筆
AITC センター長
深谷 勇次