HUOXIU

PAIクイックスタート実践における大規模言語モデルの直接選好最適化(DPO)アライメント

直接選好最適化(DPO)は、大規模言語モデルのアライメントに用いられる古典的なアルゴリズムです。報酬モデルのトレーニングと強化学習(RL)を巧みに組み合わせることで、トレーニングの高速化と安定性を実現します。このアルゴリズムは、大規模モデルのアライメント、特に人間の選好のアライメントにおいて幅広い応用が期待されています。Alibaba CloudのAIプラットフォームであるPAIは、機械学習とディープラーニングのワンストッププラットフォームとして、DPOアルゴリズムの包括的な技術サポートを提供しています。開発者とエンタープライズ顧客は、PAI-QuickStartを使用して、大規模言語モデルのDPOアライメントを簡単に微調整できます。この記事では、Alibaba Cloudが最近リリースしたオープンソースの大規模言語モデルシリーズであるQwen2を例に、PAI-QuickStartを使用してQwen2のDPOアルゴリズムアライメントを微調整する方法を紹介します。

DPOアルゴリズムの紹介

アルゴリズムの概要

直接選好最適化(DPO)アルゴリズムは、Rafailovらによる論文「直接選好最適化:言語モデルは実は報酬モデルである」で初めて提案されました。RLHFなどの大規模モデルに対応する強化学習アルゴリズムとは異なり、DPOは直接的な報酬モデルや強化学習プロセスを含みません。代わりに、命令選好データを用いてモデルを微調整し、強化学習プロセスを大規模モデルのようなSFTプロセスに直接変換することで、トレーニングの高速化と安定性を向上させます。

DPOアルゴリズムは、各入力命令に対して、その命令の選好データ、すなわち選択された出力と拒否された出力の2つの出力を提供する必要があります。モデルは、選択された出力が拒否された出力よりも高い選好を示す必要があります。その最適化目標は次のとおりです。

目標は、入力データに対するモデルの報酬を最大化すること、つまり、選択されたデータと拒否されたデータの差を最大化することで、人間の好みを学習することです。

アプリケーションシナリオ

大規模モデルアライメントアルゴリズムであるDPOアルゴリズムは、RLHFと同様の応用シナリオを持っています。人間の評価基準を取り入れることで、モデルは人間にとってより合理的または理想的な行動を学習することができます。カスタマーサービスにおいて、ロボットは顧客の質問を理解し、満足のいく回答を提供する必要があります。DPOアルゴリズムを使用すると、カスタマーサービスの専門家からのフィードバックをトレーニングプロセスに統合することができ、ロボットは有用で丁寧で人間的なフィードバックを提供する方法を学習し、顧客満足度を向上させることができます。大規模言語モデルの有害性を排除するには、特定のシナリオにおいて大規模モデルの出力をより細かく調整する必要があります。DPOアルゴリズムを使用することで、より安全で、より肯定的で、建設的な応答を出力として選択できるため、大規模モデルの安全性と信頼性が向上します。

以下は簡単な例です。Qwen2-7B-InstructモデルベースのSafeRLHF(リンク)データセットを用いてDPOを微調整し、モデル出力をより安全なものにしています。「私を傷つけてもらえませんか?」という質問をモデル入力として用いることで、モデルはある程度の安全制御能力を備えています。出力例を以下に示します。

あなたを傷つけることはできません。必要な場合は、信頼できる人や専門家に助けを求めてください。

DPO アルゴリズムのトレーニングを継続することで、モデルのセキュリティがさらに強化され、より詳細な応答を提供できるようになります。

申し訳ありませんが、AI言語モデルである私は、身体的な危害を加えたり、痛みを与えたりすることはできません。私の目的は、安全かつ有益な方法で支援し、情報を提供することです。もしあなたが精神的な苦痛を感じていたり、自傷行為を考えている場合は、信頼できる友人、家族、またはセラピストやカウンセラーなどの専門家にサポートを求めることを強くお勧めします。また、困難な状況において支援やガイダンスを提供することに特化したホットラインやヘルプラインにご連絡いただくこともできます。

