模型层 开放阅读

代码预训练

Code Pretraining

概念 ID
code-pretraining
更新时间
2026-05-29
来源数量
待补

代码预训练(Code Pretraining)

3 秒看懂

代码预训练 = 用海量源代码(+ 技术文档)作为主要语料,从零或继续训练语言模型,使其获得”写代码、读代码、改代码”的原生能力。它是 Copilot、CodeLlama、DeepSeek-Coder 等 AI 编程助手的底座技术。

3 分钟产业解释

为什么单独训练”代码”?

通用大模型(GPT-4、Claude 等)已经能写代码,但专业代码模型仍有独立价值:

维度通用模型代码专用模型
训练数据网页文本为主,代码占比有限代码占比极高(预估 50%–90%+)
参数效率需要更大模型才能达到同等代码能力同等代码任务下可更小、更便宜
部署场景通常云端 API可本地/私有化部署(代码敏感)
延迟要求通用延迟IDE 补全需极低延迟(<200ms)

商业逻辑:代码预训练让企业能用较小模型(7B–34B 参数量级)获得接近大模型的编程能力,降低推理成本、支持私有部署,满足代码不出企业网络的需求。

产业链位置

算力层 ─→ 预训练 ─→ 代码模型 ─→ 微调/对齐 ─→ 产品层
(芯片)    (代码数据)   (底座)     (RLHF/DPO)    (Copilot/IDE插件)

代码预训练处于模型底座环节,上游是算力与数据,下游是具体应用。

15 分钟专家深入

核心技术栈

1. 数据工程——最关键的护城河

代码预训练的质量高度依赖数据质量。典型数据管线包括:

原始代码仓库(GitHub/GitLab)
    ↓
许可证过滤(保留宽松许可:MIT/Apache/BSD 等)
    ↓
质量过滤(去自动生成代码、去二进制、去低星仓库等)
    ↓
去重(文件级 MinHash 去重 + 跨仓库 near-dedup)
    ↓
编程语言平衡采样(避免 Python 过度主导)
    ↓
格式化 + 拼接(补全仓库结构信息、添加文件路径标识)

关键细节

  • 许可证问题是法律红线——GitHub 上大量代码采用 GPL 等传染性许可,直接用于训练存在法律风险
  • 去重质量直接影响训练效率——据 BigCode 项目估算,高质量去重可减少 30%–50% 重复数据
  • 代码的”质量”难以定义——星标数、文件长度、注释比例等启发式指标均有局限

2. Tokenization 针对代码的优化

通用 BPE 分词器对代码效率低(如缩进空格、括号、下划线连接符等被切得很碎)。代码模型通常:

  • 使用更大词表(据各厂商公开信息,32K–200K 不等)
  • 保留空格/缩进的完整 token(Python 缩进语义关键)
  • 将常见编程关键字、API 名称设为独立 token

3. 训练目标

主流采用因果语言建模(Causal LM),即 next-token prediction:

\mathcal&#123;L&#125; = -\sum_&#123;t=1&#125;^&#123;T&#125; \log P(x_t | x_&#123;&lt;t&#125;; \theta)

部分工作探索了:

  • Fill-in-the-Middle (FIM):将代码切为 prefix + middle + suffix,训练模型根据上下文补全中间部分。这对 IDE 补全场景更自然
  • 多任务混合:在代码语料中混入一定比例自然语言文本,保持通用语言能力

4. 架构选择

代码预训练没有独特的模型架构——主流仍是 Transformer decoder-only,与通用 LLM 相同。差异主要在:

  • 上下文长度:代码场景需要长上下文(理解完整文件、跨文件依赖),主流模型支持 4K–128K tokens
  • 位置编码:长上下文场景多采用 RoPE 及其变体(NTK-aware scaling、YaRN 等)

技术原理

训练流程示意

