模型層 開放閱讀

程式碼預訓練

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 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型