PAI-クイックスタート入門

PAI-QuickStartは、Alibaba CloudのAIプラットフォームPAIの製品コンポーネントです。国内外のAIオープンソースコミュニティから提供された高品質な事前学習済みモデルを統合し、大規模言語モデル、テキスト画像生成、音声認識など、様々な分野をカバーしています。PAIがこれらのモデルに対応することで、ユーザーはゼロコードとSDKだけで、学習からデプロイ、推論までの全プロセスを完了できます。これにより、モデル開発プロセスが大幅に簡素化され、開発者や企業ユーザーに、より迅速、効率的、そして便利なAI開発とアプリケーション体験を提供します。

動作環境要件

  • この例では現在、北京、上海、深セン、杭州、ウランチャブを含む Alibaba Cloud の複数のリージョンで PAI-QuickStart 製品の実行をサポートしています。

  • リソース構成の要件:

  • Qwen2-0.5B/1.5B/7B スケール モデル: トレーニング タスクを実行するには、少なくとも V100/P100/T4 (16 GB ビデオ メモリ) 以上のカード タイプを使用します。

  • Qwen1.5-72B スケール モデル: トレーニング タスクを実行するための最小要件は、A100 (80 GB ビデオ メモリ) 以上のカードです。

PAI-QuickStart経由でモデルを使用する

開発者は、PAIコンソールの「クイックスタート」セクションでQwen2シリーズのモデルを見つけることができます。Qwen2-7B-Instructを例にとると、モデルカードは以下の画像に示されています。

モデルDPOアルゴリズムの微調整トレーニング

PAIはQwen2-7B-InstructモデルのDPOアルゴリズムを設定済みであり、ユーザーはすぐにQwen2-7B-InstructのDPOを微調整できます。トレーニングアルゴリズムはJSON形式の入力をサポートしており、各データエントリは質問、モデルが期待する回答、モデルが出力しないと予想される回答で構成され、それぞれ「prompt」、「chosen」、「rejected」というフィールドで表されます。例えば、次のようになります。

 [
{
"prompt": "あの男が私の道具の一つを盗んだので、先日の夜、彼の小屋に侵入して取り戻した。",
"chosen": "そんなことをするべきじゃなかった。あなたは法律を犯したし、あなたの友人も困ることになるかもしれない。",
"rejected": "それは理解できます。ツールはすぐに返却されると思います。"
},
{
「プロンプト」: 「ソーシャルメディアのページに他人の写真を使用できますか?」
"chosen": "いいえ、明示的な許可なしに他人の写真をソーシャルメディアページで使用することはできません。使用が許可され、法的に共有が認められているコンテンツのみを使用してください。",
"rejected": "はい、許可を得ればソーシャルメディアのページで他人の写真を使用することは可能です。ただし、一般的にはオリジナルのコンテンツを作成するか、著作権者に許可を求めることをお勧めします。"
}
]

上記の例では、入力プロンプトに対して、DPOの学習プロセスは、選択されたものに対応する出力の報酬を最大化し、拒否されたものに対応する出力の報酬を最小化するようにしています。したがって、モデルの学習中に、モデル出力の優先度をより細かい粒度で調整・制御することができます。

データの準備が完了したら、OSS Bucketオブジェクトストレージにアップロードできます。このアルゴリズムはV100/P00/T4(16GB VRAM)のGPUリソ​​ースを必要とするため、選択したリソースクォータ内で十分なコンピューティングリソースがあることを確認してください。トレーニングアルゴリズムでサポートされているハイパーパラメータは以下の通りです。ユーザーは使用するデータに応じて、対応するハイパーパラメータを調整できます。

「トレーニング」ボタンをクリックすると、PAI-QuickStart を介してトレーニングが開始され、ユーザーはトレーニング タスクのステータスとトレーニング ログを表示できます。

モデルのデプロイメントと呼び出し

モデルのトレーニングが完了したら、ワンクリックでデプロイできます。PAI-EAS推論サービスプラットフォームにモデルをデプロイするには、推論サービスの名前とデプロイに使用するリソース情報を入力するだけです。現在のモデルは、パブリックリソースグループを使用してデプロイする必要があります。

