🚀 StarCoderPlus
StarCoderPlus是一个强大的语言模型,可处理英文及80多种编程语言。它在英文网页文本和GitHub代码数据上进行训练,能用于代码生成等任务,其指令调优版本在实际应用中表现出色。
🚀 快速开始
你可以在 StarChat-Beta 中体验经过指令调优的 StarCoderPlus。
✨ 主要特性
📦 安装指南
使用以下命令安装所需库:
pip install -q transformers
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/starcoderplus"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
高级用法
Fill - in - the - middle
Fill - in - the - middle 使用特殊标记来识别输入和输出的前缀/中间/后缀部分:
input_text = "<fim_prefix>def print_hello_world():\n <fim_suffix>\n print('Hello world!')<fim_middle>"
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
归属与其他要求
该模型的训练代码数据集仅筛选了许可型许可证的数据。不过,模型仍可能直接从数据集中生成源代码。代码的许可证可能要求进行归属声明和/或其他特定要求,必须予以遵守。我们提供了一个 搜索索引,可用于搜索预训练数据,以确定生成的代码来源,并为你的代码进行适当的归属声明。
📚 详细文档
预期用途
该模型在英文和 GitHub 代码上进行训练,因此它 不是 一个指令模型,像“编写一个计算平方根的函数”这样的命令效果不佳。然而,StarChat 中的指令调优版本是一个出色的助手。
欢迎在社区标签中分享你的生成结果!
🔧 技术细节
StarCoderPlus 是在 600B 英文和代码标记上对 StarCoderBase 进行微调的版本,而 StarCoderBase 是在 1T 代码标记上进行预训练的。以下是微调的详细信息:
- 模型架构:具有多查询注意力和 Fill - in - the - Middle 目标的 GPT - 2 模型。
- 微调步骤:150k。
- 微调标记数:600B。
- 精度:bfloat16。
- 硬件:使用 512 个 Tesla A100 GPU,训练时间为 14 天。
- 软件:编排使用 Megatron - LM,神经网络使用 PyTorch,BP16(如适用)使用 apex。
📄 许可证
该模型遵循 BigCode OpenRAIL - M v1 许可协议。你可以在 此处 查看完整协议。
⚠️ 重要提示
该模型在网络上的英文文本和 GitHub 代码的混合数据上进行训练,因此在处理非英文文本时可能会遇到限制,并且可能带有常见的在线刻板印象和偏见。此外,生成的代码应谨慎使用,因为它可能包含错误、低效或潜在的安全漏洞。如需更全面地了解基础模型的代码限制,请参考 StarCoder 论文。
💡 使用建议
由于该模型不是指令模型,对于指令类任务,建议使用 StarChat 中的指令调优版本。同时,使用生成的代码时,务必通过 搜索索引 检查代码来源,并遵守相应的许可证要求。