🚀 Diff-Codegen-6B v2 模型卡片
Diff-Codegen-6B v2 是一个用于代码生成的差异模型,由 CarperAI 发布。它能根据文本片段和期望更改的描述,以差异格式智能地修改文本,标记出新增、修改和删除的行。该模型在代码生成系统的原型设计和实验方面具有重要价值。
✨ 主要特性
- 专业代码修改:与普通代码生成模型的少样本提示相比,差异模型专门用于对现有代码提出智能更改建议,尤其适用于较长的代码段,并且能够根据自然语言文本描述(以提交消息的形式提供)进行更改。
- 多阶段训练:该模型是对 Salesforce 的 codegen-6B-mono 进行微调得到的。该语言模型首先在 The Pile 上进行预训练,然后在多种语言的代码数据语料库上进行微调,最后在 Python 代码数据集上进行微调。
📦 安装指南
文档未提及安装步骤,暂不展示。
💻 使用示例
文档未提及代码示例,暂不展示。
📚 详细文档
模型描述
Diff-Codegen-6B v2 是一个用于代码生成的差异模型,由 CarperAI 发布。差异模型是一种自回归语言模型,它在以 统一差异格式 格式化的文本编辑上进行训练。这些差异模型可以根据一段文本和所需更改的描述,对文本进行智能更改,以符合描述,并以差异格式标记出添加、更改和删除的行。
与普通代码生成模型的少样本提示相比,差异模型专门用于对现有代码提出智能更改建议,尤其适用于较长的代码段,并且需要根据自然语言文本描述(以提交消息的形式提供)进行更改。
该模型是对 Salesforce 的 codegen-6B-mono 进行微调得到的,在从 GitHub 抓取的大量提交数据集上进行训练。
Diff-Codegen-6B v2 是一个实验性研究成果,应以此对待。我们发布这些结果和这个模型,希望它对更广泛的研究社区有用,特别是对代码语言模型感兴趣的人。
一个包含简单模型提示示例的 Colab 笔记本 在此。
训练数据
该模型是对 Salesforce 的 codegen-6B-mono 进行微调得到的。这个语言模型首先在 The Pile 上进行预训练,The Pile 是一个由各种网络语料组成的 800Gb 数据集。The Pile 的数据表和论文分别可以在 这里 和 这里 找到。然后,该模型在多种语言的大型代码数据语料库上进行微调,最后在 Python 代码数据集上进行微调。包含这些数据集完整详细信息的 Codegen 论文可以在 这里 找到。
我们用于这次微调的数据集包括来自 GitHub 的提交,这些提交是使用 Google BigQuery 公共数据集 获取的,这是一个大量开源 GitHub 存储库的最新公共快照。我们获取了这个数据集,并使用 BigQuery 根据存储库的星标数量进行过滤,排除星标少于 100 的存储库,并进一步将查询限制为仅包含具有开源非版权保护许可证(如 MIT、Apache 等)的存储库以及提交消息中字符数超过 10 的提交。我们还将范围限制在 22 种流行的编程语言、脚本语言和标记语言列表中,包括 Python、HTML、Bash 脚本、SQL、C++ 等。过滤后,得到了一个包含 1900 万条提交的数据集。
我们的差异模型在来自 BigQuery 的提交数据集上进行训练,这是一个来自 GitHub 存储库的多种编程语言的大规模数据集。我们根据存储库的星标数量(>100 星标)、许可证(仅包括开源非版权保护许可的代码)和文件长度(排除长度超过 2048 个标记的文件)对数据集进行过滤。
该模型使用 Huggingface Codegen 分词器进行训练。
训练细节
该模型在由 Stability AI 提供的 64 个 A100 GPU 上,对 10.8 亿个标记进行了 1 个 epoch 的训练。
每个文件在输入到语言模型时的格式如下:
<NME> {FILE_NAME}
<BEF> {INPUT_FILE}
<MSG> {COMMIT_MESSAGE}
<DFF> {FILE_DIFF}
预期用途和限制
由于该模型规模较小且仅限于代码领域,不应期望该模型能够推广到代码以外的领域,也不应期望它能对大量代码进行(成功的)推理。该模型旨在用于代码生成系统的原型设计,仅用于实验目的。该模型按“原样”提供,不提供任何保证,即使许可证允许,也不应在商业环境中使用。
限制和偏差
由于上下文长度限制较短,并且排除了所有星标少于 100 的存储库,我们预计我们的差异模型在代表性不足的语言(如 Lean 或 Coq)上的表现会不佳。
不应将该模型的输出视为正确和安全的代码。该模型不应在任何对安全至关重要的关键任务环境中使用。在运行该模型的输出时,应尽可能在沙箱(如 gVisor)中进行,因为该模型很可能会生成可能删除文件、发送 HTTP 请求或以其他方式包含严重安全漏洞的代码。
与其他语言模型一样,Diff-Codegen 容易产生幻觉以及输出有偏差、刻板印象或有毒的内容。在从该模型生成内容时,不能保证输出的真实性。
评估结果
完整的评估结果请参阅 我们的博客文章。
🔧 技术细节
该模型在由 Stability AI 提供的 64 个 A100 GPU 上,对 10.8 亿个标记进行了 1 个 epoch 的训练。训练数据经过多轮筛选和处理,使用 Huggingface Codegen 分词器进行训练。输入文件按照特定格式进行处理,以适应语言模型的输入要求。
📄 许可证
该模型采用 MIT 许可证。
致谢
我们要感谢 Honglu Fan、Harry Saini、Herbie Bradley、Reshinth Adithyan 和 Joel Lehman 所做的努力!感谢 Nitarshan Rajkumar 对这个模型卡片的反馈。