
CodeGen
自然语言直接生成代码,媲美Codex的开源模型
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 5180
使用教程
⚠ 本教程由 AI 依据该项目 README 整理;原始文档不完整,部分步骤为通用流程推断,实际安装请以项目官方文档为准。
⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。
环境要求
- Python 环境(需能 import torch)
- 已安装 PyTorch 与 transformers 库
- 可访问 Hugging Face Hub 下载模型权重
- 按所选模型规模准备足够的内存/显存与磁盘空间
安装与启动步骤
-
1确认 Python 环境
CodeGen 是 Python 项目,先用 python -V 确认本机已装 Python 且命令可用。
python -V -
2安装依赖库
README 示例代码导入了 torch 与 transformers,需先安装这两个库;README 未给出固定版本,按需安装即可。
pip install torch transformers -
3选择模型版本
README 提供 CodeGen1.0、CodeGen2.0、CodeGen2.5 三个系列,参数规模 350M 到 16B,按自己的算力挑选模型名。
-
4运行 CodeGen1 示例
加载 Salesforce/codegen-2B-mono,把注释当作提示让模型补全代码,首次运行会自动下载权重。
import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-2B-mono") model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-mono") inputs = tokenizer("# this function prints hello world", return_tensors="pt") sample = model.generate(**inputs, max_length=128) print(tokenizer.decode(sample[0], truncate_before_pattern=[r"\n\n^#", "^'''", "\n\n\n"])) -
5运行 CodeGen2 示例
CodeGen2 需要额外传 trust_remote_code=True 和 revision="main",示例使用 Salesforce/codegen2-7B。
import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen2-7B") model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen2-7B", trust_remote_code=True, revision="main") inputs = tokenizer("# this function prints hello world", return_tensors="pt") sample = model.generate(**inputs, max_length=128) print(tokenizer.decode(sample[0], truncate_before_pattern=[r"\n\n^#", "^'''", "\n\n\n"])) -
6运行 CodeGen2.5 示例
7B 的 CodeGen2.5 即可超过 16B 模型,示例模型名 Salesforce/codegen25-7b-mono,仅解码时不做截断。
import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen25-7b-mono", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen25-7b-mono") inputs = tokenizer("# this function prints hello world", return_tensors="pt") sample = model.generate(**inputs, max_length=128) print(tokenizer.decode(sample[0]))
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
模型名称 | 是 | Hugging Face Hub 上的模型标识,决定参数规模与语言(mono 为 Python) | Salesforce/codegen-2B-mono |
trust_remote_code | 否 | CodeGen2/2.5 示例中需设为 True 才能加载模型自定义代码 | True |
revision | 否 | CodeGen2 示例中指定为 main,用于指定加载分支 | main |
max_length | 否 | generate 生成序列的最大长度,三个示例均为 128 | 128 |
truncate_before_pattern | 否 | CodeGen1/2 解码时按正则模式截断多余输出,2.5 示例未使用 | [r"\n\n^#", "^'''", "\n\n\n"] |
如何确认成功
终端成功打印出根据“# this function prints hello world”注释生成的代码片段,且无报错,即表示模型加载并推理成功。
常见问题
Q:需要什么硬件才能跑起来?
A:README 未给出显存要求。参数越大占用越高,可先用 350M 或 2B 小模型跑通流程,再按资源情况换更大模型。
Q:加载 codegen2 报错怎么办?
A:CodeGen2 与 CodeGen2.5 需在 from_pretrained 中传 trust_remote_code=True;CodeGen2 还要加 revision="main"。
Q:生成结果后面多出无关内容?
A:CodeGen1/2 示例在 tokenizer.decode 中传入 truncate_before_pattern 截断多余输出,可按需调整该正则列表。
Q:模型权重去哪里下载?
A:README 说明模型托管在 Hugging Face Hub,可在 hub 上搜索 salesforce codegen 找到各版本权重。
注意事项
- README 只提供 Python + transformers 的调用示例,没有给出 pip 安装清单、版本号或部署脚本,依赖安装为按导入推断。
- 所有示例首次运行都会从 Hugging Face 下载权重,需保证网络通畅和充足磁盘空间。
- CodeGen2/2.5 必须开启 trust_remote_code,存在执行远端模型代码的风险,请确认来源可信。
- 参数规模越大的模型(7B/16B)对显存要求越高,建议先从小模型验证流程。
核心亮点
- 多轮对话式生成,支持根据反馈迭代修正代码
- 模型规模从350M到16B多档可选,适配不同硬件
- 在HumanEval基准上表现接近OpenAI Codex,且完全开源
不足之处
- 模型训练数据以Python为主,其他语言支持相对有限
- 文档和示例较少,上手门槛偏高
适用场景
- 开发者用自然语言描述功能,快速生成代码原型
- 在代码补全或编程助手中集成,提供智能建议
- 学术研究:探索程序合成和代码生成技术
替代项目
Codex、CodeT5、InCoder
上一篇:mlx-vlm
同类项目推荐
MiniMax-01
开源
线性注意力大模型,超长上下文轻松跑
The official repo of MiniMax-Text-01 and MiniMax-VL-01, large-language-model & visio···
Awesome-LLM-Survey
开源
一网打尽LLM综述资源,快速入门不迷路
An Awesome Collection for LLM Survey
StableDiffusion-PyTorch
开源
从零手写 Stable Diffusion,彻底搞懂扩散模型原理
This repo implements a Stable Diffusion model in PyTorch with all the essential comp···
Awesome-Ollama
开源
找 Ollama 图形界面和工具,看这一份清单就够了
An opinionated list of awesome Ollama web and desktop uis, frameworks, libraries, so···
LongLLaDA
开源
让扩散模型也能读懂长文本,解锁超长上下文
Methods and code for extending the context length of diffusion language models
Nitro-1
开源
一步生成高清图,让扩散模型快如闪电
This repo provides a working re-implementation of Latent Adversarial Diffusion Disti···
spark-nlp
开源
在 Spark 上跑 NLP,海量文本秒级处理,生产级模型开箱即用
State of the Art Natural Language Processing
mlx-lm
开源
在 Mac 上本地跑大模型,不买显卡也能流畅推理微调
Run LLMs with MLX
awesome-generative-ai
开源
一榜在手,尽览生成式AI前沿项目与工具
A curated list of modern Generative Artificial Intelligence projects and services