在指令数据上微调大语言模型(LLM)能显著提升自然语言任务的表现。本文利用 Git commit 的天然结构(代码改动与人类指令成对出现),将指令微调应用于代码领域,构建了 CommitPack:一个覆盖 350 种编程语言、总量达 4 TB 的 Git commit 数据集。
作者在 160 亿参数的 StarCoder 模型上,将 CommitPack 与其它自然及合成代码指令数据(xP3x、Self-Instruct、OASST)进行对比评测,在 HumanEval Python 基准上取得 46.2% pass@1,在未使用 OpenAI 输出训练的模型中达到当时最优水平。
论文进一步提出 HumanEvalPack,将 HumanEval 扩展为 3 类编码任务(代码修复、代码解释、代码合成),覆盖 6 种语言(Python、JavaScript、Java、Go、C++、Rust)。所得模型 OctoCoder 与 OctoGeeX 在所有宽松许可(permissive)模型中于 HumanEvalPack 上表现最佳,表明 CommitPack 有助于泛化到更多语言和更自然的编码任务。
代码、模型与数据均公开于:https://github.com/bigcode-project/octopack
指令微调(instruction tuning)、代码大语言模型、Git commit 数据、CommitPack、HumanEvalPack、StarCoder、OctoCoder、OctoGeeX