Meta开源代码生成大语言模型Code Llama

Meta开源Code Llama代码生成大模型

Meta近期开源了Code Llama,这是一个基于Llama 2基础模型的代码生成大语言模型(LLM),并采用了相同的社区许可协议。Code Llama在5000亿个代码标记上进行了微调,提供了三种模型规模,参数数量最高达到340亿。在代码生成基准测试中,Code Llama的表现优于所有其他开源模型,并与ChatGPT相当。

模型细节

Meta使用了Llama 2基础模型的三种规模(7B、13B和34B参数)作为Code Llama的起点。这些模型在“近乎去重”的代码数据集以及与代码相关的自然语言(如问题和讨论)上进行了微调。除了基础版本外,Meta还为每种模型规模训练了两个变体:Code Llama - Python(进一步在Python代码上微调)和Code Llama - Instruct(在自然语言指令上微调)。所有九个模型版本均允许商业使用

应用场景

Code Llama旨在支持各个领域的软件工程师,包括研究、工业、开源项目、非政府组织和企业。Meta表示,尽管基础模型和指令模型已经具备一定的能力,但仍有许多用例需要进一步支持。Meta希望通过Code Llama激励其他开发者利用Llama 2创建新的创新工具,用于研究和商业产品。

与其他模型的对比

此前,InfoQ曾报道过其他代码生成AI模型,如基于GPT-3的OpenAI Codex,它驱动了GitHub的Copilot。与GPT系列的其他模型一样,Codex仅通过OpenAI的Web服务API提供。这促使了开源模型的发展,如BigCode的StarCoder。StarCoder的优势在于其训练数据使用了“宽松许可”的代码,因此其输出的使用不太可能导致许可违规。尽管Llama 2及其衍生模型(包括Code Llama)允许商业使用,但Code Llama的许可协议指出,其输出“可能受第三方许可约束”。

长上下文微调

除了在代码上进行微调外,Meta还进行了长上下文微调(LCFT),增加了模型能够处理的输入长度。Llama 2的训练序列长度为4k标记,而Code Llama的LCFT将序列长度扩展到16k。Meta的目标是“解锁仓库级别的推理,用于完成或合成”,使模型能够访问整个项目的代码,而不仅仅是单个函数或源文件。Meta的实验表明,该模型在高达100k标记的序列上表现出“稳定行为”。

性能对比

在关于Code Llama的Twitter/X讨论中,Toros大学的助理教授Furkan Gözükara指出,GPT-4在HumanEval基准测试上仍然优于Code Llama。另一位用户回复称,GPT-4的模型规模远大于34B。开发者工具phind的团队发布了一个基于Code Llama - Python 34B参数的微调版本,声称其在HumanEval上达到了69.5%的pass@1分数,超过了GPT-4公布的67%分数。phind的开发者表示,该模型只是一个开始,未来还会有改进。

资源获取

Code Llama的源代码已在GitHub上发布,模型文件可以在向Meta申请批准后下载。

阅读 27
0 条评论