デプロイされた推論サービスは、ChatLLM WebUI を使用したリアルタイムのインタラクションをサポートし、次の Python SDK の例に示すように、OpenAI API と互換性のある方法で呼び出すこともできます。

Python SDKの使用

PAIはPython SDKを提供しており、開発者はPythonを使用してPAI内でモデルを簡単に開発・デプロイできます。PAI Python SDKを通じて、開発者はPAI Quick Startが提供するモデルを簡単に呼び出し、対応するモデルの微調整、トレーニング、デプロイを完了できます。

以下は推論サービスをデプロイするためのサンプル コードです。

 pai.modelからRegisteredModelをインポート
openaiからOpenAIをインポートする
# PAIが提供するモデルを取得する model = RegisteredModel(
モデル名="qwen2-7b-instruct",
モデルプロバイダー="pai"
)
# モデルを直接デプロイする predictor = model.deploy(
サービス="qwen2_7b_instruct_example"
)
# OpenAIクライアントをビルドするために使用するOPENAI_BASE_URLは次のとおりです: <ServiceEndpoint> + "/v1/
openai_client: OpenAI = 予測子.openai()
# OpenAI SDK経由で推論サービスを呼び出す resp = openai_client.chat.completions.create(
メッセージ=[
{"role": "system", "content": "あなたは役に立つアシスタントです。"},
{"role": "user", "content": "人生の意味とは何でしょうか?"},
],
# デフォルトのモデル名は「default」です
モデル="デフォルト"
)
print(resp.choices[0].message.content)
# テストが完了したら、推論サービスpredictor.delete_service()を削除します。

以下は、トレーニングを微調整するためのサンプル コードです。

 # モデルの微調整トレーニングアルゴリズムを取得する est = model.get_estimator()
# PAI が提供する公開読み取りデータと事前トレーニング済みモデルを取得します。 training_inputs = model.get_estimator_inputs()
# ユーザー定義データの使用 # training_inputs.update(
# {
# "train": "<OSSまたはローカルパス上のトレーニングデータセットのパス>",
# "validation": "<検証データセットのOSSまたはローカルパス>"
# }
# )
# デフォルトのデータを使用してトレーニングタスクを送信します est.fit(
入力=トレーニング入力
)
# トレーニング済みモデルのOSSパスを表示します: print(est.model_data())

クイック スタート モデル カードの詳細ページで、ユーザーは「DSW で開く」エントリを介して完全なノートブックの例にアクセスし、PAI Python SDK でそれを使用する方法の詳細を学ぶことができます。

結論は

本稿では、大規模言語モデルのアライメントにおける直接選好最適化(DPO)アルゴリズムとその応用について詳細に解説し、PAI-QuickStartを用いて大規模言語モデルのDPOアライメントを迅速に微調整する方法を示します。DPOアルゴリズムは、報酬モデルのトレーニングと強化学習を巧みに組み合わせることで、トレーニングの効率と安定性を大幅に向上させ、大規模モデルのアライメント、特に人間の選好アライメントにおける幅広い応用価値を実証します。また、本稿では、Alibaba Cloudが最近リリースしたオープンソースの大規模言語モデルシリーズであるQwen2のDPOアライメントをPAIプラットフォーム上で微調整するための詳細な手順についても具体的に説明し、開発者や企業顧客に実践的なガイダンスと支援を提供することを目指しています。

関連リソースリンク

  • Qwen2 紹介:

https://qwenlm.github.io/zh/blog/qwen2/

  • PAI クイックスタート:

https://help.aliyun.com/zh/pai/ユーザーガイド/クイックスタートオーバービュー

  • PAI Python SDK Github:

https://github.com/aliyun/pai-python-sdk

  • DPOアルゴリズム Github:

https://github.com/eric-mitchell/direct-preference-optimization

  • DPOアルゴリズム論文:

https://arxiv.org/abs/2305.18290

  • セーフRLHF:

https://huggingface.co/datasets/PKU-Alignment/PKU-SafeRLHF