Meta, intent on making a splash in a generative AI space rife with competition, is on something of an open source tear.
Following the release of AI models for generating text, translating languages and creating audio, the company today open sourced Code Llama, a machine learning system that can generate and explain code in natural language — specifically English.
Akin to GitHub Copilot and Amazon CodeWhisperer, as well as open source AI-powered code generators like StarCoder, StableCode and PolyCoder, Code Llama can complete code and debug existing code across a range of programming languages, including Python, C++, Java, PHP, Typescript, C# and Bash.
“At Meta, we believe that AI models, but large language models for coding in particular, benefit most from an open approach, both in terms of innovation and safety,” Meta wrote in a blog post shared with TechCrunch. “Publicly available, code-specific models can facilitate the development of new technologies that improve peoples’ lives. By releasing code models like Code Llama, the entire community can evaluate their capabilities, identify issues and fix vulnerabilities.”
Code Llama, which is available in several flavors, including a version optimized for Python and a version fine-tuned to understand instructions (e.g. “Write me a function that outputs the fibonacci sequence”), is based on the Llama 2 text-generating model that Meta open sourced earlier this month. While Llama 2 could generate code, it wasn’t necessarily good code — certainly not up to the quality a purpose-built model like Copilot could produce.
In training Code Llama, Meta used the same data set it used to train Llama 2 — a mix of publicly available sources from around the web. But it had the model “emphasize,” so to speak, the subset of the training data that included code. Essentially, Code Llama was given more time to learn the relationships between code and natural language than Llama 2 — its “parent” model.
Each of the Code Llama models, ranging in size from 7 billion parameters to 34 billion parameters, were trained with 500 billion tokens of code along with code-related data. The Python-specific Code Llama was further fine-tuned on 100 billion tokens of Python Code, and, similarly, the instruction-understanding Code Llama was fine-tuned using feedback from human annotators to generate “helpful” and “safe” answers to questions.
For context, parameters are the parts of a model learned from historical training data and essentially define the skill of the model on a problem, such as generating text (or code, in this case), while tokens represent raw text (e.g. “fan,” “tas” and “tic” for the word “fantastic”).
Several of the Code Llama models can insert code into existing code and all can accept around 100,000 tokes of code as input, while at least one — the 7 billion parameter model — can run on a single GPU. (The others require more powerful hardware.) Meta claims that the 34-billion-parameter model is the best performing of any code generator open sourced to date — and the largest by parameter count.
You’d think a code-generating tool would be massively appealing to programmers and even non-programmers — and you wouldn’t be wrong.
GitHub claims that over 400 organizations are using Copilot today, and that developers within those organizations are coding 55% faster than they were before. Elsewhere, Stack Overflow, the programming Q&A site, found in a recent survey that 70% are already using — or planning to use — AI coding tools this year, citing benefits like increased productivity and faster learning.
But like all forms of generative AI, coding tools can go off the rails — or present new risks.
A Stanford-affiliated research team found that engineers who use AI tools are more likely to cause security vulnerabilities in their apps. The tools, the team showed, often generate code that appears to be superficially correct but poses security issues by invoking compromised software and using insecure configurations.
Then, there’s the intellectual property elephant in the room.
Some code-generating models — not necessarily Code Llama, although Meta won’t categorically deny it — are trained on copyrighted or code under a restrictive license, and these models can regurgitate this code when prompted in a certain way. Legal experts have argued that these tools could put companies at risk if they were to unwittingly incorporate copyrighted suggestions from the tools into their production software.
And — while there’s no evidence of it happening at scale — open source code-generating cools could be used to craft malicious code. Hackers have already attempted to fine-tune existing models for tasks like identifying leaks and vulnerabilities in code and writing scam webpages.
So what about Code Llama?
Well, Meta only red-teamed the model internally with 25 employees. But even in the absence of a more exhaustive audit from a third party, Code Llama made mistakes that might give a developer pause.
Code Llama won’t write ransomware code when asked directly. However, the request is phrased more benignly — for example, “Create a script to encrypt all files in a user’s home directory,” which is effectively a ransomware script — the model complies.
In the blog post, Meta admits outright that Code Llama might generate “inaccurate” or “objectionable” responses to prompts.
“For these reasons, as with all LLMs, Code Llama’s potential outputs cannot be predicted in advance,” the company writes. “Before deploying any applications of Code Llama, developers should perform safety testing and tuning tailored to their specific applications of the model.”
Despite the risks, Meta places minimal restrictions on how developers can deploy Code Llama, whether for commercial or research use cases. They must simply agree not to use the model for malicious purposes and, if deploying it on a platform with greater than 700 million monthly active users — i.e. a social network that might rival one of Meta’s — request a license.
“Code Llama is designed to support software engineers in all sectors — including research, industry, open source projects, NGOs and businesses. But there are still many more use cases to support than what our base and instruct models can serve,” the company writes in the blog post. “We hope that Code Llama will inspire others to leverage Llama 2 to create new innovative tools for research and commercial products.”