🚀 StarChat2 15B 模型卡片
StarChat 是一系列经过训练的语言模型,旨在作为实用的编码助手。StarChat2 是该系列的最新模型,它是 StarCoder2 的微调版本,通过 SFT 和 DPO 在合成数据集的混合数据上进行训练。
🚀 快速开始
StarChat2 15B 模型可用于聊天和编程场景。你可以通过以下链接查看演示,测试其编码能力:演示链接。
以下是使用 🤗 Transformers 的 pipeline()
函数运行模型的示例代码:
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="HuggingFaceH4/starchat2-15b-v0.1",
device_map="auto",
torch_dtype=torch.bfloat16,
)
messages = [
{
"role": "system",
"content": "You are StarChat2, an expert programming assistant",
},
{"role": "user", "content": "Write a simple website in HTML. When a user clicks the button, it shows a random Chuck Norris joke."},
]
outputs = pipe(
messages,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_k=50,
top_p=0.95,
stop_sequence="<|im_end|>",
)
print(outputs[0]["generated_text"][-1]["content"])
✨ 主要特性
- 多能力平衡:经过训练,在聊天和编程能力之间取得了良好的平衡。
- 多语言支持:主要支持英语和 600 多种编程语言。
📦 安装指南
运行上述代码示例前,你需要安装以下依赖:
pip install 'transformers @ git+https://github.com/huggingface/transformers.git@831bc25d8fdb85768402f772cf65cc3d7872b211'
pip install accelerate
📚 详细文档
模型详情
模型描述
属性 |
详情 |
模型类型 |
一个具有 160 亿参数的类 GPT 模型,在公开可用的合成数据集混合数据上进行微调。 |
语言(NLP) |
主要为英语和 600 多种编程语言。 |
许可证 |
BigCode Open RAIL - M v1 |
微调基础模型 |
bigcode/starcoder2-15b |
模型来源
- 仓库:https://github.com/huggingface/alignment-handbook
- 演示:https://huggingface.co/spaces/HuggingFaceH4/starchat2-playground
性能表现
StarChat2 15B 在聊天和编程能力上进行了平衡训练。它在 MT Bench 和 IFEval 等聊天基准测试以及 Python 代码补全的经典 HumanEval 基准测试中都取得了不错的成绩。以下分数是使用 LightEval 评估套件(提交版本 988959cb905df4baa050f82b4d499d46e8b537f2
)获得的,每个提示都使用了模型对应的聊天模板进行格式化,以模拟实际使用情况。因此,部分分数可能与技术报告或 Open LLM 排行榜中的报告不同。
预期用途与局限性
该模型在聊天、代码、数学和推理数据集的混合数据上进行了微调。因此,它可用于聊天,你可以通过 演示 测试其编码能力。
偏差、风险和局限性
StarChat2 15B 未使用 RLHF 等技术进行人类偏好对齐,也未像 ChatGPT 那样在响应中进行实时过滤,因此该模型可能会产生有问题的输出(尤其是在特定提示下)。
主要基于代码数据训练的模型也会存在与 GitHub 社区人口统计特征相关的更明显的人口统计偏差,更多信息请参阅 StarCoder2 数据集。
由于基础模型在大量代码语料库上进行了预训练,它可能会生成语法正确但语义错误的代码片段。例如,它可能会生成无法编译或产生错误结果的代码,也可能会生成存在安全漏洞的代码。此外,我们还发现该模型有生成虚假 URL 的倾向,点击前应仔细检查。
StarChat2 15B 是在基础模型 StarCoder2 上进行微调的,请参考其模型卡片的 局限性部分 获取相关信息。特别是,该模型在一些性别偏差类别、毒性倾向以及建议存在已知安全漏洞的代码补全风险方面进行了评估,这些评估结果在其 技术报告 中有所报告。
训练详情
该模型是 starchat2-15b-sft-v0.1 在 HuggingFaceH4/ultrafeedback_binarized 和 HuggingFaceH4/orca_dpo_pairs 数据集上的微调版本。更多详细信息请查看 对齐手册 中的配方。
它在评估集上取得了以下结果:
- 损失:0.4347
- 奖励/选择:-0.9461
- 奖励/拒绝:-2.7745
- 奖励/准确率:0.7658
- 奖励/差距:1.8284
- 对数概率/拒绝:-322.1934
- 对数概率/选择:-316.1898
- 对数几率/拒绝:-2.3817
- 对数几率/选择:-2.3005
训练过程
训练超参数
训练过程中使用了以下超参数:
- 学习率:5e - 07
- 训练批次大小:2
- 评估批次大小:4
- 随机种子:42
- 分布式类型:多 GPU
- 设备数量:8
- 梯度累积步数:8
- 总训练批次大小:128
- 总评估批次大小:32
- 优化器:Adam(β1 = 0.9,β2 = 0.999,ε = 1e - 08)
- 学习率调度器类型:余弦
- 学习率调度器热身比例:0.1
- 训练轮数:2
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
奖励/选择 |
奖励/拒绝 |
奖励/准确率 |
奖励/差距 |
对数概率/拒绝 |
对数概率/选择 |
对数几率/拒绝 |
对数几率/选择 |
0.717 |
0.17 |
100 |
0.6006 |
-0.0924 |
-0.2899 |
0.6329 |
0.1975 |
-272.5022 |
-299.1165 |
-2.5313 |
-2.4191 |
0.6273 |
0.35 |
200 |
0.5160 |
-0.3994 |
-0.9461 |
0.6930 |
0.5467 |
-285.6261 |
-305.2568 |
-2.5281 |
-2.4278 |
0.5538 |
0.52 |
300 |
0.4781 |
-0.6589 |
-1.5892 |
0.7247 |
0.9302 |
-298.4870 |
-310.4470 |
-2.4996 |
-2.4110 |
0.5056 |
0.7 |
400 |
0.4594 |
-0.8283 |
-2.1332 |
0.7437 |
1.3050 |
-309.3687 |
-313.8344 |
-2.4472 |
-2.3644 |
0.4983 |
0.87 |
500 |
0.4512 |
-0.7758 |
-2.2806 |
0.7468 |
1.5049 |
-312.3167 |
-312.7843 |
-2.4223 |
-2.3404 |
0.4662 |
1.04 |
600 |
0.4431 |
-0.7839 |
-2.4016 |
0.7658 |
1.6177 |
-314.7355 |
-312.9465 |
-2.4049 |
-2.3215 |
0.4411 |
1.22 |
700 |
0.4415 |
-1.0090 |
-2.7582 |
0.7690 |
1.7492 |
-321.8679 |
-317.4481 |
-2.3840 |
-2.3016 |
0.471 |
1.39 |
800 |
0.4368 |
-0.9617 |
-2.7445 |
0.7690 |
1.7828 |
-321.5930 |
-316.5019 |
-2.3809 |
-2.2991 |
0.4485 |
1.57 |
900 |
0.4351 |
-0.9490 |
-2.7594 |
0.7722 |
1.8103 |
-321.8916 |
-316.2497 |
-2.3815 |
-2.3004 |
0.4411 |
1.74 |
1000 |
0.4348 |
-0.9293 |
-2.7469 |
0.7658 |
1.8176 |
-321.6409 |
-315.8547 |
-2.3823 |
-2.3011 |
0.4499 |
1.92 |
1100 |
0.4348 |
-0.9482 |
-2.7767 |
0.7658 |
1.8285 |
-322.2369 |
-316.2320 |
-2.3828 |
-2.3012 |
框架版本
- Transformers 4.39.0.dev0
- Pytorch 2.1.2+cu121
- Datasets 2.16.1
- Tokenizers 0.15.1
⚠️ 重要提示
该模型可能会产生有问题的输出,尤其是在特定提示下。生成的代码可能存在语法正确但语义错误、无法编译、产生错误结果或存在安全漏洞等问题。此外,模型生成的 URL 可能是虚假的,点击前请仔细检查。
💡 使用建议
在使用模型生成代码时,建议对代码进行仔细审查和测试,以确保其正确性和安全性。对于模型生成的 URL,务必谨慎点击。