以前にAzure OpenAI ServiceのChatGPTモデルのFine-Tuningについて記載しましたが、このFine-Tuningに継続的な微調整(Continuous fine-tuning)が追加されました。
つまり、以前作ったモデルに追加で学習をすることが出来るようになるということなので、早速試してみました。
概要
Microsoftのドキュメントでは、「微調整されたモデルを作成したら、さらに微調整を行いモデルを改良することができる」とあります。
Azure OpenAI Service を使用してモデルをカスタマイズする - Azure OpenAI | Microsoft Learn
追加データの用意
弊社のAIソリューションについて学習させるため、今回は以下の追加トレーニングデータを用意しました。
{"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "JBSが提供している生成AIのソリューションを教えて"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "日本ビジネスシステムズは生成AIのソリューションはありますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "JBSはGPTを利用したサービスはありますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "日本ビジネスシステムズはOpenAIを利用したサービスを提供していますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "JBSはAIチャットサービスのソリューションを提供していますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "日本ビジネスシステムズが提供している生成AIのソリューションを教えて"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "JBSは生成AIのソリューションはありますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "日本ビジネスシステムズはGPTを利用したサービスはありますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "JBSはOpenAIを利用したサービスを提供していますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]} {"messages": [{"role": "system", "content": "あなたは日本ビジネスシステムズ株式会社(略称:JBS)のアシスタントです。日本ビジネスシステムズのことに関して丁寧に答えます。"}, {"role": "user", "content": "日本ビジネスシステムズはAIチャットサービスのソリューションを提供していますか?"}, {"role": "assistant", "content": "アイプリシティチャット Powered by ChatGPT APIです。"}]}
なお、モデル作成時には10件以上のデータが必要でしたが、追加データについても10件以上の件数が必要でした。10件に満たない場合は以下のようなエラーが出ます。
追加のFine-Tuningの作成
Azure OpenAI Studioにアクセスしてカスタムモデルの作成を選択します。
基本モデルの種類の選択で、以前にFine-Tuningで作ったモデルを選択します。
追加でトレーニングデータを選択します。
検証データは特に選択せず次へ進みます。
詳細オプションもすべて既定を選択します。
トレーニングジョブを開始するを選択します。
学習結果の確認
以前のモデルでの確認
まずは以前のモデルで試してみます。
住所の質問に対して学習の結果が確認できますが、JBSの生成AIソリューションには答えられません。
Continuous fine-tuningしたモデルでの確認
新しくContinuous fine-tuningしたモデルに聞いてみます。
ソリューションに答えてくれません。
学習済みであった住所について聞いてみますが、こちらも答えられないようになってしまいました。
考察およびまとめ
この結果でMicrosoftに問い合わせしたところ、Catastrophic forgettingが起きたのではないかという見解でした。
Catastrophic forgettingは新しい情報を学習する際に、以前に学習した情報を完全に忘れてしまうことで、ニューラルネットワークなどの機械学習モデルが新しいデータを学習するとき、以前の学習データの一部を上書きしてしまい、それによって以前の学習結果が失われてしまうことです。
Continuous fine-tuningの使い方としては新しい応答などを学習させる目的ではなく言い回しなどの微調整に利用するのが正しい使い方かと考えます。
そもそも、Microsoftはドメイン知識をモデルに追加したい場合はRAGなどを推奨しています。
Azure OpenAI Service 微調整の考慮事項 - Azure AI services | Microsoft Learn
現状でContinuous fine-tuningを使う状況はかなり少ないと感じています。
新しい語彙などを学習させるための継続的な学習であればMLOpsの手法を用いて以前のデータと追加のデータを足し合わせて最初からfine-tuningを行い新モデルと旧モデルを比較する必要があると考えます。
上田 英治(日本ビジネスシステムズ株式会社)
エンジニアとしてインフラ構築、システム開発やIoT基盤構築等を経験し、現在はクラウドアーキテクトとして先端技術の活用提案や新規サービスの立ち上げを担当。
担当記事一覧