英文

HuggingFaceH4的Starchat Beta 8位量化

提示模板

<|system|> system message goes here <|end|>
<|user|> prompt goes here <|end|>
<|assistant|>

示例:

<|system|> Below is a conversation between a human user and a helpful AI coding assistant. <|end|>
<|user|> How do I sort a list in Python? <|end|>
<|assistant|>

原始模型卡片:HuggingFaceH4的Starchat Beta

Starchat Beta模型卡片

Starchat是一系列用于作为编程助手的语言模型。Starchat Beta是系列中的第二个模型,是对 StarCoderPlus 进行微调的版本,它是使用 "uncensored" 变种数据集进行训练的。我们发现去除OpenAssistant数据集中的内置对齐可以提升在编程任务上的性能,并使模型在编程任务上更有帮助。然而,这也意味着当提示生成问题文本时,模型很可能生成有问题的文本,所以仅限用于教育和研究目的。

模型详情

模型描述

模型来源[可选]

预期用途和限制

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

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

import torch
from transformers import pipeline

pipe = pipeline("text-generation", model="rahuldshetty/starchat-beta", device_map="auto")

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 Alpha没有使用RLHF等技术对人类偏好进行调整,也没有使用类似ChatGPT的响应过滤进行部署,因此模型可能会产生有问题的输出(尤其是在提示产生问题文本时)。主要在代码数据上训练的模型还会有更偏斜的人口统计偏见,与GitHub社区的人口统计学相一致,有关此问题的更多信息,请参阅从The Stack派生的 StarCoder dataset

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

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

训练和评估数据

Starchat Beta是在 "uncensored" 变种的 openassistant-guanaco dataset 上进行训练的。我们应用了与在 WizardLM 后面的ShareGPT数据集进行过滤的相同的 recipe

训练过程

训练超参数

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

  • 学习率:2e-05
  • 训练批大小:4
  • 评估批大小:4
  • 种子:42
  • 分布式类型:多GPU
  • 设备数量:8
  • 梯度积累步数:8
  • 总的训练批大小:256
  • 总的评估批大小:32
  • 优化器:Adam,beta=(0.9,0.999),epsilon=1e-08
  • 学习率调度器类型:cosine
  • 学习率调度器预热比例:0.03
  • 训练轮数: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

引用

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},
}