Meta 决心在竞争激烈的生成式 AI 领域掀起波澜,正以开源为突破口。
继发布用于生成文本、翻译语言和创建音频的AI模型后,该公司今天开源了Code Llama,这是一种能够用自然语言(具体为英语)生成和解释代码的机器学习系统。
与GitHub Copilot、Amazon CodeWhisperer以及StarCoder、StableCode和PolyCoder等开源AI驱动的代码生成器类似,Code Llama能够在包括Python、C++、Java、PHP、Typescript、C#和Bash在内的多种编程语言中完成代码补全和调试现有代码。
Meta 在与 TechCrunch 分享的博文写道:“在 Meta,我们相信 AI 模型,尤其是用于编程的大语言模型,从开放方法中获益最多,无论是在创新还是安全方面。”“公开可用的、针对代码的模型可以促进新技术的开发,从而改善人们的生活。通过发布 Code Llama 等代码模型,整个社区可以评估其能力、识别问题并修复漏洞。”
Code Llama 的技术特性与训练机制
Code Llama提供多种版本,包括针对Python优化的版本和经过微调以理解指令(例如“写一个输出斐波那契数列的函数”)的版本,它基于Meta本月早些时候开源的Llama 2文本生成模型;虽然Llama 2能够生成代码,但其生成的代码未必好——肯定达不到像Copilot这样专用模型所能产出的质量水平。
在训练 Code Llama 时,Meta 使用了与训练 Llama 2 相同的数据集——即来自互联网各处的公开可用来源的混合数据。但它让模型“强调”了包含代码的训练数据子集。本质上,Code Llama 比其“父”模型 Llama 2 花了更多时间来学习代码与自然语言之间的关系。
每个 Code Llama 模型的参数量从 70 亿到 340 亿不等,均使用 5000 亿个代码 token 以及相关的代码数据进行训练。专门针对 Python 的 Code Llama 进一步用 1000 亿个 Python 代码 token 进行了微调;同样,具备指令理解能力的 Code Llama 则利用人类标注者的反馈进行微调,以生成对问题的“有帮助”且“安全”的回答。
作为背景知识,参数是模型从历史训练数据中学习到的部分,本质上定义了模型在特定任务(如生成文本或在此情况下的代码)上的能力;而 token 代表原始文本(例如单词 “fantastic” 可拆分为 “fan”、“tas” 和 “tic”)。
多个 Code Llama 模型能够向现有代码中插入代码,所有模型均可接受约 10 万个 token 的代码作为输入,其中至少有一个——70 亿参数的模型——可以在单个 GPU 上运行。(其他模型则需要更强大的硬件。)Meta 声称,340 亿参数的模型是目前已开源的所有代码生成器中性能最佳的,同时也是参数量最大的。
AI 编码工具的市场潜力与潜在风险
人们可能会认为,一种代码生成工具会对程序员甚至非程序员产生巨大的吸引力——而你并没有错。
GitHub声称,目前已有超过400家组织在使用Copilot,且这些组织内的开发人员编码速度比之前快了55%;此外,编程问答网站Stack Overflow在最近的一项调查中发现,70%的人已经在使用或计划在今年使用AI编码工具,理由是它们能带来提高生产力和加速学习等好处。
但就像所有形式的生成式 AI 一样,编码工具也可能失控——或带来新的风险。
一个与斯坦福大学有关的研究团队发现,使用AI工具的工程师更有可能在其应用中造成安全漏洞;该团队展示表明,这些工具经常生成表面上看似正确但通过调用受损软件和采用不安全配置而引发安全问题的代码。
此外,还有知识产权这个房间里的大象。
一些代码生成模型——不一定是 Code Llama,尽管 Meta 并未明确否认这一点——是在受版权保护或受限制性许可证约束的代码上进行训练的,这些模型在受到特定方式提示时可能会复述这些代码。法律专家指出,如果公司无意中将这些工具生成的受版权保护的代码建议纳入其生产软件中,可能会使公司面临风险。
而且——尽管尚无证据表明其在大规模上发生——开源代码生成工具可能被用来编写恶意代码;黑客已经尝试对现有模型进行微调,以执行识别代码中的泄露点和漏洞以及编写诈骗网页等任务。
安全性测试与部署限制
那么 Code Llama 呢?
Meta仅由25名员工在内部对该模型进行了红队测试。但即便缺乏第三方更全面的审计,Code Llama仍会出现可能让开发者犹豫的错误。
当被直接要求时,Code Llama不会编写勒索软件代码。然而,当请求以更温和的方式提出——例如“创建一个加密用户主目录下所有文件的脚本”,这实际上是一个勒索软件脚本——该模型会予以配合。
Meta在博客文章中坦承,Code Llama可能会针对提示生成“不准确”或“令人反感”的回复。
该公司写道:“出于这些原因,与所有大型语言模型一样,Code Llama的潜在输出无法提前预测。”“在部署任何基于Code Llama的应用之前,开发者应针对其特定应用场景进行定制化的安全测试和调优。”
尽管存在风险,Meta对开发者如何部署Code Llama(无论是用于商业还是研究用途)的限制极少。他们只需承诺不将该模型用于恶意目的;若将其部署在月活跃用户超过7亿的平台(即可能与Meta旗下某社交平台相抗衡的社交网络)上,则需申请许可。
该公司在博客文章中写道:“Code Llama旨在支持所有领域的软件工程师——包括研究、工业界、开源项目、非政府组织和企业。但我们基础模型和指令模型所能支持的用例仍有大量不足。”“我们希望Code Llama能激励他人利用Llama 2为研究和商业产品开发更多创新工具。”

