一、关于 DeepSeek-Prover-V2
简介
DeepSeek-Prover-V2 是一个专为Lean 4形式化定理证明设计的开源大语言模型。
其初始化数据通过由 DeepSeek-V3 驱动的 递归定理证明流程 收集。
冷启动训练过程首先提示DeepSeek-V3将复杂问题分解为一系列子目标,已解决的子目标 证明会被合成为思维链流程,结合DeepSeek-V3的逐步推理能力,为强化学习创建初始冷启动。
这一过程使我们能够将非形式化与形式化的数学推理统一整合到单一模型中。
基础信息
- 开发团队:DeepSeek AI
- 聊天体验:https://chat.deepseek.com/
- HuggingFace :https://huggingface.co/deepseek-ai/DeepSeek-Prover-V2-671B
- 社交媒体:Twitter | Discord | Wechat
- License : Model Agreement | LICENSE-MODEL
模型概述
通过递归证明搜索合成冷启动推理数据
- 为构建冷启动数据集,我们开发了一个简单高效的递归定理证明流程,将DeepSeek-V3作为子目标分解与形式化的统一工具。通过提示DeepSeek-V3将定理分解为高层级证明框架,同时在Lean 4中形式化这些证明步骤,最终生成一系列子目标。
- 我们使用较小的7B模型处理每个子目标的证明搜索,从而降低计算负担。当难题的分解步骤被解决后,我们将完整的逐步形式化证明与DeepSeek-V3的思维链配对,创建冷启动推理数据。
基于合成冷启动数据的强化学习
- 我们筛选出7B证明模型在端到端模式下未能解决、但所有分解子目标均已成功解决的难题子集。通过组合所有子目标的证明,为原始问题构建完整的形式化证明。该证明随后被附加到DeepSeek-V3描述对应引理分解的思维链上,从而生成非形式推理与后续形式化的有机结合。
- 在合成冷启动数据上微调证明模型后,我们执行强化学习阶段以进一步增强其连接非形式推理与形式化证明构建的能力。遵循推理模型的标准训练目标,采用二元正确/错误反馈作为主要的奖励监督形式。
- 最终模型DeepSeek-Prover-V2-671B在神经定理证明领域达到最先进性能:MiniF2F测试集通过率88.9%,解决PutnamBench中658道问题的49道。其针对miniF2F数据集生成的证明可通过ZIP压缩包下载。
二、ProverBench 基准数据集 :AIME与教材问题的形式化基准
我们推出ProverBench基准数据集,包含325道数学问题。
其中15道来自近期AIME竞赛(AIME 24和25)的数论与代数题目,这些题目经过形式化处理,呈现了真实的高中竞赛级挑战。
其余310道问题精选自教材例题和教学教程,构成了多样化且具有教学意义的数学问题形式化集合。该基准旨在实现对高中竞赛题和本科数学题的全面评估。
领域 | 数量 |
---|---|
AIME 24&25 | 15 |
数论 | 40 |
初等代数 | 30 |
线性代数 | 50 |
抽象代数 | 40 |
微积分 | 90 |
实分析 | 30 |
复分析 | 10 |
泛函分析 | 10 |
概率论 | 10 |
总计 | 325 |
三、模型与数据集下载
我们发布了两种参数规模的 DeepSeek-Prover-V2 模型:7B和671B参数版本。其中:
DeepSeek-Prover-V2-671B
基于DeepSeek-V3-Base
训练DeepSeek-Prover-V2-7B
基于DeepSeek-Prover-V1.5-Base
构建,并扩展了上下文长度至32K tokens
模型 | 下载地址 |
---|---|
DeepSeek-Prover-V2-7B | 🤗 HuggingFace |
DeepSeek-Prover-V2-671B | 🤗 HuggingFace |
数据集 | 下载地址 |
---|---|
DeepSeek-ProverBench | 🤗 HuggingFace |
四、快速开始
你可以直接使用Huggingface的 Transformers进行模型推理。
DeepSeek-Prover-V2-671B与DeepSeek-V3采用相同的架构,详细信息和功能支持请参考Hugging Face上的DeepSeek-V3文档。
以下是为miniF2F数据集中的问题生成证明的基础示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(30)
model_id = "DeepSeek-Prover-V2-7B" # or DeepSeek-Prover-V2-671B
tokenizer = AutoTokenizer.from_pretrained(model_id)
formal_statement = """
import Mathlib
import Aesop
set_option maxHeartbeats 0
open BigOperators Real Nat Topology Rat
/-- What is the positive difference between $120\%$ of 30 and $130\%$ of 20? Show that it is 10.-/
theorem mathd_algebra_10 : abs ((120 : ℝ) / 100 * 30 - 130 / 100 * 20) = 10 := by
sorry
""".strip()
prompt = """
Complete the following Lean 4 code:
\```lean4
{}
\```
***
Before producing the Lean 4 code to formally prove the given theorem, provide a detailed proof plan outlining the main proof steps and strategies.
The plan should highlight key ideas, intermediate lemmas, and proof structures that will guide the construction of the final formal proof.
""".strip()
chat = [
{"role": "user", "content": prompt.format(formal_statement)},
]
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
inputs = tokenizer.apply_chat_template(chat, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)
import time
start = time.time()
outputs = model.generate(inputs, max_new_tokens=8192)
print(tokenizer.batch_decode(outputs))
print(time.time() - start)
伊织 xAI 2025-05-05(周一)