見出し画像

Azure OpenAI ServiceにおけるDirect Preference Optimization機能のパブリックプレビュー発表

Microsoft community blog が良かったので翻訳してみた。

Announcing Public Preview of Direct Preference Optimization Capabilities with Azure OpenAI Service | Microsoft Community Hub

NandiniMuralidharan

この記事のポイント

  • Direct Preference Optimization (DPO): 報酬モデルを必要とせず、人間の好みに基づいてモデル重みを直接最適化する新たな手法。バイナリな好み(正/不正)の学習で高速かつ効率的なアラインメントを実現し、RLHF同等の効果を持ちながら計算負荷を軽減。

  • データセットと利用手順: 「input」「preferred_output」「non_preferred_output」を含む独自フォーマットでデータを用意し、Azure AI Foundryポータル上でDPOを選択、データセットをアップロード、ハイパーパラメータ(特にBeta値)を調整することで、GPT-4oモデルやSFT済みモデルへの好み合わせ(preference tuning)が可能。

  • メリットと価格: RLHFに比べシンプルかつ安定、計算リソース削減、バイアス軽減などの利点があり、価格はgpt-4o-miniやgpt-4oのSFTと同等。さらに、一部状況ではDPO前にSFTを行うことで、より望ましい微調整が可能。


私たちは、Azure OpenAI Serviceにおいて画期的な新機能「Direct Preference Optimization (DPO)」のパブリックプレビューをご紹介できることを大変嬉しく思います。この新たな機能により、大規模言語モデルを人間の好みに合わせて調整(アラインメント)するプロセスが革新され、顧客が高品質な学習データセットを容易に生成できるようになります。


Direct Preference Optimization (DPO)とは何か?

Direct Preference Optimizationは、大規模言語モデルを人間の嗜好に合わせてモデル重みを直接調整する革新的なアラインメント手法です。RLHF(Reinforcement Learning from Human Feedback)のように報酬モデルを用意する必要がなく、バイナリな好み(正/不正といった単純な二択)に基づいて学習を行います。これにより、DPOはRLHFと同等のアラインメント効果を保ちながら、計算的負荷を軽減し、より高速な学習を可能にします。


DPOが有用な理由

DPOは、明確な正解がない状況や、トーン、スタイル、特定のコンテンツ指向といった主観的要素が重要となる場合に特に効果を発揮します。この手法により、モデルは「望ましい(好まれる)」例と「望ましくない(好まれない)」例の両方から学習し、最終的に人間の期待により近い出力を生成できるようになります。

シンプルさ

DPOは、RLHFのように報酬モデルを別途作成する必要がありません。これにより、最適化プロセスの複雑さが大幅に軽減されます。

安定性

人間の嗜好に直接基づいてポリシーを最適化することで、複数のモデルを訓練・維持する際の不安定性を回避できます。この結果、一貫性が高く信頼性のある出力が得られます。

効率性

DPOは報酬モデルを持たないため、RLHFに比べて計算コストが大幅に削減されます。これにより、学習の収束が速く、計算リソースのオーバーヘッドも低減されます。

バイアス軽減

DPOは、人間の好みを直接最適化プロセスに取り込むことで、モデル出力に潜む意図しないバイアスの軽減に役立ちます。これにより、モデルはより望ましく、倫理的にも適合した出力を生成しやすくなります。

総合的に、DPOは、伝統的な手法に代わる簡易で安定かつ効率的なアプローチであり、人間の期待や価値観により適合した言語モデルの微調整を可能にします。


DPO用データセットフォーマット

DPO用のデータセット形式は、SFT(Supervised Fine Tuning)とは異なります。
顧客は「conversation」としてシステムメッセージと初期ユーザーメッセージを提供し、その後に「preferred_output(好ましい出力)」と「non_preferred_output(好ましくない出力)」をペアで指定します。このデータセットには3つのトップレベルフィールドがあります:

  • `input`

  • `preferred_output`

  • `non_preferred_output`

