模型概述
模型特點
模型能力
使用案例
🚀 Starling-LM-7B-alpha
Starling-LM-7B-alpha 是一個基於強化學習從AI反饋(RLAIF)訓練的開源大語言模型。它利用了新的GPT - 4標註排序數據集,結合新的獎勵訓練和策略調整管道,在MT Bench測試中表現出色,僅次於OpenAI的GPT - 4和GPT - 4 Turbo。
🚀 快速開始
Starling-LM-7B-alpha 是從 Openchat 3.5 微調而來的語言模型,使用獎勵模型 berkeley-nest/Starling-RM-7B-alpha 和策略優化方法 優勢誘導策略對齊(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 |
✨ 主要特性
- 基於RLAIF訓練:利用強化學習從AI反饋(RLAIF)進行訓練,有效提升模型的性能。
- 使用新數據集:藉助新的GPT - 4標註排序數據集 berkeley-nest/Nectar 進行訓練。
- 開源發佈:在HuggingFace上發佈了排序數據集 Nectar、獎勵模型 Starling-RM-7B-alpha 和語言模型 Starling-LM-7B-alpha,並在LMSYS Chatbot Arena 提供在線演示。
📦 安裝指南
文檔未提供具體安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
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
# Single-turn conversation
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)
## Multi-turn conversation
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)
### Coding conversation
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)
高級用法
文檔未提供高級用法相關代碼,故不展示。
📚 詳細文檔
模型基本信息
屬性 | 詳情 |
---|---|
模型類型 | 基於強化學習從AI反饋(RLAIF)微調的語言模型 |
訓練數據 | berkeley-nest/Nectar |
微調基礎模型 | Openchat 3.5(基於 Mistral - 7B - v0.1) |
獎勵模型 | berkeley-nest/Starling-RM-7B-alpha |
策略優化方法 | 優勢誘導策略對齊(APA) |
對話模板
模型遵循與 Openchat 3.5 相同的對話模板:
import transformers
tokenizer = transformers.AutoTokenizer.from_pretrained("openchat/openchat_3.5")
# Single-turn
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]
# Multi-turn
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]
# Coding Mode
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]
重要提示和使用建議
⚠️ 重要提示
請使用上述提供的準確對話模板,否則模型性能會下降。在極少數情況下,模型輸出可能會冗長,請考慮設置 temperature = 0 以減少這種情況的發生。
💡 使用建議
模型遵循與 Openchat 3.5 相同的對話模板和用法,更多詳細信息請參考其模型卡片。此外,模型在LMSYS Chatbot Arena 上提供免費測試。
開放大語言模型排行榜評估結果
詳細結果可查看 此處
指標 | 值 |
---|---|
平均值 | 59.92 |
AI2推理挑戰(25次少樣本學習) | 61.26 |
HellaSwag(10次少樣本學習) | 81.99 |
MMLU(5次少樣本學習) | 61.50 |
TruthfulQA(0次少樣本學習) | 41.53 |
Winogrande(5次少樣本學習) | 78.06 |
GSM8k(5次少樣本學習) | 35.18 |
🔧 技術細節
文檔未提供具體技術實現細節,故跳過此章節。
📄 許可證
數據集、模型和在線演示僅供非商業研究使用,需遵守LLaMA的數據蒸餾 許可證、OpenAI生成數據的 使用條款 以及ShareGPT的 隱私政策。如果發現任何潛在違規行為,請聯繫我們。
致謝
感謝伯克利的Wei - Lin Chiang對博客和項目提供的詳細反饋。感謝 LMSYS組織 對 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}
}



