R1-Nature 项目旨在小模型上复现类 R1 结果,并通过比较性实验展示不同思维推理 CoT 数据集与不同尺寸小模型(0.5B、1B、1.5B、3B)在微调效果上的差异,以相对简单的方式阐述当前类 O1 和 R1 系统中最重要的影响因素就是 think 的思维内部推理过程。项目同时指出仍有大量未能澄清的细节性问题,如思维链推理爆炸现象和解决方案,需要研究者重视,而不是简单蒸馏加 RL 学习。
项目环境要求包括 PyTorch 2.3.0+、CUDA 12.1、transformers 4.48.2、LLAMACPP B4646 cuda12.4、RTX 4090 24G 显卡一张、128GB 内存、LMStudio 0.3.9。
项目提供了多个数据集与微调模型链接,包括由 qwen2.5 0.5b、llama3.2 1b、llama3.2 3b、qwen2.5 1.5b、deepseek 官方 qwen2.5 1.5b 蒸馏微调得到的模型,以及各实验模型的 lora 权值。还提供支持端侧、边缘算力设备的 GGUF 模型,涵盖 FP16 与 Q4 K_M 量化版本。
数据集方面,ringo1-CoT_demo.json 约 0.1K 条数据,英文为主混合中文,来源于 Marco-o1,1B 模型加单卡 4090 训练 1 轮仅需数分钟;openr1-SFT.json 约 160K 条数据,中英文混杂,来源于 OpenO1,1B 模型加单卡 4090 训练 1 轮约 35 小时;magpie-r1.json 约 10K 条数据,全英文且思维链内容较长,来源于 Magpie,1B 模型加单卡 4090 训练 1 轮约 30 分钟。项目使用 alpaca 数据集的基础语料来源于 alpaca_gpt4_data_zh.json,原 50K 条数据。tiny_alpaca_XXX 仅有约 20 条数据,用于初步观察与评估蒸馏目标模型的推理差异。主要微调语料经实测,对于同一模型,由本地 DeepSeek 发布的 qwen 2.5 7B 蒸馏得到的数据集在 LOSS 表现上不及云端如 GPT-4o 得到的数据,loss 差值可达 0.4(范围 0.8-1.2)。alpaca_r1_data_zh-remote.json 来源于云端,纯中文,约 alpaca 前 2.6K 条数据,1B 模型加单卡 4090 训练 1 轮约 8 分钟;alpaca_r1_data_zh-localpost.json 来源于本地,纯中文,约 alpaca 前 2K 条数据,1B 模型加单卡 4090 训练 1 轮约 8 分钟。
项目提供多个脚本:jsonl2json.py、parquet2json.py、distillationgalpacalocal.py、deallocaldistil.py、distillationgalpacaremote.py、finetuneSFTR1.py、generatefinetune.py、demo.py,分别用于格式转换、蒸馏数据获取、SFT LoRA 微调、搭建 gradio 测试及测试分享模型。
关于思维链推理爆炸现象,项目观察到强推理模型在获得能力后会带来推理速度变慢,推理内容有时看似进入死循环,max_length 设为 1024 时推理内容竟可达 8K 字以上,导致失败。当选择 llama 3.2 1B,数据集选择 magie_10k,重复 SFT LoRA 所有模型层 3-5 轮,容易触发该现象。项目提出若干可能方案:grop step func reward 通过奖励控制微调 think 方向与内容;冻结 LLM 部分层训练,如只微调 q\k 模块,训练 1-2 次,但数据量不多时输出格式可能不一致;采用之前的智能体 prompt 技术操控思维整体过程;参考 ZeroCoT 随机插值 CoT 思路;区分不同阶段数据集,提升特点、量级和质量。项目强调并非蒸馏高质量数据结合多阶段 RL 学习即可得到近乎完美产物,很多细节因素值得关注。项目也发现 1B 和 0.5B 模型出现了令人惊喜的推理、回溯分析等能力,即使未能帮助解题成功,仍有一定价值。后续计划在 RWKV7 0.1B 甚至更小参数模式上诞生出推理痕迹。