🚀 Snorkel-Mistral-PairRM-DPO
このモデルは、会話用途に最適化された大規模言語モデルです。独自のアライメント手法を用いることで、一般的なユーザーの要望に合致した応答を生成することができます。
🚀 クイックスタート
リリースブログはこちらで読むことができます: Snorkel AI Blog
モデルを Together AI のプレイグラウンドで試すことができます: https://api.together.xyz/playground/chat/snorkelai/Snorkel-Mistral-PairRM-DPO 。
このモデルは、会話目的に最適化されています。楽しんでください!
また、このモデルは Together AI API を通じても利用できます。モデルのAPI文字列は snorkelai/Snorkel-Mistral-PairRM-DPO
です。
Together AI チームがエンドポイントにこのモデルを追加してくれたことに特別な感謝を表します。
さらに、HF推論エンドポイントも提供しています。誰でもこのエンドポイントを使ってモデルをテストすることができます。
最初はアクティブ化に数分かかる場合がありますが、最終的にはHFの7Bモデルのテキスト推論エンドポイントの標準速度で動作します。
推論速度はHFエンドポイントのパフォーマンスに依存し、Snorkelの提供内容とは関係ありません。
このエンドポイントは初期の試用目的で設計されており、継続的な本番環境での使用には適していません。
💻 使用例
基本的な使用法
import requests
API_URL = "https://t1q6ks6fusyg1qq7.us-east-1.aws.endpoints.huggingface.cloud"
headers = {
"Accept" : "application/json",
"Content-Type": "application/json"
}
def query(payload):
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
output = query({
"inputs": "[INST] Recommend me some Hollywood movies [/INST]",
"parameters": {}
})
📚 詳細ドキュメント
データセット
学習データセット: snorkelai/Snorkel-Mistral-PairRM-DPO-Dataset
このモデルでは、UltraFeedback のプロンプトのみを利用しています。外部のLLM応答は使用していません。
手法
- 20,000のサブセットから各プロンプトに対して5つの応答バリエーションをLLMで生成します。最初は Mistral-7B-Instruct-v0.2 を使用します。
- PairRM を適用して応答の再ランキングを行います。
- 上位(選択された)と下位(拒否された)の応答に対してDirect Preference Optimization (DPO) を適用してLLMを更新します。
- このLLMを次の反復のベースモデルとして使用し、合計3回繰り返します。
この概要は、私たちのアプローチの高レベルな要約です。
今後数週間で、より詳細な結果と知見を Snorkelブログ で公開する予定です。
プロンプトの形式はMistralモデルに従います。
[INST] {prompt} [/INST]
学習レシピ
- 提供されたデータは、Hugging Faceの Zephyrレシピ と互換性があるようにフォーマットされています。
"train/test_iteration_{n}"
を使用してn回目のDPO反復を実行しました。
主要前提
- 専門化の必要性: ほとんどの企業ユースケースでは、LLMを「そのまま」使用すると本番品質に達しないため、追加の微調整とアライメントが必要です。
- モデル構築の容易さ: ランキング/スコアリング/分類モデルを作成する方が、長文応答の高品質な手動アノテーションデータセットを開発するよりも簡単です。
- アライメントレシピ: 小規模で専門化された教師モデル(報酬モデル)を使用することで、LLMを特定の軸に沿って段階的にアライメントすることができます。
アプリケーション
顧客は、LLMを非常に具体的なユースケースにアライメントさせる必要がありますが、AlpacaEval 2.0のリーダーボードは、LLMがユーザーの指示に従う能力を測定しています。
このデモンストレーションでは、アライメントの一般的なアプローチに焦点を当てています。
そのため、汎用的な報酬モデルである高性能な PairRMモデル を使用しています。
ベースのLLMとして Mistral-7B-Instruct-v0.2 モデルを使用しています。
企業のニーズを反映した専用の内部報酬モデルを構築する興味がある場合は、Snorkel AIチームにお問い合わせいただくか、
Enterprise LLM Summit: Building GenAI with Your Data on January 25, 2024 に参加を検討し、
「GenAIにおける人間の嗜好とアライメントをプログラム的に拡大する」方法を学んでください。
結果
Alpaca-Eval 2.0 での結果:
上記の手法を適用した後:
- このモデルのスコアは 30.22 で、公開時点でオープンソースのベースモデルとしては3位で最も高いスコアでした。
- PairRM-best-of-16でモデルの出力を後処理した場合(16個の応答を生成し、PairRMによって最も高いスコアの応答を選択する)、スコアは 34.86 で、2位にランクインしました。
リーダーボードで1位のモデルは "gpt-4-turbo" で、これは最適な応答の判定者でもあります。
Alpaca-Eval 2.0のベンチマークは、LLMの全能力とパフォーマンスを完全に捉えることはできません。
しかし、現在の作業では、一般的な「人間の嗜好」にアライメントさせることを目的としているため、Alpaca-Eval 2.0は適切で代表的なベンチマークとして機能します。
今後は、新しいアライメント軸に関するコミュニティからのさらなる貢献が期待され、他の適切なベンチマークを使用した評価も行われる予定です。
Alpaca-Eval 2.0の評価者である "gpt-4-turbo" は、長い応答に対してバイアスがあります。
この傾向は、選択した報酬モデルにも存在する可能性があり、その結果、DPO反復後にモデルがより長い応答を生成するようになり、
これがリーダーボードでの高いランクにつながる要因の1つとなっています。
将来的な作業では、応答の長さやその他の関連メトリクスを制御する措置を含めることができます。
制限事項
このモデルは、小規模な専用報酬モデルを使用してLLMをプログラム的にアライメントできることを迅速に実証するものです。
モデレーションメカニズムは搭載されていません。
モデルがガードレールを尊重する最適な方法を探求し、モデレーションされた出力が必要な環境でのデプロイを可能にするために、引き続き研究コミュニティや顧客と協力していきます。
同時期の研究と謝辞
GGUFバージョン
Snorkel-Mistral-PairRM-DPOのGGUFモデルバージョンは、andrew-cartwheel または brittlewis12 から入手できます。
ExllamaV2量子化モデルバージョンは、bartowski から入手できます。
上記のコミュニティメンバーがGGUFモデルバージョンを提供してくれたことに感謝します。
Snorkel AIチーム
Hoang Tran, Chris Glaze, Braden Hancock
この研究が役に立った場合は、是非 引用 してください。
@techreport{viethoangtranduong,
author = {Tran, Hoang and Glaze, Chris, and Hancock, Braden},
title = {Iterative DPO Alignment},
institution = {Snorkel AI},
year = {2023},
}
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。