当前位置: 首页 > article >正文

【DeepSeek-R1训练笔记】随手记录一些训练log

背景说明

  • DeepSeek系列解读请移步我的上一篇blog:【完整版】DeepSeek-R1大模型学习笔记(架构、训练、Infra)
  • 代码仓库【科大的大四老哥太太太太太值得倾佩了】:https://github.com/Unakar/Logic-RL
  • DeepSeek-R1-Zero复现文档:https://evxpwrsfkdb.feishu.cn/docx/NokEdaMBmo6aqZxVdxkcSm2cnab
  • 趁着DeepSeek火起来的这个风口,自己抓紧学习一下大模型的基础知识,慢慢把之前积累的一些东西串起来
  • 非常佩服科大的老哥,前途无量,正好我来学习一下大模型训练过程,看下有哪些训练坑和经验值得总结

基本设置

  • 训练算法:DeepSeek-R1-Zero纯RL训练(无long CoT、SFT和蒸馏过程)
  • Base model:Qwen/Qwen2.5-7B-Instruct-1M(huggingface传送门)
  • 训练脚本执行:
    bash main_grpo.sh
    

RL训练过程

第一阶段:正确的格式学习(3PPL数据集)

  • 训练400个step

  • wandb file:run-20250207_161945-1oftdu9q

  • main_grpo.sh脚本配置如下:

    set -x
    MODEL_PATH='Qwen2.5-7B-Instruct-1M'
    export VLLM_ATTENTION_BACKEND=XFORMERS
    python3 -m verl.trainer.main_ppo \
        algorithm.adv_estimator=grpo \
        data.train_files=data/kk/instruct/3ppl/train.parquet \
        data.val_files=data/kk/instruct/3ppl/test.parquet \
        data.train_batch_size=2 \
        data.val_batch_size=4 \
        data.max_prompt_length=400 \
        data.max_response_length=2048 \
        actor_rollout_ref.model.path=$MODEL_PATH \
        actor_rollout_ref.actor.optim.lr=3e-7 \
        actor_rollout_ref.model.use_remove_padding=True \
        actor_rollout_ref.actor.ppo_mini_batch_size=256 \
        actor_rollout_ref.actor.ppo_micro_batch_size=64 \
        actor_rollout_ref.actor.use_kl_loss=True \
        actor_rollout_ref.actor.kl_loss_coef=0.001 \
        actor_rollout_ref.actor.kl_loss_type=low_var_kl \
        actor_rollout_ref.model.enable_gradient_checkpointing=True \
        actor_rollout_ref.actor.fsdp_config.param_offload=True \
        actor_rollout_ref.actor.fsdp_config.grad_offload=True \
        actor_rollout_ref.actor.fsdp_config.optimizer_offload=True \
        actor_rollout_ref.rollout.log_prob_micro_batch_size=160 \
        actor_rollout_ref.rollout.tensor_model_parallel_size=1 \
        actor_rollout_ref.rollout.name=vllm \
        actor_rollout_ref.rollout.gpu_memory_utilization=0.6 \
        actor_rollout_ref.rollout.n=16 \
        actor_rollout_ref.ref.log_prob_micro_batch_size=160 \
        actor_rollout_ref.ref.fsdp_config.param_offload=True \
        algorithm.kl_ctrl.kl_coef=0.001 \
        trainer.critic_warmup=0 \
        trainer.logger=['wandb'] \
        trainer.project_name='GRPO_logic_KK' \
        trainer.experiment_name='Qwen-7B' \
        trainer.n_gpus_per_node=2 \
        trainer.nnodes=1 \
        trainer.default_local_dir=local_dir \
        trainer.default_hdfs_dir=null \
        trainer.save_freq=10 \
        trainer.test_freq=10 \
        trainer.total_epochs=1 $@ 2>&1 | tee grpo.log
    

验证集:效果逐渐变好

在这里插入图片描述

平均reward、答案错误的比例、全对的比例、格式错误比例:前三者趋势正确,但是变化不大,格式错误大幅降低!因为这一步主要是在简单的3PPL数据上学格式,大约10个step可以将格式错误降到0.1以下

在这里插入图片描述

平均生成长度:有少量增长,但并不明显,应该是还在第一阶段的问题

在这里插入图片描述
再看一下生成答案过程中的一些特点:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

再看一下出现的格式错误具体原因:

在这里插入图片描述

在这里插入图片描述

还出现了不同程度的语言混杂问题:

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/537070.html

相关文章:

  • 【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程
  • intra-mart实现简易登录页面笔记
  • 【Spring Boot】 SpringBoot自动装配-Condition
  • Redis --- 使用GEO实现经纬度距离计算
  • 【数据结构-Trie树】力扣720. 词典中最长的单词
  • gc buffer busy acquire导致的重大数据库性能故障
  • 【leetcode100】岛屿的最大面积
  • Rust语言进阶之标准输入: stdin用法实例(一百零五)
  • CRM系统中的数据分析和报表功能如何帮助企业?
  • 58页PPT学习华为面向业务价值的数据治理实践
  • windows版的docker如何使用宿主机的GPU
  • nas-群晖docker查询注册表失败解决办法(平替:使用SSH命令拉取ddns-go)
  • opentelemetry-collector 配置elasticsearch
  • 设计高效的测试用例:从需求到验证
  • 协议桥梁~Profinet与Ethernet IP的智慧连接完美应用在汽车制造业
  • 【DeepSeek:国产大模型的崛起与ChatGPT的全面对比】
  • leetcode_47全排列II
  • 【Pytorch】nn.RNN、nn.LSTM 和 nn.GRU的输入和输出形状
  • 荣耀内置的远程控制怎样用?荣耀如何远程控制其他品牌的手机?
  • 【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )
  • 121,【5】 buuctf web [RoarCTF 2019] Easy Calc
  • 树莓集团双流布局,元宇宙产业园点亮科技之光
  • 如何确保爬虫不会违反平台规则?
  • 为什么关系模型不叫表模型
  • Redis基础--常用数据结构的命令及底层编码
  • DeepSeek Window本地私有化部署