模型概述
模型特點
模型能力
使用案例
🚀 Starling-LM-7B-alpha
Starling-LM-7B-alpha是一個基於AI反饋強化學習(RLAIF)訓練的開源大語言模型。它利用了新的GPT - 4標註排序數據集和獎勵訓練及策略調整管道,在MT Bench測試中表現出色。
🚀 快速開始
Starling-7B是一個通過AI反饋強化學習(RLAIF)訓練的開源大語言模型(LLM)。該模型藉助了新的GPT - 4標註排序數據集berkeley - nest/Nectar以及新的獎勵訓練和策略調整管道的能力。Starling - 7B - alpha在以GPT - 4為評判的MT Bench測試中得分8.09,除了OpenAI的GPT - 4和GPT - 4 Turbo之外,超越了目前MT - Bench上的所有模型。我們在HuggingFace上發佈了排序數據集Nectar、獎勵模型Starling - RM - 7B - alpha和語言模型Starling - LM - 7B - alpha,並在LMSYS Chatbot Arena上提供了在線演示。請持續關注我們即將發佈的代碼和論文,它們將提供整個過程的更多細節。
屬性 | 詳情 |
---|---|
開發者 | Banghua Zhu * , Evan Frick * , Tianhao Wu * , Hanlin Zhu和Jiantao Jiao |
模型類型 | 通過RLHF / RLAIF微調的語言模型 |
許可證 | 在模型不用於與OpenAI競爭的條件下,遵循Apache - 2.0許可證 |
微調基礎模型 | Openchat 3.5(基於Mistral - 7B - v0.1) |
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 |
更多詳細討論,請查看博客文章,並持續關注即將發佈的代碼和論文!
- 博客:https://starling.cs.berkeley.edu/
- 論文:即將發佈!
- 代碼:即將發佈!
✨ 主要特性
- 基於AI反饋強化學習(RLAIF)訓練,提升模型的實用性和無害性。
- 利用新的GPT - 4標註排序數據集,增強模型性能。
- 在MT Bench測試中取得優異成績,超越眾多同類模型。
💻 使用示例
基礎用法
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)
高級用法
# 高級用法可根據具體業務場景對模型的參數進行更細緻的調整,例如修改max_length、temperature等參數以滿足不同的生成需求。
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=512, # 增加最大生成長度
temperature=0.7, # 調整溫度參數
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 = "請詳細介紹一下人工智能的發展歷程"
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)
📚 詳細文檔
使用說明
⚠️ 重要提示
請使用以下確切的聊天模板,否則模型性能會下降。在極少數情況下,模型輸出可能會冗長,請考慮設置temperature = 0以減少這種情況的發生。
本模型遵循與Openchat 3.5相同的聊天模板和用法。更多詳細信息,請參考其模型卡片。此外,本模型在LMSYS Chatbot Arena上提供免費測試。
對話模板與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]
📄 許可證
數據集、模型和在線演示僅用於研究預覽,僅供非商業用途,需遵循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}
}