┌─────────────────────────────────────────────────────────────┐
│                    代码预训练流程                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────┐    ┌───────────┐    ┌──────────────────┐     │
│  │ 代码语料  │───→│ Tokenizer │───→│  训练数据集       │     │
│  │ (TB级)    │    │ (代码优化) │    │  (token序列)      │     │
│  └──────────┘    └───────────┘    └────────┬─────────┘     │
│                                            │               │
│                                            ↓               │
│                                 ┌──────────────────┐       │
│                                 │ Transformer LM   │       │
│                                 │ (Decoder-only)   │       │
│                                 │                  │       │
│                                 │ · 自注意力层      │       │
│                                 │ · FFN 层         │       │
│                                 │ · 位置编码 (RoPE) │       │
│                                 └────────┬─────────┘       │
│                                          │                 │
│                                          ↓                 │
│                                 ┌──────────────────┐       │
│                                 │ 代码生成/补全/理解 │       │
│                                 └──────────────────┘       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Fill-in-the-Middle (FIM) 机制

原始代码:
def hello():
    print("world")

FIM 训练格式:
 def hello():\n     \n<<|fim_middle|>> print("world")

训练目标: 预测<|fim_middle|>部分

FIM 让模型学会”双向理解”代码上下文,而非仅从左到右生成,这对代码补全(光标位置在代码中间)场景至关重要。

上下文长度与窗口技术

代码文件天然较长(单文件可达数百行),跨文件依赖更长。关键技术:

  • RoPE 长度外推:NTK-aware scaling、YaRN 等方法扩展训练上下文
  • 稀疏注意力:部分工作探索对长代码的高效注意力机制,但主流仍用标准注意力 + FlashAttention 加速

技术演进史

时间里程碑关键意义
2021.07Codex(OpenAI)发布首次展示 LLM 代码能力,基于 GPT-3 微调,催生 GitHub Copilot
2022CodeGen(Salesforce)开源多语言代码生成,探索多轮训练
2023.02StarCoder(BigCode)开源社区驱动,15B 参数,强调数据透明与许可证合规
2023.08CodeLlama(Meta)开源基于 Llama 2 微调,7B/13B/34B/70B 多规格,支持 FIM
2023.10DeepSeek-Coder 发布国产代码模型代表,据公开 benchmark 表现优异
2024.02StarCoder2 开源改进数据质量,3B/7B/15B 规格
2024DeepSeek-Coder-V2 发布引入 MoE 架构,更大参数但激活参数可控

趋势观察

  • 从”闭源 API”到”开源可本地部署”——CodeLlama、StarCoder 系列推动了本地代码助手普及
  • 从”纯代码”到”代码+自然语言混合”——更贴近实际开发(写注释、读文档、写 commit message)
  • 从”单文件”到”多文件/仓库级理解”——上下文长度持续扩展

技术路线对比

维度路线 A:通用模型继续训练路线 B:从零预训练代码模型
代表CodeLlama(Llama 2 → 代码)StarCoder(纯代码语料训练)
数据需求相对少(已在通用语料上学过语言)大(需从头学习语言+代码)
通用语言能力保留较好可能退化(除非混入自然语言)
训练成本较低(继承预训练权重)较高
代码纯粹性仍受通用知识干扰更专注于代码模式
主流选择✅ 目前主流(效率高)用于特定场景或研究

量化参考(据公开 benchmark 公布数据,非独立复现):

模型参数量HumanEval (pass@1)MBPP (pass@1)备注
Codex~12B~28%-早期基线
StarCoder15B~33%~43%开源社区
CodeLlama-34B34B~48%~55%Meta 开源
DeepSeek-Coder-33B33B~56%*~65%**据官方报告
GPT-4 (通用)未披露~67%*~73%**据 OpenAI 报告

注:不同评估设置(是否含 CoT、采样温度等)会影响数值,跨论文比较需谨慎。


上下游

上游

┌─────────────────────────────────────────────────────┐
│                      上 游                           │
├──────────┬──────────┬──────────┬─────────────────────┤
│   算力   │   数据   │  框架    │      基础设施        │
├──────────┼──────────┼──────────┼─────────────────────┤
│ GPU/TPU  │ GitHub   │ PyTorch  │ 分布式训练框架        │
│ (NVIDIA  │ GitLab   │          │ (DeepSpeed/Megatron) │
│  A100/H  │ Stack    │          │                      │
│ 100/TPU) │ Overflow │          │ 数据存储/处理管线     │
└──────────┴──────────┴──────────┴─────────────────────┘
  • 算力:代码预训练对算力需求与通用 LLM 同级,通常需要数百到数千 GPU 训练数周
  • 数据:GitHub 是最大代码语料来源,但许可证问题是核心风险点
  • 框架:与通用 LLM 训练共用 PyTorch + 分布式框架

