base_model:
- Qwen/Qwen2.5-Coder-7B-Instruct
library_name: transformers
tags:
- verilog
CodeV-R1-Distill-Qwen-7B
论文即将发布!
1. 简介
大语言模型(LLM)的后训练阶段发展迅猛,OpenAI的GPT-o1、DeepSeek-R1和Kimi-1.5等模型展现出卓越的推理能力。其中,DeepSeek-R1引入了一种简单而强大的基于规则的强化学习(RL)方法,能够有效激发推理模式的出现。尽管这些进展主要针对软件编程语言,但将LLM应用于硬件描述语言(HDL)——芯片设计和硬件验证的关键工具——的兴趣日益增长。
然而,Verilog等HDL面临着类似于低资源语言的挑战,包括高质量指令跟随数据的匮乏,以及模型在生成精确寄存器传输级(RTL)代码方面的能力受限。这些限制阻碍了专用代码LLM的性能和跨语言泛化能力。为此,我们提出利用知识蒸馏技术,为更小、更高效的模型赋予类似DeepSeek-R1的推理能力。
作为CodeV工作的延续,我们推出了CodeV-R1-Distill-Qwen-7B,这是一个基于CodeV数据集从DeepSeek-R1蒸馏而来的模型。该模型在主要Verilog基准测试中超越了以往的非推理LLM,展现出卓越的代码合成和问题解决能力。有趣的是,Verilog代码的蒸馏还提升了模型的数学推理能力,这表明以硬件为中心的训练与一般逻辑推理之间存在更广泛的协同效应。
2. 模型概述
- 数据准备: 我们首先使用Deepseek-v3对原始CodeV数据集进行重新总结和问题构建。随后,我们过滤掉那些Qwen2.5-Coder-7B-Instruct和Qwen2.5-Coder-32B-Instruct在五次尝试内即可解决的简单问题,以及存在不可综合问题的数据。对于剩余数据,我们使用DeepSeek-R1为每个问题生成一个回答。与基准测试问题相比,Rouge-L分数大于0.5的问题也被过滤掉。经过这些处理后,大约保留了87,000个(问题,代码)对。
- 训练: 我们使用LLaMAFactory对这87,000对数据进行监督微调(SFT),应用于Qwen2.5-Coder-7B-Instruct。训练共进行六个周期,学习率为1e-5,批量大小为64。
3. 评估结果
在评估阶段,最大生成长度设置为16,384个token,温度为0.6,每个查询生成20个回答以估算pass@1分数。
我们的评估涵盖了Verilog基准测试,包括VerilogEval和RTLLM。对于VerilogEval v2,我们考察了从规范到RTL的翻译和代码补全任务的零样本场景。关于RTLLM,我们报告了版本1.1的结果,该版本提供了更广泛的比较分析。此外,我们发现,通过DeepSeek-R1在Verilog问题中获得的推理过程,提升了模型在领域外的数学能力。
VerilogEval (v2)
模型 |
模型大小 |
类型 |
规范到RTL |
补全 |
GPT-4o |
未公开 |
通用 |
62.5% |
59.0% |
GPT-4 Turbo |
未公开 |
通用 |
61.1% |
53.9% |
GPT-4 |
未公开 |
通用 |
32.0% |
42.3% |
Mistral Large |
未公开 |
通用 |
37.5% |
34.0% |
Llama3.1 |
405B |
通用 |
57.2% |
56.4% |
Llama3.1 |
70B |
通用 |
42.8% |
35.3% |
Llama3 |
70B |
通用 |
43.9% |
37.8% |
Llama2 |
70B |
通用 |
5.3% |
1.3% |
Llama3.1 |
8B |
通用 |
19.1% |
2.6% |
CodeLlama |
70B |
编程 |
34.9% |
37.2% |
DeepSeek Coder |
33B |
编程 |
21.7% |
25.0% |
CodeGemma |
7B |
编程 |
9.5% |
8.3% |
DeepSeek Coder |
6.7B |
编程 |
29.6% |
24.4% |
RTL-Coder |
6.7B |
Verilog RTL |
36.8% |
35.9% |
CodeV-R1-distill (ours) |
7B |
Verilog RTL |
65.4% |
65.1% |
RTLLM (v1.1)
模型 |
模型大小 |
类型 |
Pass@1 |
GPT-4o |
未公开 |
通用 |
33.8% |
GPT-3.5 Turbo |
未公开 |
通用 |
28.3% |
Llama3.1 |
405B |
通用 |
38.9% |
Nemotron-4 |
340B |
通用 |
18.9% |
Llama3.1 |
8B |
通用 |
19.1% |
CodeLlama |
7B |
编程 |
17.9% |
CodeQwen |
7B |
编程 |
24.1% |
Starcoder2 |
15B |
编程 |
15.5% |
DeepSeek Coder |
6.7B |
编程 |
23.1% |
DeepSeek-Coder-V2 |
16B |
编程 |
33.1% |
DeepSeek-Coder-V2 |
236B |
编程 |
34.5% |
RTL-Coder |
6.7B |
Verilog RTL |
36.8% |
CraftRTL |
6.7B |
Verilog RTL |
53.1% |
CodeV-R1-distill (ours) |
7B |
Verilog RTL |
56.2% |
数学
模型 |
AIME |
数学 |
AMC |
Minerva |
奥赛基准 |
平均 |
Qwen2.5-7b-instruct-1M |
11.25% |
72.61% |
41.11% |
25.92% |
34.66% |
37.11% |
Qwen2.5-math-7b-instruct |
12.08% |
82.25% |
49.4% |
27.64% |
37.31% |
41.74% |
Qwen2.5-coder-7b-instruct (baseline) |
5.63% |
63.5% |
35.62% |
21.02% |
28.64% |
30.88% |
CodeV-R1-distill (ours) |
11.04% |
74.35% |
45.86% |
25.79% |
38.7% |
39.15% |
4. 使用方式
CodeV-R1-Distill-Qwen-7B的使用方式与Qwen或Llama模型相同。
例如,您可以使用vLLM轻松启动服务:
vllm serve zhuyaoyu/CodeV-R1-Distill-Qwen-7B --tensor-parallel-size 2 --max-model-len 16384 --enforce-eager
使用建议
在训练和评估过程中,我们使用了以下系统提示:
你是一个乐于助人的助手。助手首先在心中思考推理过程,然后向用户提供答案。推理过程和答案分别包含在<think></think>和<answer></answer>标签中,即<think>此处为推理过程</think><answer>此处为答案</answer>。现在用户要求你编写Verilog代码。经过思考后,当你最终得出结论时,将最终的Verilog代码包含在<answer></answer>标签内的```verilog ```中,即<answer>```verilog\n module top_module(in, out, ...) ... ```</answer>.\n
建议使用此提示。
5. 许可证
CodeV-R1-Distill-Qwen-7B源自Qwen-2.5系列,其原始许可证为Apache 2.0许可证,现通过使用DeepSeek-R1筛选的87k样本进行了微调。
6. 引用
@misc{CodeV-R1-Distill-Qwen-7B,
author = {IPRC-DIP},
title = {基于DeepSeek-R1蒸馏的CodeV模型},
url = {https://huggingface.co/zhuyaoyu/CodeV-R1-Distill-Qwen-7B},
year = {2025}
}