项目介绍:stable-code-3b
模型概述
stable-code-3b
是一款由Stability AI开发的语言模型,包含27亿个参数,专门用于代码生成。这款模型经过各种文本和代码数据集的训练,总共使用了1.3万亿个词的训练数据。它支持多种编程语言,包括Python、C++、Javascript、Java和PHP等。
该模型在多编程语言的衡量标准上表现出色,与类似规模的模型相比,展现了先进的性能。使用BigCode's 评估工具进行测试,stable-code-3b
在Python语言下的通过率为32.4%。
主要功能
- 中间插入能力(FIM):允许在代码的中间插入代码,这对于自动补全代码和代码重构十分有用。
- 长文本支持:支持长达16,384个字符的序列进行训练,有助于处理较长的代码片段。
使用示例
开发者可以使用如下代码片段,在Python中体验stable-code-3b
的文本生成功能:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stabilityai/stable-code-3b")
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stable-code-3b",
torch_dtype="auto",
)
model.cuda()
inputs = tokenizer("import torch\nimport torch.nn as nn", return_tensors="pt").to(model.device)
tokens = model.generate(
**inputs,
max_new_tokens=48,
temperature=0.2,
do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
模型细节
- 开发者:Stability AI
- 模型类型:基于transformer解码器架构的自回归语言模型
- 支持语言:英语和多种编程语言
- 许可证:Stability AI社区许可证。商业使用请参考Stability AI的许可证
模型架构
该模型是一个仅限解码的transformer,类似于LLaMA架构,并进行了如下改进:
- 参数数量:27亿
- 隐藏层大小:2560
- 层数:32
- 头数:32
- 序列长度:16384
- 位置嵌入:采用旋转位置嵌入技术,提高吞吐量。
- 分词器:使用修改后的GPTNeoX分词器,支持中间插入(FIM)等功能。
训练细节
- 训练数据集:结合了多个大规模开源数据集,包括Falcon RefinedWeb、CommitPackFT和GitHub Issues等。
- 支持语言:模型支持18种编程语言,包括Python、C++、Java、Go、Rust等。
- 训练过程:模型在bfloat16精度下进行预训练,使用AdamW优化算法。
- 基础设施:训练使用了Stability AI集群中的256块NVIDIA A100 40GB GPU。
使用及限制
该模型适用于作为基础模型进行特定应用的微调。但在实际应用中,开发者需要仔细评估和调整模型性能以确保安全。由于训练数据集中可能包含不当内容,建议在生产环境中谨慎使用。
如何引用
@misc{stable-code-3b,
url={https://huggingface.co/stabilityai/stable-code-3b},
title={Stable Code 3B},
author={Pinnaparaju, Nikhil and Adithyan, Reshinth and Phung, Duy and Tow, Jonathan and Baicoianu, James and Cooper, Nathan}
}
stable-code-3b
是一个功能强大的语言模型,旨在为开发者提供高效的代码生成和改进工具。通过结合丰富的训练数据和先进的技术,它为多语言编程环境中的代码处理提供了坚实的基础。