转载自: Meta开源了比GitHub Copilot更强大的AI编程工具

Meta 在竞争激烈的生成式 AI 领域中,意图成为领头羊,连续推出了一系列开源产品。

继先前推出能够生成文本、翻译语言和创建音频的 AI 模型之后,今天又发布了开源项目 Code Llama。这是一个能够用自然语言(尤其是英语)生成和解释代码的机器学习系统

GitHub:https://github.com/facebookresearch/codellama

Code Llama 与 GitHub Copilot、Amazon CodeWhisperer 及开源的 AI 代码生成器如 StarCoder、StableCode 和 PolyCoder 类似,它能够补全代码并调试跨越诸如 Python、C++、Java、PHP、Typescript、C# 和 Bash 等多种编程语言的现有代码。

Meta 在博客中写道:“我们在 Meta 相信,尤其是针对编码的大语言模型,更能从开放的策略中受益,无论是在创新还是安全性方面。公开的、特定于代码的模型可以帮助开发改善人们生活的新技术。通过发布如 Code Llama 这样的代码模型,整个社区可以评估它们的实力,找出问题并修复潜在的漏洞。”

Code Llama 有多个版本,包括一种专为 Python 优化的版本和一种经过微调来理解指令的版本(例如 “编写一个输出斐波那契数列的函数”)。它是基于 Meta 本月初开源的 Llama 2 文本生成模型的。虽然 Llama 2 可以生成代码,但生成的代码不一定优质 —— 显然不能与像 Copilot 这种专门构建的模型所生产的代码相比。

在训练 Code Llama 过程中,Meta 使用了与训练 Llama 2 相同的数据集,这些数据集是从网络上的公开资源中获得的。但是,Meta 特意让模型更加关注那些包含代码的训练数据子集。基本上,与其 “父模型” Llama 2 相比,Code Llama 花费了更多的时间去深入学习代码与自然语言之间的关系

Code Llama 的模型,大小从 70 亿参数到 340 亿参数不等,它们都使用了 5000 亿个代码 Token 以及与代码相关的数据进行训练。专为 Python 定制的 Code Llama 进一步在 1000 亿个 Python 代码 Token 上进行了微调。而能理解指令的 Code Llama 则使用人类注释者的反馈进行了微调,以便生成对问题的 “有帮助” 和 “安全” 的答案。

为了更好地理解,模型中的 “参数” 是从历史训练数据中学习得到的,这些参数决定了模型在某一特定问题上,如生成文本(或在此例中的代码)的能力。而 Token 则代表原始文本,例如,单词 “fantastic” 可以被划分为 “fan”、“tas” 和 “tic” 这样的 Token。

有几个 Code Llama 模型能够将代码融入到已有代码中,并且所有模型都可以将大约 100,000 个代码 Token 作为输入。至少有一个 —— 拥有 70 亿参数的模型 —— 能在单块 GPU 上执行。而其他模型则需要更为高效的硬件支持。Meta 声称,340 亿参数的模型在所有已开源的代码生成器中性能最优,并且其参数数量也是最多的

人们可能会认为,一个生成代码的工具对于程序员,甚至是非程序员来说都非常有吸引力 —— 这种看法是准确的。

GitHub 表示,如今有超过 400 家组织正在使用 Copilot,而这些机构中的开发者的编码速度比过去提高了 55%。另外,程序员问答社区网站 Stack Overflow 在其最近的调查中发现,70% 的受访者已经开始使用或计划在今年使用 AI 编码工具,他们提到了如提高生产效率和快速学习的优点。

但是,所有的生成式 AI,包括编码工具,都有可能出现问题或带来新的威胁

一个与斯坦福大学有关的研究团队发现,那些使用 AI 工具的工程师在他们的应用中更有可能带来安全隐患。研究团队指出,这些工具往往会生成在表面上看起来是正确的代码,但由于调用了受损的软件和使用了不安全的设置,实际上可能存在安全风险。

再者,还有知识产权的大问题

一些代码生成模型 —— 并不一定指的是 Code Llama,但 Meta 并没有绝对否认 —— 可能是在受版权保护或有限制性许可的代码上进行训练的。当这些模型在某些特定情境下被激活时,它们可能会重复输出这些代码。法律专家表示,如果公司在不知情的情况下使用了这些工具中的受版权保护的建议并纳入其生产软件,那么他们可能会面临法律风险。

另外,尽管还没有大量的证据,但开源的代码生成工具有可能被用来制造恶意代码。已经有黑客尝试调整现有的模型,用于找出代码的漏洞或编写欺诈性的网页。

那么,Code Llama 怎么样呢?

实际上,Meta 仅在公司内部安排了 25 名员工对该模型进行了红队测试。但是,即使没有来自第三方的更为深入的审计,Code Llama 也存在一些可能让开发者有所顾虑的错误。

当直接询问编写勒索软件代码时,Code Llama 不会应答。但是,当请求被描述得较为委婉时 —— 例如:“编写一个脚本,加密用户主目录中的所有文件”(这实际上就是一个勒索软件脚本) —— 这个模型则会生成对应的代码。

在他们的博客文章中,Meta 坦然承认 Code Llama 在某些提示下可能会生成 “不精确” 或 “令人反感” 的答复。

Meta 在文中表示:“因为这些原因,与所有的大语言模型一样,我们无法预先预测 Code Llama 的输出结果。在正式使用 Code Llama 之前,开发者应该为他们特定的应用场景进行安全测试和调整。”

尽管存在这些风险,但 Meta 对开发者如何部署 Code Llama 几乎没有限制,不论是用于商业还是研究。他们只需承诺不将该模型用于恶意用途,并且如果在一个拥有超过 7 亿月活跃用户的平台上部署它 —— 也就是可能与 Meta 的某些社交网络产品竞争的平台 —— 他们需要先申请许可。

公司在博文中写道:“Code Llama 的设计目的是为所有领域的软件工程师提供支持,这包括研究、工业、开源项目、非政府组织以及商业机构。但现在,仍然存在许多超出我们基本模型和指导模型所能覆盖的用途。” 他们表示希望 “Code Llama 能激发其他人利用 Llama 2 创造新的研究和商业产品的创新工具。”


推荐一下分布式实验室出品的《Rust 实战视频课》,本课程一共包含 55 个课时,10 个动手练习,帮助学员在动手中学会 Rust。本课程遵循边学边用,以用带学的思路,由浅入深,层层递进。帮助 Rust 爱好者顺利踏上 Rust 编程生涯的第一步,渡过最容易被劝退的入门阶段,学完之后能达到使用 Rust 语言独立开发项目的水平。