模型简介
模型特点
模型能力
使用案例
🚀 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}
}



