LLMs之DeepSeek-R1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek-R1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略
目录
TinyZero的简介
1、TinyZero的特点
TinyZero的安装和使用方法
1、安装
创建 conda 环境
数据准备 (倒计时任务)
训练执行
单GPU (适用于模型 <= 1.5B):
多GPU (适用于 3B+ 模型):
指令消融实验 (使用 QWen-2.5-3B Instruct):
需要重新处理数据
训练
TinyZero 的案例应用
TinyZero的简介
2025年1月24日,TinyZero 项目是对 DeepSeek R1 Zero 在倒计时和乘法任务上的一个简洁、最小化且易于访问的复现。它基于 veRL 构建,通过强化学习,使 3B 基础大型语言模型自主地发展出自我验证和搜索能力。 项目声称只需不到 30 美元即可体验其效果,并提供了 Twitter 讨论串链接和完整的实验日志链接 (Wandb)。 论文正在撰写中。
帖子:https://x.com/jiayi_pirate/status/1882839370505621655
完整实验日志:Weights & Biases
1、TinyZero的特点
TinyZero 的主要特点是其简洁性和易访问性,它成功复现了 DeepSeek R1 Zero 的核心功能,使得研究人员和开发者更容易理解和应用该技术。 通过强化学习,模型能够独立地学习自我验证和搜索能力,这使得模型能够更有效地解决复杂的推理问题。
TinyZero的安装和使用方法
1、安装
创建 conda 环境
创建 conda 环境
conda create -n zero python=3.9安装 PyTorch (可选,vllm 可自行安装)
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121安装 vllm
pip3 install vllm==0.6.3 (或 0.5.4, 0.4.2, 0.3.1)安装 Ray
pip3 install ray安装 verl
pip install -e .安装 flash attention 2
pip3 install flash-attn --no-build-isolation安装其他依赖 (提高使用体验)
pip install wandb IPython matplotlib
数据准备 (倒计时任务)
激活 conda 环境:conda activate zero
运行数据预处理脚本:python ./examples/data_preprocess/countdown.py --local_dir {path_to_your_dataset} ({path_to_your_dataset} 替换为你的数据集路径)
训练执行
训练过程根据模型大小分为两种情况:
单GPU (适用于模型 <= 1.5B):
export N_GPUS=1
export BASE_MODEL={path_to_your_model}
export DATA_DIR={path_to_your_dataset}
export ROLLOUT_TP_SIZE=1
export EXPERIMENT_NAME=countdown-qwen2.5-0.5b
export VLLM_ATTENTION_BACKEND=XFORMERSbash ./scripts/train_tiny_zero.sh
如果出现内存不足 (Out-of-vram) 错误,可以在脚本中添加 critic.model.enable_gradient_checkpointing=True。
多GPU (适用于 3B+ 模型):
export N_GPUS=2
export BASE_MODEL={path_to_your_model}
export DATA_DIR={path_to_your_dataset}
export ROLLOUT_TP_SIZE=2
export EXPERIMENT_NAME=countdown-qwen2.5-3b
export VLLM_ATTENTION_BACKEND=XFORMERSbash ./scripts/train_tiny_zero.sh
指令消融实验 (使用 QWen-2.5-3B Instruct):
需要重新处理数据
激活 conda 环境:conda activate zero
运行数据预处理脚本 (使用指令模板): python examples/data_preprocess/countdown.py --template_type=qwen-instruct --local_dir={path_to_your_dataset}
训练
然后使用与 3B+ 模型相同的训练命令,只是将 EXPERIMENT_NAME 更改为 countdown-qwen2.5-3b-instruct。所有命令中的 {path_to_your_model} 和 {path_to_your_dataset} 需要替换成你的模型路径和数据集路径。
export N_GPUS=2
export BASE_MODEL={path_to_your_model}
export DATA_DIR={path_to_your_dataset}
export ROLLOUT_TP_SIZE=2
export EXPERIMENT_NAME=countdown-qwen2.5-3b-instruct
export VLLM_ATTENTION_BACKEND=XFORMERSbash ./scripts/train_tiny_zero.sh
TinyZero 的案例应用
项目主要关注倒计时任务,并提供了针对不同大小模型 (0.5B 和 3B+) 的训练方法。 实验使用了 Qwen2.5 系列基础模型。 项目说明了在 0.5B 模型上强化学习效果不佳,而 3B+ 模型则能够学习复杂的推理技能。 具体的实验结果和详细的消融实验结果可以在其提供的 Wandb 链接中查看。