概述
接上篇DeepSeek系列模型/項目介紹。
DeepSeek-Coder
代碼大模型系列,旨在通過AI技術來理解和生成代碼,提升開發效率。
特性:
- 核心定位:開源代碼智能模型,促進研究和商業應用
- 模型規模:從1.3B到236B等多種參數,V2採用MoE架構
- 訓練數據:從零開始訓練,使用2萬億高質量代碼和自然語言Token
- 關鍵特色:項目級代碼理解、填充空白任務、支持超長上下文(最高128K)、寬鬆許可證
- 性能表現:在多項基準測試中超越Codex和GPT-3.5等閉源模型
技術創新
- 高質量訓練數據:從頭開始訓練,訓包含2萬億個Token,87%代碼,13%中英文自然語言。以代碼為主的數據構成,為模型的專業能力奠定基礎;
- 項目級代碼理解:與僅理解單文件的模型不同,在項目級代碼語料庫上進行預訓練;能更好地理解整個代碼庫上下文和文件間的關聯;
- 填充空白任務:採用
填充空白的創新訓練任務。能在代碼末尾追加內容,在代碼中間智能地補全或修復代碼,增強代碼編輯靈活性; - 支持超長上下文:支持16K上下文窗口,V2擴展到128K,使模型可處理和分析非常長的代碼文件或整個項目片段。
版本號:
- 1:支持89種編程語言
- 2:支持338種編程語言
V1
論文,GitHub,系列包括:
- 1.3B-Base
- 1.3B-Instruct
- 6.7B-Base
- 6.7B-Instruct
- 7B-Base-v1.5
- 7B-Instruct-v1.5
- 33B-Base
- 33B-Instruct
V2
論文,GitHub,系列包括:
- V2-Base:236B參數
- V2-Instruct:236B參數
- V2-Lite-Base:16B參數
- V2-Lite-Instruct:16B參數
- V2-Instruct-0724:236B參數
實戰
廣泛應用於各種開發場景:
- 智能代碼生成與補全:可根據自然語言描述生成完整的代碼片段、函數、腳本;
- 代碼調試與優化:幫助開發者分析並修復代碼中的錯誤,還能建議性能優化方案;如將循環替換為列表推導式以提升執行效率;
- 自動化重複任務:可自動生成技術文檔、單元測試用例和進行代碼審查,使開發者從繁瑣重複的任務中解放出來。
示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_name = "deepseek-ai/deepseek-coder-6.7b-base"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
input_text = "#write a quick sort algorithm"
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
最佳實踐
- 有效的提示詞工程:
- 使用結構化提示,清晰定義:角色、任務和約束條件等;
- 對於複雜需求,採用分步生成的策略,將大任務拆解成多個子任務。
- IDE:可集成到VS Code等主流IDE中,提供實時的代碼補全和建議。
- 處理侷限性:
- 對於複雜業務邏輯,模型準確率可能下降,建議提供詳細的業務規則文檔作為上下文輸入,並對關鍵邏輯進行人工審核;
- 模型對某些新興技術棧的支持可能仍在完善中,建議關注官方更新日誌。
DeepSeek-Prover
一個專注於形式化數學定理證明的系列模型,能夠生成在Lean4這類證明助手中可被驗證的、邏輯嚴謹的數學證明。核心用途是讓AI能夠像數學家一樣進行嚴謹的數學推理,並輸出機器可驗證的證明過程。
|
主要用途
|
具體描述
|
|
自動定理證明
|
針對複雜的數學定理(如費馬大定理),模型可將其分解為一系列更簡單子目標,並生成完整的Lean4形式化證明代碼
|
|
數學教育與研究
|
模型已集成到新東方、猿輔導等智能教輔系統中。能提供詳細的帶有自然語言解釋的推理過程,幫助學習者理解數學證明
|
|
工業級驗證
|
在芯片設計、密碼學等需要高度邏輯嚴謹的科研領域,可用於進行形式化驗證,確保設計正確性
|
|
推動AI推理前沿
|
探索非正式推理(像人類一樣思考)與形式化驗證(機器可檢查的證明)的結合,是邁向更高級AGI的關鍵一步
|
解決AI在數學推理領域的一些核心挑戰:
- 填補兩種推理之間的鴻溝:傳統的AI模型可能能用自然語言説出答案,但無法給出嚴謹證明;而有些模型生成的證明又過於僵化。創新性地融合非正式推理(生成易於理解的自然語言推理鏈)和形式化驗證(生成可執行的Lean4代碼),兼顧可理解性和100%的邏輯嚴謹性;
- 分解-求解的高效策略:面對複雜問題,採用雙引擎系統。首先由一個大型模型(如671B參數版本)將難題分解成可管理的子目標鏈,然後使用更小模型(如7B參數版本)並行處理這些子目標。不僅大幅提升計算效率,也使得證明過程更加可靠;
- 卓越的性能表現:最強版本DeepSeek-Prover-V2-671B在
MiniF2F-test數據集上達到88.9%的形式化證明通過率,相比前代提升47%。解決PutnamBench(一個高難度數學競賽題集)中的49道難題,遠超同類模型的23道。
版本如下:
- 1:論文,數據集,7B參數模型;
- 1.5:論文,GitHub,7B參數模型包括:V1.5-RL、V1.5-SFT、V1.5-Base;
- 2:模型包括:GitHub,V2-7B、V2-671B;ProverBench數據集
DeepSeek-Math
論文,專注於數學推理的LLM,旨在解決傳統大模型在處理數學符號、邏輯鏈推導和複雜問題求解時的性能瓶頸。
|
特點維度
|
具體説明
|
|
核心定位
|
提升開放語言模型在數學問題上的推理能力,覆蓋從基礎算術到競賽級數學題
|
|
技術架構
|
基於DeepSeek-Coder代碼模型初始化,部分版本採用混合專家架構
|
|
訓練數據
|
使用從Common Crawl提取的1200億高質量數學相關Token進行繼續預訓練
|
|
突出性能
|
以70億參數在競賽級MATH基準測試達到51.7%準確率,逼近GPT-4水平
|
技術創新
- 代碼模型初始化:與從通用模型初始化相比,使用
DeepSeek-Coder-Base-v1.5 7B作為基礎進行初始化,能獲得更好的數學能力。表明代碼和數學推理所需的邏輯思維能力存在共通之處; - 高質量訓練數據:通過精心設計的數據選擇管道,從海量網絡數據中篩選出1200億高質量的數學相關Token構成訓練數據集。是開源數據集OpenWebMath的9倍,為模型性能提供堅實基礎;
- 創新的強化學習:在訓練中引入GRPO方法,在增強數學推理能力的同時,優化PPO內存使用;
- 混合推理策略:融合思維鏈(CoT) 和程序輔助(PAL) 兩種推理策略。思維鏈通過自然語言逐步推導,而程序輔助則將問題轉化為可執行代碼,利用Python解釋器安全執行計算,大幅提升解題準確率。
GitHub,系列模型包括:
- 7B-Base
- 7B-RL
- 7B-Instruct
示例:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
model_name = "deepseek-ai/deepseek-math-7b-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
model.generation_config = GenerationConfig.from_pretrained(model_name)
model.generation_config.pad_token_id = model.generation_config.eos_token_id
text = "The integral of x^2 from 0 to 2 is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs.to(model.device), max_new_tokens=100)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
應用前景:
- 教育領域:可作為智能輔導系統,幫助學生解決數學問題,提供詳細的解題步驟和解釋,或用於自動批改數學作業;
- 科研領域:輔助研究人員進行復雜的數學推導和計算,例如在理論物理、量子化學等領域加速研究進程;
- 工業領域:應用於優化問題和控制系統設計,如在物流路徑規劃中解決TSP問題,或在金融工程中進行風險價值計算優化。
ESFT
論文,Expert-Specialized Fine-Tuning縮寫,專家級微調,通過選擇性訓練MoE架構中與任務相關的專家模塊,徹底改變模型微調方式。與微調整個模型不同,ESFT識別並調整與特定任務最相關的專家,在保持或提升性能的同時顯著提高效率。
關鍵優勢:
- 參數效率:僅訓練總參數的5-10%
- 任務專業化:每個專家專注於特定領域
- 資源優化:降低內存和計算需求
- 模塊化架構:易於組合專業專家處理多任務場景
基於DeepSeek MoE架構構建,採用精密的專家選擇和訓練流程:
核心流程:
- 專家評分:使用評分函數評估每個專家與特定任務的相關性
- 選擇性訓練:將無關專家轉換為不可訓練的緩衝區,同時保留相關專家作為參數
- 配置管理:為定向微調生成專家特定配置
系列模型分兩類,Token和Gate,每一類各6種任務,包括:
- Vanilla-Lite,16B參數的基礎模型;
- Token-Law-Lite,1B參數
- Token-Summary-Lite,1B參數
- Token-Code-Lite,2B參數
- Token-Intent-Lite,2B參數
- Token-Translation-Lite,0.9B參數
- Token-Math-Lite,1B參數
- Gate-Law-Lite,2B參數
- Gate-Summary-Lite,2B參數
- Gate-Translation-Lite,1B參數
- Gate-Code-Lite,2B參數
- Gate-Intent-Lite,2B參數
- Gate-Math-Lite,2B參數
GitHub用於存放腳本、數據集、配置文件、結果等。
數據集包括訓練和評估兩類,4種任務:
數據集解讀
|
任務
|
數據集
|
描述
|
使用場景
|
|
意圖識別
|
|
分類用户意圖
|
聊天機器人、虛擬助手
|
|
法律處理
|
|
法律文檔分析
|
法律AI、合同分析
|
|
文本摘要
|
|
生成簡潔摘要
|
內容創作、文檔處理
|
|
翻譯
|
|
跨語言翻譯
|
多語言應用
|
支持兩種主要訓練方法:
|
腳本
|
用途
|
GPU支持
|
關鍵特性
|
|
|
基礎微調
|
單GPU
|
設置簡單,適合實驗
|
|
|
專家並行訓練
|
多GPU
|
針對大規模訓練優化,專家分佈
|
評估系統包含評估模型性能的綜合工具:
- 多GPU評估:跨多個設備擴展評估,
eval_multigpu.py - 專家評分:分析專家相關性和性能,
scripts/expert/get_expert_scores.py - 配置生成:創建最優專家配置,
scripts/expert/generate_expert_config.py