英文

StarChat-β模型卡

StarChat是一系列训练成为有用的编码助手的语言模型。StarChat-β是系列中的第二个模型,是在 openassistant-guanaco dataset 的一个 "uncensored" 变体上进行微调的 StarCoderPlus 的改进版本。我们发现移除OpenAssistant数据集的内置对齐提高了 Open LLM Leaderboard 的性能,并使模型在编码任务上更有帮助。然而,这也意味着当提示生成有问题的文本时,模型有可能产生有问题的文本,因此只能用于教育和研究目的。

模型详情

模型描述

模型来源

预期用途和限制

该模型是在一个包含35多种语言的对话范围广泛的 OpenAssistant/oasst1 数据集的变体上进行微调的,因此可以用于聊天,您可以查看我们的 demo 来测试其编码能力。

以下是如何使用? Transformers中的pipeline()函数运行模型的方法:

import torch
from transformers import pipeline

pipe = pipeline("text-generation", model="HuggingFaceH4/starchat-beta", torch_dtype=torch.bfloat16, device_map="auto")

# We use a variant of ChatML to format each message
prompt_template = "<|system|>\n<|end|>\n<|user|>\n{query}<|end|>\n<|assistant|>"
prompt = prompt_template.format(query="How do I sort a list in Python?")
# We use a special <|end|> token with ID 49155 to denote ends of a turn
outputs = pipe(prompt, max_new_tokens=256, do_sample=True, temperature=0.2, top_k=50, top_p=0.95, eos_token_id=49155)
# You can sort a list in Python by using the sort() method. Here's an example:\n\n```\nnumbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]\nnumbers.sort()\nprint(numbers)\n```\n\nThis will sort the list in place and print the sorted list.

偏见、风险和限制

StarChat-β没有使用RLHF等技术对其与人类偏好的一致性进行对齐,也没有像ChatGPT一样在响应中进行循环筛选,因此该模型可能会产生有问题的输出(特别是在提示产生有问题的文本时)。主要在代码数据上训练的模型也会具有与GitHub社区人口统计数据相一致的更严重的偏见。有关详细信息,请参阅从The Stack派生的 technical report

由于基础模型是在大规模代码语料库上预训练的,因此可能会生成在语法上有效但在语义上不正确的代码片段。例如,它可能会生成无法编译或产生错误结果的代码。它还可能生成易受安全漏洞攻击的代码。我们观察到该模型也倾向于生成虚假的URL,在点击之前需要仔细检查。

StarChat-β是从基础模型 StarCoderPlus 进行微调的,请参阅其模型卡上的 Limitations Section 以获取相关信息。特别是,该模型在某些性别偏见、毒性倾向和建议使用已知安全漏洞的代码完成的风险方面进行了评估,这些评估结果在其 technical report 中有报告。

训练和评估数据

StarChat-β是在 openassistant-guanaco dataset 的一个 "uncensored" 变体上进行训练的。我们应用了与 WizardLM 背后的ShareGPT数据集筛选相同的筛选方法。

训练过程

训练超参数

训练过程中使用了以下超参数:

  • 学习率:2e-05
  • 训练批量大小:4
  • 评估批量大小:4
  • 种子:42
  • 分布式类型:多GPU
  • 设备数:8
  • 梯度累积步数:8
  • 总训练批量大小:256
  • 总评估批量大小:32
  • 优化器:Adam(betas=(0.9,0.999),epsilon=1e-08)
  • 学习率调度器类型:cosine
  • 学习率调度器热身比例:0.03
  • epochs数:6

训练结果

Training Loss Epoch Step Validation Loss
1.5321 0.98 15 1.2856
1.2071 1.97 30 1.2620
1.0162 2.95 45 1.2853
0.8484 4.0 61 1.3274
0.6981 4.98 76 1.3994
0.5668 5.9 90 1.4720

框架版本

  • Transformers 4.28.1
  • Pytorch 2.0.1+cu118
  • Datasets 2.12.0
  • Tokenizers 0.13.3

引用

虽然没有关于StarChat-β的博客文章或论文,但您可以在下面的博客文章中找到有关早期版本的详细信息:

BibTeX:

@article{Tunstall2023starchat-alpha,
  author = {Tunstall, Lewis and Lambert, Nathan and Rajani, Nazneen and Beeching, Edward and Le Scao, Teven and von Werra, Leandro and Han, Sheon and Schmid, Philipp and Rush, Alexander},
  title = {Creating a Coding Assistant with StarCoder},
  journal = {Hugging Face Blog},
  year = {2023},
  note = {https://huggingface.co/blog/starchat},
}