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

发布于:2025-02-10 ⋅ 阅读:(60) ⋅ 点赞:(0)

背景说明

基本设置

  • 训练算法: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以下

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述