`preferred_output`および`non_preferred_output`内の各要素には、少なくとも1つのアシスタントメッセージが含まれ、ロールは(assistant, tool)のみ利用可能です。

DPO用データセット例

The dataset format for DPO differs from SFT. Customers provide a "conversation" containing the system message and the initial user message, followed by "completions" with paired preference data. . The dataset includes three top-level fields: "input," "preferred_output," and "non_preferred_output." Each element in the preferred_output/non_preferred_output must contain at least one assistant message and can only have roles in (assistant, tool).

Example for DPO:
{"input": {"messages": [{"role": "system", "content": "You are a chatbot assistant. Given a user question with multiple choice answers, provide the correct answer."}, {"role": "user", "content": "Question: One year, the oak trees in a park began producing more acorns than usual. The next year, the population of chipmunks in the park also increased. Which best explains why there were more chipmunks the next year? Answer choices: A: Shady areas increased., B: Food sources increased., C: Oxygen levels increased., D: Available water increased."}]}, "preferred_output": [{"role": "assistant", "content": "B: Food Sources Increased."}], "non_preferred_output": [{"role": "assistant", "content": "A: shady areas increased."}]}

Example for SFT:

{"messages": [{"role": "system", "content": "You are a chatbot assistant. Given a user question with multiple choice answers, provide the correct answer."}, {"role": "user", "content": "Question: Which characteristic of a cheetah is more likely to be learned rather than inherited? Answer choices: A: speed, B: a spotted coat, C: hunting strategies, D: claws that do not retract"}, {"role": "assistant", "content": "C: Hunting Strategies"}]}

対応モデルおよび対応リージョン

現在、DPOは GPT-4o モデルに対応しています。また、近い将来、GPT-4o-mini モデルにも対応予定です。ユーザーは、GPT-4o のベースモデル、または既に SFT 済みの GPT-4o モデルを、この DPO 機能でさらに好み合わせ(preference tuning)することが可能です。


DPO の利用開始方法

  1. 上記の形式に従い、好みのデータフォーマットで学習用データセットを準備します。

  2. Azure AI Foundry ポータルから対象モデルと「Direct Preference Optimization」を選択し、Azure OpenAI Service での調整を行います。

  3. 学習用および検証用データセットをアップロードします。

  4. 必要に応じてハイパーパラメータを選択します(デフォルト推奨)。

  5. 選択内容を確認し、ファインチューニングジョブを作成します。


ハイパーパラメータ:Beta について

DPO で新たに導入されたハイパーパラメータ「Beta」は、DPO ロスの温度パラメータであり、通常は 0.1~0.5 の範囲で設定します。

  • Beta 値が小さいほど、参照モデルからの逸脱を許容しやすくなります。

  • Beta 値が大きいほど、参照モデルへの依存度が高まります。


価格

DPO の価格は、gpt-4o-mini および gpt-4o モデルの教師ありファインチューニング(SFT)と同等となります。

プロチップ: データセットが元の分布から大きく外れている場合など、DPO の前に好ましい回答をもとにした SFT を行うことが望まれる場合があります。これは Azure AI Foundry ポータルから簡易に実行可能です。


私たちは、この新機能をお客様に提供できることを大変楽しみにしており、Direct Preference Optimization を用いた新たなモデル強化の取り組みを見ることを心待ちにしています。

詳細なドキュメンテーションは近日中に公開予定です。

ぜひ今後のアップデートにご注目ください。それでは、より良いファインチューニング体験をお楽しみください!


今すぐ始めるには

  • Azure OpenAI Service の詳細を見る

  • Azure OpenAI によるファインチューニングのハウツーガイドを見る

  • Azure AI Foundry で試してみる


※本ブログは、 “Announcing Public Preview of Direct Preference Optimization Capabilities with Azure OpenAI Service | Microsoft Community Hub” を翻訳してます。気になる箇所があれば、原文を確認ください。


いいなと思ったら応援しよう!