DeepSeek-Prover-V2:通过强化学习进行子目标分解,推进形式化数学推理

1. 简介

我们推出 DeepSeek-Prover-V2,这是一个开源的大型语言模型,专为 Lean 4 中的形式化定理证明而设计,其初始化数据通过由 DeepSeek-V3 驱动的递归定理证明流程收集。 冷启动训练过程首先提示 DeepSeek-V3 将复杂问题分解为一系列子目标。 已解决子目标的证明被合成为一种思维链过程,并结合 DeepSeek-V3 的逐步推理,为强化学习创建一个初始冷启动。 这个过程使我们能够将非形式化和形式化数学推理集成到一个统一的模型中。

2. 模型概览

通过递归证明搜索合成冷启动推理数据

使用合成冷启动数据进行强化学习

3. ProverBench:AIME 和教科书问题的形式化

我们引入了 ProverBench,一个包含 325 个问题的数据集。 其中,15 个问题是从最近 AIME 竞赛(AIME 24 和 25)中的数论和代数问题中形式化出来的,提供了真正的高中竞赛级别的挑战。 剩余的 310 个问题来自精选的教科书示例和教育教程,贡献了一个多样化且具有教学基础的形式化数学问题集合。 该基准旨在对高中竞赛问题和本科数学进行更全面的评估。

| Area | Count | | ------------------ | ----- | | AIME 24&25 | 15 | | Number Theory | 40 | | Elementary Algebra | 30 | | Linear Algebra | 50 | | Abstract Algebra | 40 | | Calculus | 90 | | Real Analysis | 30 | | Complex Analysis | 10 | | Functional Analysis | 10 | | Probability | 10 | | Total | 325 |

4. 模型 & 数据集下载

我们发布了两种模型大小的 DeepSeek-Prover-V2:7B 和 671B 参数。 DeepSeek-Prover-V2-671B 是在 DeepSeek-V3-Base 之上训练的。 DeepSeek-Prover-V2-7B 构建于 DeepSeek-Prover-V1.5-Base 之上,并具有高达 32K tokens 的扩展上下文长度。

| Model | Download | | ----------------------- | ----------------------------------------------------------------------------------------------------------------- | | DeepSeek-Prover-V2-7B | 🤗 HuggingFace | | DeepSeek-Prover-V2-671B | 🤗 HuggingFace |

| Dataset | Download | | -------------------- | ------------------------------------------------------------------------------------------------------------- | | DeepSeek-ProverBench | 🤗 HuggingFace |

5. 快速开始

您可以直接使用 Huggingface's 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)


## 6. 许可

DeepSeek-Prover-V2 模型的使用受 [模型许可](https://github.com/deepseek-ai/DeepSeek-Prover-V2/blob/main/LICENSE-MODEL) 的约束。

## 7. 联系方式

如有任何问题,请提出 issue 或通过 service@deepseek.com 与我们联系。