🚀 Starling-LM-7B-alpha
Starling-7Bは、AIフィードバックによる強化学習(RLAIF)で訓練されたオープンな大規模言語モデル(LLM)です。このモデルは、新しいGPT - 4ラベル付きランキングデータセットと独自の報酬訓練およびポリシーチューニングパイプラインの力を活用しています。Starling-7B-alphaは、GPT - 4を評価者とするMT Benchで8.09点を獲得し、OpenAIのGPT - 4とGPT - 4 Turboを除くすべてのモデルを上回っています。
🚀 クイックスタート
Starling-LM-7B-alphaは、Openchat 3.5 をベースに、報酬モデル berkeley-nest/Starling-RM-7B-alpha とポリシー最適化手法 advantage-induced policy alignment (APA) を用いて訓練された言語モデルです。以下に評価結果を示します。
モデル |
チューニング手法 |
MT Bench |
AlpacaEval |
MMLU |
GPT-4-Turbo |
? |
9.32 |
97.70 |
|
GPT-4 |
SFT + PPO |
8.99 |
95.28 |
86.4 |
Starling-7B |
C-RLFT + APA |
8.09 |
91.99 |
63.9 |
Claude-2 |
? |
8.06 |
91.36 |
78.5 |
GPT-3.5-Turbo |
? |
7.94 |
89.37 |
70 |
Claude-1 |
? |
7.9 |
88.39 |
77 |
Tulu-2-dpo-70b |
SFT + DPO |
7.89 |
95.1 |
|
Openchat-3.5 |
C-RLFT |
7.81 |
88.51 |
64.3 |
Zephyr-7B-beta |
SFT + DPO |
7.34 |
90.60 |
61.4 |
Llama-2-70b-chat-hf |
SFT + PPO |
6.86 |
92.66 |
63 |
Neural-chat-7b-v3-1 |
SFT + DPO |
6.84 |
84.53 |
62.4 |
Tulu-2-dpo-7b |
SFT + DPO |
6.29 |
85.1 |
|
詳細な議論については、ブログ記事 をご覧ください。また、近日公開予定のコードと論文もお楽しみに!
- ブログ: https://starling.cs.berkeley.edu/
- 論文: 近日公開!
- コード: 近日公開!
✨ 主な機能
- 新しいGPT - 4ラベル付きランキングデータセット berkeley-nest/Nectar を活用。
- 独自の報酬訓練とポリシーチューニングパイプラインを使用。
- MT Benchで高いスコアを獲得し、多くのモデルを上回る性能を発揮。
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略します。
💻 使用例
基本的な使用法
import transformers
tokenizer = transformers.AutoTokenizer.from_pretrained("berkeley-nest/Starling-LM-7B-alpha")
model = transformers.AutoModelForCausalLM.from_pretrained("berkeley-nest/Starling-LM-7B-alpha")
def generate_response(prompt):
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
outputs = model.generate(
input_ids,
max_length=256,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
response_ids = outputs[0]
response_text = tokenizer.decode(response_ids, skip_special_tokens=True)
return response_text
prompt = "Hello, how are you?"
single_turn_prompt = f"GPT4 Correct User: {prompt}<|end_of_turn|>GPT4 Correct Assistant:"
response_text = generate_response(single_turn_prompt)
print("Response:", response_text)
prompt = "Hello"
follow_up_question = "How are you today?"
response = ""
multi_turn_prompt = f"GPT4 Correct User: {prompt}<|end_of_turn|>GPT4 Correct Assistant: {response}<|end_of_turn|>GPT4 Correct User: {follow_up_question}<|end_of_turn|>GPT4 Correct Assistant:"
response_text = generate_response(multi_turn_prompt)
print("Multi-turn conversation response:", response_text)
prompt = "Implement quicksort using C++"
coding_prompt = f"Code User: {prompt}<|end_of_turn|>Code Assistant:"
response = generate_response(coding_prompt)
print("Coding conversation response:", response)
高度な使用法
このREADMEに高度な使用法のコード例が記載されていないため、この部分は省略します。
📚 ドキュメント
使用方法
⚠️ 重要提示
モデルには以下に示す正確なチャットテンプレートを使用してください。そうしないと、性能が低下します。まれにモデルの出力が冗長になることがあります。これを減らすには、temperature = 0に設定することを検討してください。
当社のモデルは、Openchat 3.5 と同じチャットテンプレートと使用方法に従っています。詳細については、彼らのモデルカードを参照してください。
また、当社のモデルはLMSYSの Chatbot Arena で無料でテストできます。
会話テンプレートはOpenchat 3.5と同じです。
import transformers
tokenizer = transformers.AutoTokenizer.from_pretrained("openchat/openchat_3.5")
tokens = tokenizer("GPT4 Correct User: Hello<|end_of_turn|>GPT4 Correct Assistant:").input_ids
assert tokens == [1, 420, 6316, 28781, 3198, 3123, 1247, 28747, 22557, 32000, 420, 6316, 28781, 3198, 3123, 21631, 28747]
tokens = tokenizer("GPT4 Correct User: Hello<|end_of_turn|>GPT4 Correct Assistant: Hi<|end_of_turn|>GPT4 Correct User: How are you today?<|end_of_turn|>GPT4 Correct Assistant:").input_ids
assert tokens == [1, 420, 6316, 28781, 3198, 3123, 1247, 28747, 22557, 32000, 420, 6316, 28781, 3198, 3123, 21631, 28747, 15359, 32000, 420, 6316, 28781, 3198, 3123, 1247, 28747, 1602, 460, 368, 3154, 28804, 32000, 420, 6316, 28781, 3198, 3123, 21631, 28747]
tokens = tokenizer("Code User: Implement quicksort using C++<|end_of_turn|>Code Assistant:").input_ids
assert tokens == [1, 7596, 1247, 28747, 26256, 2936, 7653, 1413, 334, 1680, 32000, 7596, 21631, 28747]
🔧 技術詳細
このREADMEに具体的な技術詳細が記載されていないため、このセクションは省略します。
📄 ライセンス
データセット、モデル、およびオンラインデモは、研究用のプレビューであり、非商用利用のみを目的としています。これは、LLaMAのデータ蒸留 ライセンス、OpenAIによって生成されたデータの 利用規約、およびShareGPTの プライバシーポリシー に従うものとします。潜在的な違反行為を発見した場合は、お問い合わせください。
謝辞
ブログとプロジェクトに対する詳細なフィードバックを提供してくれたバークレー大学のWei - Lin Chiang氏に感謝します。また、LMSYS Organization が lmsys-chat-1M データセット、評価、およびオンラインデモに対して提供した支援に感謝します。さらに、当プロジェクトの開発に使用したデータセットとベースモデルを提供してくれたオープンソースコミュニティの皆様に感謝します。これには、Anthropic、Llama、Mistral、Hugging Face H4、LMSYS、OpenChat、OpenBMB、Flan、およびShareGPTなどが含まれます。
引用
@misc{starling2023,
title = {Starling-7B: Improving LLM Helpfulness & Harmlessness with RLAIF},
url = {},
author = {Zhu, Banghua and Frick, Evan and Wu, Tianhao and Zhu, Hanlin and Jiao, Jiantao},
month = {November},
year = {2023}
}