下游

┌─────────────────────────────────────────────────────┐
│                      下 游                           │
├──────────┬──────────┬──────────┬─────────────────────┤
│ IDE 插件 │ API 服务  │ 企业私有 │      垂直场景        │
│ (Copilot │ (云端调用 │ 部署     │                      │
│  Codeium)│  按量付费)│ (代码不出 │ 代码审计/安全扫描    │
│          │          │  企业网)  │ 测试生成/文档生成    │
└──────────┴──────────┴──────────┴─────────────────────┘

关键指标

模型能力评估

指标含义说明
HumanEval pass@1164 道编程题,单次生成通过率最广泛使用的代码评估基准
MBPP974 道基础编程题测试基础编程能力
MultiPL-EHumanEval 多语言扩展覆盖 C++/Java/JS/Rust 等
DS-1000数据科学代码(NumPy/Pandas 等)测试实际工程能力
CrossCodeEval跨文件代码补全测试仓库级理解

工程指标

指标范围说明
训练 token 数数十亿 – 数千亿 tokens代码模型通常训练数据量较大
上下文长度4K – 128K tokens长上下文对代码理解关键
推理延迟<200ms(IDE 补全场景)实时补全的核心约束
模型大小1B – 70B+ 参数边缘部署偏好 7B–13B

供需与市场数据

需求侧

代码补全/生成已成为 AI 最具商业价值的应用场景之一

  • GitHub Copilot 付费用户数据公开报道已达数百万级别(具体数字需参考 GitHub/Microsoft 最新财报)
  • 企业需求驱动:私有化部署(代码安全)、定制化微调(内部代码库)

供给侧

供给侧玩家模型/产品开源/闭源模式
OpenAICodex → GPT-4 代码能力闭源API
GitHub (Microsoft)Copilot闭源订阅
MetaCodeLlama开源免费
BigCodeStarCoder/StarCoder2开源免费
DeepSeekDeepSeek-Coder开源免费+API
Codeium自研模型部分开源免费/付费
Tabnine自研模型闭源订阅

市场规模:AI 代码工具市场处于快速增长期,据第三方行业报告估算,全球 AI 编程助手市场规模预计在 2020 年代末达到数十亿美元量级(具体数字需参考最新行业报告)。


代表公司与资本映射

核心玩家

公司产品/模型融资/估值关键优势
GitHub (Microsoft)Copilot微软子公司与 VS Code/GitHub 深度集成,分发优势
OpenAIGPT-4 系列~$80B+ 估值 [据公开报道]模型能力领先
CodeiumCodeium据公开报道已获数亿美元融资免费策略获客,企业版变现
TabnineTabnine据公开报道已获融资私有化部署,企业安全合规
SourcegraphCody据公开报道已获融资代码搜索+AI 结合
DeepSeek (幻方量化)DeepSeek-Coder自有资金国产开源代表,性价比

资本映射逻辑

代码预训练投资主线:

1. 工具层:Copilot 类产品(订阅模式,高粘性)
   → 关注:GitHub(微软)、Codeium、Tabnine

2. 模型层:开源代码模型(生态卡位)
   → 关注:Meta(CodeLlama)、DeepSeek

3. 数据层:高质量代码数据集(稀缺资源)
   → 关注:数据合规、许可证管理能力

4. 应用层:代码安全、测试生成、文档生成
   → 关注:垂直场景 AI 工具创业公司

投资逻辑

核心判断

1. 代码是 AI 最容易变现的场景之一

  • 开发者付费意愿高(工具节省时间,ROI 直观)
  • 订阅模式粘性强(习惯形成后迁移成本高)
  • 企业预算明确(开发者工具采购)

2. 开源 vs 闭源的博弈

  • 开源模型(CodeLlama、DeepSeek-Coder)持续逼近闭源能力
  • 企业私有部署需求利好开源生态
  • 但闭源在最新能力上仍保持领先(GPT-4 级别)

3. 关注边际变化

  • 上下文长度扩展:能否理解完整仓库是差异化关键
  • 多模态代码:图表/UI → 代码的生成能力
  • Agent 化:代码模型从”补全”走向”自主开发”

