CodeQwen1.5 发布说明

TL;DR

Qwen 推出了 CodeQwen1.5-7B,这是一款基于 Qwen1.5 系列的专用 70 亿参数开源代码大模型。它支持 92 种编程语言并提供 64K token 的上下文窗口,在代码生成、调试和 SQL 任务上展示了与更大专有模型竞争的性能。

基础代码生成能力

CodeQwen1.5-7B 缩小了开源模型与 GPT-4 等专有系统在基础代码生成方面的差距。在使用 HumanEval 和 MBPP 进行评估时,该模型优于其他 7B 规模的开源模型,如 CodeLlama-Base、StarCoder2 和 DeepSeek-Coder-Base。

基准性能

根据提供的数据,CodeQwen1.5-7B(Base)在 HumanEval 0-shot 中取得 51.8 分,在 MBPP 0-shot 中取得 72.2 分。Chat 版本 CodeQwen1.5-Chat 在 HumanEval 0-shot 中达到 83.5 分,在 MBPP 0-shot 中达到 77.7 分,多个类别上超越了 DeepSeek-Coder-Instruct(6.7B)。

除 Python 外,该模型在通过 MultiPL-E 评估的八种主流语言上也表现出色:Python、C++、Java、PHP、TypeScript、C#、Bash 和 JavaScript。

长上下文理解与生成

CodeQwen1.5 支持最长 64K token 的输入长度,这一能力通过在预训练阶段加入仓库级别的长序列代码数据实现。它使模型能够更好地理解仓库级代码,并可作为代码代理使用。

长上下文评估

  • Perplexity (PPL): 在 GitHub Trending 仓库(截至 2024-03-28)上的测试表明,随着序列长度增加,CodeQwen1.5 的困惑度呈下降趋势。
  • Needle in the Code: 在一个合成任务中,将自定义函数插入 Megatron 代码库后,模型成功在 64k 长度范围内复制了该函数。
  • SWE Bench: 在此实际软件开发基准测试中,CodeQwen1.5 获得 0.89 分,Qwen 团队指出这已超越 ChatGPT-3.5。

代码编辑与调试

CodeQwen1.5 旨在处理超出简单生成的代码修改任务。使用 CodeEditorBench 套件,对模型在调试、翻译、语言切换和代码润色四个维度进行评估。结果显示,CodeQwen1.5 在 70 亿参数规模的模型中实现了先进水平(SOTA)的性能。

文本转 SQL 能力

CodeQwen1.5-Chat 在将自然语言转换为 SQL 查询方面表现出高度熟练,使其成为非程序员与数据库交互的工具。

在 Spider 和 Bird 基准上使用 DIN-SQL 提示方法,CodeQwen1.5-Chat 获得第二名,接近 GPT-4。Qwen 团队将此表现归因于在预训练和微调阶段使用了可扩展、可验证且多样的合成数据。

技术规格

  • Model Size: 70 亿参数。
  • Pre-training Data: 大约 3 万亿 token 的代码相关数据。
  • Language Support: 支持 92 种编程语言。
  • Context Window: 64K token。

Sources