前言
近期,刘聪NLP开源了开源中文DeepSeek-R1(满血)蒸馏数据集包括SFT版本和普通版本,话不多说,先放数据下载链接。
中文基于满血DeepSeek-R1蒸馏数据集-110k-SFT版本:
https://modelscope.cn/datasets/liucong/Chinese-DeepSeek-R1-Distill-data-110k-SFT
中文基于满血DeepSeek-R1蒸馏数据集-110k:
https://modelscope.cn/datasets/liucong/Chinese-DeepSeek-R1-Distill-data-110k
本数据集为中文开源蒸馏满血R1的数据集,数据集中不仅包含math数据,还包括大量的通用类型数据,总数量为110K。
为什么开源这个数据?
DeepSeek-R1的效果十分强大,并且基于R1蒸馏数据SFT的小模型也展现出了强大的效果,但目前我们发现,大部分开源的R1蒸馏数据集均为英文数据集。同时,R1的报告中展示,蒸馏模型中同时也使用了部分通用场景数据集,来保障训练中不丢失通用能力。为了帮助大家更好地复现R1蒸馏模型的效果,特此开源中文数据集。
该数据集发布后,也迅速登上HuggingFace Trending榜!
该中文数据集中的数据分布如下:
- Math:共计36568个样本,
- Exam:共计2432个样本,
- STEM:共计12648个样本,
- General:共计58352,包含弱智吧、逻辑推理、小红书、知乎、Chat等
01.数据集蒸馏细节
数据的prompt源来自如下数据集:
- Haijian/Advanced-Math
- gavinluo/applied_math
- meta-math/GSM8K_zh
- EduChat-Math
- m-a-p/COIG-CQIA
- m-a-p/neo_sft_phase2
- hfl/stem_zh_instruction
同时为了方便大家溯源,在每条数据的repo_name字段中都加入的原始数据源repo。
在蒸馏过程中,按照DeepSeek-R1官方提供的细节,进行数据蒸馏。
- 不增加额外的系统提示词
- 设置temperature为0.6
- 如果为数学类型数据,则增加提示词,“请一步步推理,并把最终答案放到 \boxed{}。”
- 防止跳出思维模式,强制在每个输出的开头增加"\n",再开始生成数据
由于模型贡献者个人资源有限,所有数据的蒸馏均调用无问芯穹的企业版满血R1 API生成,在此由衷的感谢无问芯穹提供的支持。
02.数据打分细节
数据生成结果进行了二次校验,并保留了评价分数。
针对Math和Exam数据,先利用Math-Verify进行校对,无法规则抽取结果的数据,再利用Qwen2.5-72B-Instruct模型进行打分,正确为10分,错误为0分。
针对其他数据,直接利用Qwen2.5-72B-Instruct模型从无害性、有用性、正确性/完整性三个角度进行打分,分值范围为0-10分。
本数据集保留了最后打分结果,为后续的数据筛选提供帮助,但注意,所有打分均基于模型,因此评分可能并不准确,请斟酌使用。
03.最佳实践
ms-swift已经接入了中文基于满血DeepSeek-R1蒸馏数据集,通过指定`--dataset liucong/Chinese-DeepSeek-R1-Distill-data-110k-SFT`即可选择该数据集进行训练。ms-swift是魔搭社区官方提供的大模型与多模态大模型训练部署框架。
ms-swift开源地址:
https://github.com/modelscope/ms-swift
本章将展示使用ms-swift对该数据集进行SFT。在开始训练之前,请先安装ms-swift:
# pip install git+https://github.com/modelscope/ms-swift.git git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e .
微调脚本如下,我们随机抽样数据集中的2000条进行训练:
nproc_per_node=2 CUDA_VISIBLE_DEVICES=0,1 \ NPROC_PER_NODE=$nproc_per_node \ swift sft \ --model Qwen/Qwen2.5-1.5B \ --train_type full \ --dataset 'liucong/Chinese-DeepSeek-R1-Distill-data-110k-SFT#2000' \ --torch_dtype bfloat16 \ --num_train_epochs 10 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-5 \ --gradient_accumulation_steps $(expr 16 / $nproc_per_node) \ --eval_steps 200 \ --save_steps 200 \ --save_total_limit 5 \ --logging_steps 5 \ --max_length 8192 \ --output_dir output \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --deepspeed zero2
训练显存占用:(训练时长:40分钟)
推理脚本如下,需要将`--model`替换成训练生产的last checkpoint文件夹:
# pip install vllm -U CUDA_VISIBLE_DEVICES=0 \ swift infer \ --model output/vx-xxx/checkpoint-xxx \ --stream true \ --infer_backend vllm \ --max_model_len 8192 \ --max_new_tokens 2048 \ --temperature 0.3
推送到ModelScope:
swift export \ --model output/vx-xxx/checkpoint-xxx \ --push_to_hub true \ --hub_model_id '<your-model-id>' \ --hub_token '<your-sdk-token>'
训练效果:(有部分内容省略)
04.局限性
由于数据是由蒸馏DeepSeek-R1生成的,未经严格验证,在事实性和其他方面还存在一些不足。因此,在使用此数据集时,请务必注意甄别。
本数据集不代表任何一方的立场、利益或想法,无关任何团体的任何类型的主张。因使用本数据集带来的任何损害、纠纷,本项目的开发者不承担任何责任。
点击链接即可跳转数据集~