风险提示

  • 法律风险:代码版权诉讼(GitHub Copilot 已面临相关诉讼)
  • 模型同质化:开源模型能力趋近,差异化空间收窄
  • 用户迁移成本低:IDE 插件切换成本相对低

常见误读纠偏

❌ 误读 1:“代码预训练需要用全新的 Transformer 架构”

✅ 纠正:代码预训练使用的是与通用 LLM 完全相同的 Transformer decoder-only 架构。差异在数据(代码语料为主)和 Tokenizer(针对代码优化),而非架构本身。所谓”代码专用架构”的尝试(如 Graph Neural Network + Transformer 混合)尚未成为主流。

❌ 误读 2:“代码模型越大越好,必须百亿参数以上”

✅ 纠正:对于 IDE 实时补全场景,7B–13B 参数模型 + 量化 + 优化推理 是主流部署选择。34B+ 模型更适合复杂代码生成/审查,但推理成本和延迟更高。小模型在特定场景(如单一语言补全)可能更具性价比。

❌ 误读 3:“HumanEval 高分 = 好用的代码助手”

✅ 纠正:HumanEval 是孤立函数级评估,测试的是算法题能力。实际代码助手需要:① 理解项目上下文;② 遵循代码风格;③ 跨文件推理;④ 与用户交互。HumanEval 分数与实际用户体验的相关性有限,需结合 CrossCodeEval、SWE-bench 等更贴近真实的评估。

❌ 误读 4:“代码预训练的语料越多越好”

✅ 纠正:数据质量远比数量重要。重复、低质量、自动生成的代码会降低训练效果。BigCode 项目的实践表明,精心去重和过滤后的数据集(远小于原始爬取量)训练效果更好。盲目扩大语料规模可能引入噪声。


学习路径

入门(1–2 周)

  1. 概念理解:阅读 OpenAI Codex 原始博客(2021),理解代码预训练的动机
  2. 动手体验:使用 Hugging Face 上的 StarCoder/CodeLlama,体验代码生成
  3. 评估入门:跑一次 HumanEval 评估脚本,理解 pass@1 的含义

进阶(1–2 月)

  1. 数据工程:研究 BigCode 项目的数据处理管线(The Stack 数据集文档)
  2. 训练实操:用 DeepSpeed/Megatron 在小规模数据上预训练代码模型(验证流程)
  3. 论文精读:StarCoder、CodeLlama、DeepSeek-Coder 的技术报告

专家(持续)

  1. 前沿追踪:关注 SWE-bench(真实 GitHub issue 修复评估)、CrossCodeEval(跨文件理解)
  2. 领域融合:代码 + 安全(漏洞检测)、代码 + 测试(自动化测试生成)
  3. 产业分析:跟踪 Copilot 商业化进展、企业采购趋势

一句话总结

代码预训练是让 AI “像程序员一样思考”的底座技术——它不改变 Transformer 架构,而是通过精心构造的代码语料和针对性优化,使模型获得高效的代码生成与理解能力,是当前 AI 最具商业变现潜力的应用方向之一。


延伸阅读与来源

核心论文/技术报告

  • Codex: Chen et al., “Evaluating Large Language Models Trained on Code”, 2021 (OpenAI)
  • StarCoder: Li et al., “StarCoder: May the source be with you!”, 2023 (BigCode)
  • CodeLlama: Rozière et al., “Code Llama: Open Foundation Models for Code”, 2023 (Meta)
  • DeepSeek-Coder: Guo et al., “DeepSeek-Coder: When the Large Language Model Meets Programming”, 2024 (DeepSeek)
  • FIM: Bavarian et al., “Efficient Training of Language Models to Fill in the Middle”, 2022 (OpenAI)

评估基准

  • HumanEval: github.com/openai/human-eval
  • BigCode Bench: 更贴近真实场景的代码评估

数据集

  • The Stack: bigcode-project/the-stack (许可证过滤的代码数据集)
  • StarCoderData: bigcode-project/starcoderdata

行业报告(需查阅最新版本)

  • GitHub Universe 年度开发者报告
  • Stack Overflow Developer Survey
  • 各投行 AI 编程工具行业分析(Goldman Sachs、Morgan Stanley 等)

本文档写于 2025 年初,基于公开信息整理。代码预训练领域发展迅速,具体模型性能和市场数据请以最新公开披露为准。

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型