YAML 配置#

下面给出 RLinf 使用的配置文件的完整参考说明。 我们对 YAML 中每个重要键做了说明,便于你针对自己的集群、模型或研究需求进行调整。 各参数按顶层键分组组织。

为便于查阅,本节分为三部分:基础配置MATH 专用配置具身智能(Embodied)专用配置。 你可根据实际需求查找对应的小节。

基础配置#

hydra#

hydra:
  run:
    dir: .
  output_subdir: null

hydra.run.dir:Hydra 运行的工作目录。

hydra.output_subdir:输出子目录(设为 null 则不创建子目录)。

cluster#

cluster:
  num_nodes: 1
  component_placement:
    actor,inference,rollout: all

cluster.num_nodes:用于训练的物理节点数量。

cluster.component_placement: 各组件(进程)的 放置策略

在上面运行于GPU节点的简单示例中:

  • 键 (key) 是组件的名称,例如 rollout,或 rollout,inference,actor

  • 值 (value) 是分配给这些组件的全局 GPU Rank,可以是:
    • "all":使用集群中的所有 GPU

    • 单个整数,例如 "3":使用 GPU 3

    • 逗号分隔的整数列表,例如 "0,2,3":使用 GPU 0、2 和 3

    • 连字符分隔的整数范围,例如 "0-3":使用 GPU 0、1、2 和 3

    • 上述两种方式的组合,例如 "0-3,5,7":使用 GPU 0、1、2、3、5 和 7

而对于更高级的组件放置用法(例如,异构集群中使用不同型号的 GPU、机器人硬件或仅 CPU 节点)以及代码中的自定义,请参见 Worker 放置策略

runner#

runner:
  task_type: math
  logger:
    log_path: ${runner.output_dir}/${runner.experiment_name}
    project_name: rlinf
    experiment_name: ${runner.experiment_name}
    logger_backends: ["tensorboard"] # wandb, swanlab

  max_epochs: 5
  max_steps: -1

  val_check_interval: 1
  save_interval: 50

  seq_length: 2048

  resume_dir: null
  experiment_name: grpo-1.5b
  output_dir: ../results

runner.task_type:任务类型标识(math 或 embodied)。

logger:

runner.logger.log_path:日志输出的根目录。

runner.logger.project_name:实验跟踪的项目名。

runner.logger.experiment_name:实验名称。

runner.logger.logger_backends:日志后端(tensorboard、wandb、swanlab)。

关于日志后端详见 训练可视化

runner.max_epochs:最大训练 epoch 数。

runner.max_steps:最大全局步数;为 -1 时,依据 runner.max_epochs 自动确定。

runner.val_check_interval:验证 rollout 的触发频率(-1 关闭)。

runner.save_interval:保存 checkpoint 的步数间隔。

runner.seq_length:输入到模型的总序列长度(提示 + 生成)。

algorithm#

algorithm:
  group_size: 2

  logprob_forward_micro_batch_size: 1

  val_rollout_batch_size_per_gpu: 4

  loss_type: ppo
  loss_agg_func: "token-mean"
  kl_beta: 0.0
  kl_penalty_type: low_var_kl
  ratio_clip_eps: 0.2
  entropy_bonus: 0.0
  calculate_entropy: False
  clip_ratio_c: null

  adv_type: grpo
  normalize_advantages: True
  early_stop_imp_ratio: 5.0
  use_valid_token_scale: False

  sampling_params:
    do_sample: True
    temperature: 1.0
    top_k: 1000000
    top_p: 1.0
    repetition_penalty: 1.0

algorithm.group_size:每个提示采样的响应个数(>1 时启用组基线)。

algorithm.logprob_forward_micro_batch_size:log-prob 前向的微批大小。

algorithm.val_rollout_batch_size_per_gpu:验证阶段每 GPU 的 rollout 微批大小。

algorithm.loss_type:策略损失类型(如 ppo)。

algorithm.loss_agg_func:token 损失的聚合方式(如 token-mean)。

algorithm.kl_beta:加入到奖励中的 KL 权重。

algorithm.kl_penalty_type:KL 形态(如 low_var_kl)。

algorithm.ratio_clip_eps:PPO 比率裁剪阈值。

algorithm.entropy_bonus:熵奖励系数。

algorithm.calculate_entropy:是否计算/记录熵项。

algorithm.adv_type:优势函数估计类型(如 grpo)。

algorithm.normalize_advantages:是否对优势进行归一化。

algorithm.early_stop_imp_ratio:当重要性比超出阈值时提前终止本次更新。

algorithm.use_valid_token_scale:是否按有效 token 掩码缩放损失/优势。

sampling_params:

algorithm.sampling_params.do_sample:False 时使用贪心解码。

algorithm.sampling_params.temperature:采样温度。

algorithm.sampling_params.top_k:top-k 截断(设很大值等于禁用)。

algorithm.sampling_params.top_p:nucleus 采样阈值。

algorithm.sampling_params.repetition_penalty:重复惩罚系数。

rollout#

rollout:
  group_name: "RolloutGroup"

  gpu_memory_utilization: 0.55

  model:
    model_path: ../../model/DeepSeek-R1-Distill-Qwen-1.5B/
    model_type: qwen2.5

  recompute_logprobs: True

rollout.gpu_memory_utilization:目标 GPU 显存占用比例。

rollout.group_name:rollout / inference worker 的逻辑分组名。

rollout.model.model_path:生成后端所用 HF 模型路径。

rollout.model.model_type:后端内部使用的模型架构标记(如 qwen2.5)。

rollout.recompute_logprobs:是否为采样序列重新计算对数概率。

actor#

actor:
  group_name: "ActorGroup"

  model:
    megatron_checkpoint: null

  seed: 1234

顶层:

actor.group_name:训练(actor)worker 的逻辑分组名。

actor.model.megatron_checkpoint:训练前加载的模型 Megatron checkpoint 路径。

actor.seed:全局随机种子,便于复现。

reward#

reward:
  use_reward_model: false

reward.use_reward_model:是否使用奖励模型。

critic#

critic:
  use_critic_model: false

critic.use_critic_model:是否使用价值网络(critic)。

MATH 专用配置#

runner#

runner:
  enable_dynamic_batch_size: False
  max_tokens_per_mbs: 2048

runner.enable_dynamic_batch_size:使用 Megatron 训练时是否启用动态批大小。

runner.max_tokens_per_mbs:启用动态批时每个微批的 token 上限。

algorithm#

algorithm:

  n_minibatches: 4
  training_batch_size_per_gpu: 1
  rollout_batch_size_per_gpu: null

  sampling_params:
    max_new_tokens: ${subtract:${runner.seq_length}, ${data.max_prompt_length}}
    min_new_tokens: 1

algorithm.n_minibatches:每个 batch 的梯度更新次数。

algorithm.training_batch_size_per_gpu:每张 actor GPU 的训练微批大小。

algorithm.rollout_batch_size_per_gpu:每 GPU 的推理微批大小;为 null 时按全局大小平均分配。

sampling_params:

algorithm.sampling_params.max_new_tokens:最大生成长度(由 runner.seq_length 与 data.max_prompt_length 计算)。

algorithm.sampling_params.min_new_tokens:最小生成长度。

rollout#

rollout:
  enforce_eager: False         # 若为 False,rollout 引擎将使用 CUDA graph,初始化更久但运行更快
  distributed_executor_backend: mp   # 可选 ray 或 mp
  disable_log_stats: False
  detokenize: False            # 是否反词元化输出;RL 训练通常只需 token id。调试可设 True
  padding: null               # 为空则使用 tokenizer.pad_token_id;用于过滤 megatron 的 padding
  eos: null                   # 为空则使用 tokenizer.eos_token_id

  attention_backend: triton

  tensor_parallel_size: 1
  pipeline_parallel_size: 1

  validate_weight: False # 是否在开始时发送全部权重进行一致性校验
  validate_save_dir: null # 若启用校验,保存用于比对的权重目录
  print_outputs: False         # 是否打印 rollout 引擎的输出(token id/文本等)

  sglang_decode_log_interval: 500000 # SGLang 打印解码耗时与统计信息的间隔
  max_running_requests: 64 # rollout 引擎内最大并发请求数
  cuda_graph_max_bs: 128 # 使用 CUDA graph 的最大 batch size;超过则不使用

  use_torch_compile: False # 在 SGLang 中为 rollout 启用 torch.compile
  torch_compile_max_bs: 128 # 启用 torch.compile 的最大 batch size;超过则不使用

rollout.enforce_eager:True 时禁用 CUDA graph,加快预热启动。

rollout.distributed_executor_backend:rollout worker 的启动后端(mp 或 ray)。

rollout.disable_log_stats:是否关闭后端周期性统计日志。

rollout.detokenize:是否将输出 detokenize(调试用)。

rollout.padding:pad token id 重载;null 则用 tokenizer 的 pad id。

rollout.eos:EOS token id 重载;null 则用 tokenizer 的 eos id。

rollout.attention_backend:注意力算子后端(如 triton)。

rollout.tensor_parallel_size:生成后端的张量并行度(TP)。

rollout.pipeline_parallel_size:生成后端的流水并行度(PP)。

并行化细节见 5D 并行配置

rollout.validate_weight:是否发送完整权重进行校验。

rollout.validate_save_dir:启用校验时的权重保存目录。

rollout.print_outputs:是否打印调试输出。

rollout.sglang_decode_log_interval:SGLang 解码统计的间隔。

rollout.max_running_requests:最大并发解码请求数。

rollout.cuda_graph_max_bs:可使用 CUDA graph 的最大批大小。

rollout.use_torch_compile:启用 torch.compile。

rollout.torch_compile_max_bs:可使用 torch.compile 的最大批大小。

data#

data:
  type: math
  max_prompt_length: 1024
  rollout_batch_size: 64
  val_rollout_batch_size: null
  num_workers: 2
  prompt_key: prompt
  shuffle: True
  validation_shuffle: True
  seed: 1234
  train_data_paths: ["../../data/boba/AReaL-boba-106k.jsonl"]
  val_data_paths: ["../../data/boba/AReaL-boba-106k.jsonl"]

data.type:数据集/任务类型(如 math)。

data.max_prompt_length:提示的最大 token 数。

data.rollout_batch_size:全局 rollout 批大小。

data.val_rollout_batch_size:全局验证批大小;为 null 则回退到 data.rollout_batch_size

data.num_workers:每个 actor rank 的数据加载进程数。

data.prompt_key:JSONL 中提示文本的键名。

data.shuffle:训练数据是否每 epoch 乱序。

data.validation_shuffle:验证数据是否乱序(on-policy 评估通常建议 True)。

data.seed:数据加载与采样用的随机种子。

data.train_data_paths:训练 JSONL 文件列表。

data.val_data_paths:验证 JSONL 文件列表。

actor#

actor:
  training_backend: megatron
  mcore_gpt: True
  spec_name: decoder_gpt

  offload_optimizer: True
  offload_weight: True
  offload_grad: True

  enable_dp_load_balance: False

  calculate_flops: False

  model:
    precision: fp16
    add_bias_linear: False

    tensor_model_parallel_size: 1
    pipeline_model_parallel_size: 1

    activation: swiglu
    sequence_parallel: True
    # recompute_method: block
    # recompute_granularity: selective

    recompute_method: block
    recompute_granularity: full
    recompute_num_layers: 20

    seq_length: ${runner.seq_length}
    encoder_seq_length: ${runner.seq_length}

    normalization: rmsnorm

    position_embedding_type: rope

    apply_rope_fusion: True
    bias_dropout_fusion: False
    persist_layer_norm: False
    bias_activation_fusion: False
    attention_softmax_in_fp32: True
    batch_p2p_comm: False
    variable_seq_lengths: True
    gradient_accumulation_fusion: False
    moe_token_dispatcher_type: alltoall
    use_cpu_initialization: False

  optim:
    optimizer: adam
    bf16: False
    fp16: True
    lr: 2e-05
    adam_beta1: 0.9
    adam_beta2: 0.95
    adam_eps: 1.0e-05
    min_lr: 2.0e-6
    weight_decay: 0.05
    use_distributed_optimizer: True
    overlap_grad_reduce: True
    overlap_param_gather: True
    optimizer_enable_pin: false
    overlap_param_gather_with_optimizer_step: False
    clip_grad: 1.0
    loss_scale_window: 5

  lr_sched:
    lr_warmup_fraction: 0.01
    lr_warmup_init: 0.0
    lr_warmup_iters: 0
    max_lr: 2.0e-5
    min_lr: 0.0
    lr_decay_style: constant
    lr_decay_iters: 10

  tokenizer:
    tokenizer_model: ../../model/DeepSeek-R1-Distill-Qwen-1.5B/
    use_fast: False
    trust_remote_code: True
    padding_side: 'right'

  megatron:
    ddp_bucket_size: null
    distributed_backend: nccl # 支持 'nccl' 与 'gloo'
    distributed_timeout_minutes: 30
    ckpt_format: torch
    use_dist_ckpt: False
    tp_comm_bootstrap_backend: nccl
    tp_comm_overlap_cfg: null
    use_hf_ckpt: True # 为 True 时将 HF 模型转为 Megatron checkpoint 并用于训练

    ckpt: # checkpoint 转换器配置
      model: DeepSeek-R1-Distill-Qwen-1.5B
      hf_model_path: ${rollout.model.model_path} # HF 模型所在路径
      save_path: ${runner.output_dir}/${runner.experiment_name}/actor/megatron_ckpt_from_hf
      use_gpu_num : 0
      use_gpu_index: null #
      process_num: 16 # 转换使用的进程数
      tensor_model_parallel_size: ${actor.model.tensor_model_parallel_size}
      pipeline_model_parallel_size: ${actor.model.pipeline_model_parallel_size}


  fsdp_config:

    strategy: "fsdp"

    sharding_strategy: "no_shard"

    cpu_offload: False
    offload_pin_memory: False
    reshard_after_forward: True

    enable_gradient_accumulation: True
    forward_prefetch: False
    limit_all_gathers: False
    backward_prefetch: null
    use_orig_params: False
    use_liger_kernel: False

    fsdp_size: -1

    mixed_precision:
      param_dtype: ${actor.model.precision}
      reduce_dtype: ${actor.model.precision}
      buffer_dtype: ${actor.model.precision}

    amp_autocast:
      enabled: False
      precision: "bf16"

    grad_scaler:
      enabled: False

顶层:

actor.training_backend:训练后端(megatron)。

actor.mcore_gpt:是否使用 Megatron-Core GPT 栈。

actor.spec_name:模型规格/预设(如 decoder_gpt)。

actor.offload_optimizer/weight/grad:将优化器/权重/梯度尽可能下放到 CPU 以节省显存。

actor.enable_dp_load_balance:是否启用数据并行负载均衡。

actor.calculate_flops:是否计算并记录 FLOPs(分析用)。

Model 子项:

actor.model.precision:训练数值精度(fp16 等)。

actor.model.add_bias_linear:线性层是否带 bias。

actor.model.tensor_model_parallel_size:actor 端 TP 并行度。

actor.model.pipeline_model_parallel_size:actor 端 PP 并行度。

actor.model.activation:激活函数(如 swiglu)。

actor.model.sequence_parallel:启用序列并行(需配合 TP)。

actor.model.recompute_method/granularity/num_layers:重计算策略/粒度/层数。

actor.model.seq_length / encoder_seq_length:训练时解码/编码序列长度。

actor.model.normalization:归一化层类型(rmsnorm)。

actor.model.position_embedding_type:位置编码类型(rope)。

actor.model.apply_rope_fusion:是否使用融合的 RoPE 内核。

actor.model.*fusion:若干算子融合开关。

actor.model.attention_softmax_in_fp32:注意力 softmax 用 FP32 保稳。

actor.model.batch_p2p_comm:跨层批量 P2P 通信。

actor.model.variable_seq_lengths:允许不同微批序列长度。

actor.model.gradient_accumulation_fusion:梯度累积融合。

actor.model.moe_token_dispatcher_type:MoE token 分发方式(如 alltoall)。

actor.model.use_cpu_initialization:在 CPU 上初始化权重以降低 GPU 峰值。

优化器:

actor.optim.optimizer:优化器选择(如 adam)。

actor.optim.bf16 / actor.optim.fp16:混合精度训练相关开关。

actor.optim.lr:基础学习率(Base learning rate)。

actor.optim.adam_beta1 / adam_beta2 / adam_eps:Adam 优化器的超参数。

actor.optim.min_lr:最小学习率(适用于 LR 衰减低于基准 LR 的情况)。

actor.optim.weight_decay:L2 正则化权重衰减。

actor.optim.use_distributed_optimizer:是否使用 Megatron 分布式优化器。

actor.optim.overlap_grad_reduce:是否在反向传播时与梯度归约操作重叠执行。

actor.optim.overlap_param_gather:是否在前向传播时与参数 all-gather 重叠执行。

actor.optim.optimizer_enable_pin:是否固定优化器的内存位置。

actor.optim.overlap_param_gather_with_optimizer_step:是否在执行优化器 step 时与参数 all-gather 重叠。

actor.optim.clip_grad:全局梯度裁剪范数(Gradient clipping norm)。

actor.optim.loss_scale_window:FP16 的动态 loss scaling 窗口。

学习率调度:

actor.lr_sched.lr_warmup_fraction:学习率预热阶段占总迭代的比例。

actor.lr_sched.lr_warmup_init:预热初始学习率值。

actor.lr_sched.lr_warmup_iters:学习率预热的迭代次数(>0 时覆盖上面比例设置)。

actor.lr_sched.max_lr / min_lr:学习率调度的上限 / 下限。

actor.lr_sched.lr_decay_style:学习率衰减策略(如 constant)。

actor.lr_sched.lr_decay_iters:学习率衰减持续的总迭代次数。

分词器:

actor.tokenizer.tokenizer_model:分词器路径/名称。

actor.tokenizer.use_fast:是否使用 fast tokenizer。

actor.tokenizer.trust_remote_code:允许自定义分词器代码。

actor.tokenizer.padding_side:填充方向(left/right)。

Megatron 集成:

actor.megatron.*:分布式后端、超时、checkpoint 格式、HF checkpoint 转换等设置。

Megatron checkpoint 转换器:

actor.megatron.ckpt.model:转换器元信息中的模型名称。

actor.megatron.ckpt.hf_model_path:源 HF 模型路径。

actor.megatron.ckpt.save_path:转换后 Megatron checkpoint 保存目录。

actor.megatron.ckpt.use_gpu_num:转换使用的 GPU 数量。

actor.megatron.ckpt.use_gpu_index:指定使用的 GPU 索引。

actor.megatron.ckpt.process_num:转换过程使用的 CPU 进程数。

actor.megatron.ckpt.tensor_model_parallel_size:转换后 checkpoint 的张量并行度(TP)。

actor.megatron.ckpt.pipeline_model_parallel_size:转换后 checkpoint 的流水线并行度(PP)。

FSDP 集成:

actor.fsdp_config.strategy: 决定所使用FSDP 策略,支持fsdp, fsdp2(不区分大小写)

actor.fsdp_config.sharding_strategy: FSDP/FSDP2参数,表示FSDP所使用的切片策略,支持full_shard, shard_grad_op, hybrid_shard, no_shard

actor.fsdp_config.cpu_offload: FSDP2参数,决定FSDP2是否将参数放置于CPU侧,需要时在传输到GPU侧

actor.fsdp_config.offload_pin_memory: FSDP2参数,仅当cpu_offload选项为True时有效,如果为真则此时CPU侧内存为pinned memory以提高传输效率

actor.fsdp_config.reshard_after_forward: FSDP2参数,表示是否在前向传播后重新切片参数以节省显存

actor.fsdp_config.enable_gradient_accumulation: FSDP/FSDP2参数,表示是否启用梯度累积,如果为真则仅在最后一个micro batch结束后再进行通信并更新梯度,开启会增加一定显存占用,但会加快训练

actor.fsdp_config.forward_prefetch: FSDP1参数,表示是否在前向传播时预取下一个 all-gather 操作。开启时会增加显存占用,建议当显存足够时可以开启以重叠通信与计算,从而提升性能

actor.fsdp_config.limit_all_gathers: FSDP1参数,表示是否限制并发 all-gather 操作的数量,建议当CPU或内存成为瓶颈时开启。

actor.fsdp_config.backward_prefetch: FSDP1参数,表示后向传播时的预取策略(null/'pre'/'post'), 如果为 'pre',则在计算梯度时预取下一个 all-gather 操作,这样重叠更激进,吞吐更高;如果为 'post',则在当前梯度计算完成后预取下一个 all-gather 操作,相较于 'pre' 更保守一些。

actor.fsdp_config.use_orig_params: FSDP1参数,表示是否使用模块的原始参数,让模块暴露原始参数(nn.Module.named_parameters),而非 FSDP 的扁平参数。可以提高兼容性,但是会引入额外的通信开销降低性能。

actor.fsdp_config.use_liger_kernel: FSDP/FSDP2参数,是否使用 liger_kernel(目前仅支持部分模型,包括:qwen2.5,qwen2.5-vl),开启则可以降低显存占用并提升训练速度。

actor.fsdp_config.fsdp_size: FSDP2参数,如果不为-1,则FSDP2会按照该参数指定的大小进行分组切片

actor.fsdp_config.mixed_precision.param_dtype: FSDP/FSDP2参数,指定参数类型

actor.fsdp_config.mixed_precision.reduce_dtype: FSDP/FSDP2参数,指定规约时使用的数据类型

actor.fsdp_config.mixed_precision.buffer_dtype: FSDP1参数,指定缓冲区使用的数据类型

actor.fsdp_config.amp_autocast.enabled: FSDP/FSDP2参数,表示是否启用自动混合精度训练

actor.fsdp_config.amp_autocast.precision: FSDP/FSDP2参数,表示AMP使用的数值精度

actor.fsdp_config.grad_scaler.enabled: FSDP/FSDP2参数,表示是否启用梯度缩放器

actor.fsdp_config.grad_scaler.init_scale: FSDP/FSDP2 参数,表示梯度缩放器的初始缩放因子,用于在训练初期放大梯度以防止数值下溢(Underflow)。

actor.fsdp_config.grad_scaler.growth_interval: FSDP/FSDP2 参数,表示在不发生梯度溢出的情况下,缩放因子增加所需的连续迭代步数。

reward#

reward:
  reward_type: math
  reward_scale: 5.0

reward.reward_type:训练所使用的奖励类型。

reward.reward_scale:答对奖励为 reward_scale,答错为 -reward_scale

具身智能(Embodied)专用配置#

defaults#

defaults:
  - env/manikill_put_carrot_on_plate_in_scene@env.train
  - env/manikill_put_carrot_on_plate_in_scene@env.eval

defaults:Hydra 配置继承。指定训练与评估加载的环境配置。

hydra#

hydra:
  searchpath:
    - file://${oc.env:REPO_PATH}/config/

hydra.searchpath:额外的配置文件搜索路径。

runner#

runner:
  only_eval: False
  max_prompt_length: 30

runner.only_eval:只运行评估,不进行训练。

runner.max_prompt_length:最大提示长度(token 数)。

algorithm#

algorithm:
  normalize_advantages: True
  kl_penalty: kl

  rollout_epoch: 1

  reward_type: chunk_level
  logprob_type: token_level
  entropy_type: token_level

  length_params:
    max_new_token: null
    max_length: 1024
    min_length: 1

algorithm.normalize_advantages:是否对优势值归一化处理。

algorithm.rollout_epoch:每个训练步骤前的 rollout 轮数。

algorithm.reward_type:奖励聚合层级(chunk_level、action_level)。

algorithm.logprob_type:对数概率的计算层级。

algorithm.entropy_type:熵的计算层级。

length_params:

algorithm.length_params.max_new_token:最大新增 token 数。

algorithm.length_params.max_length:最大总序列长度。

algorithm.length_params.min_length:最小序列长度。

env#

env:
  group_name: "EnvGroup"
  channel:
    name: "env_buffer_list"
    queue_name: "obs_buffer"
    queue_size: 0
  enable_offload: True

  train:
    total_num_envs: null
    auto_reset: False
    ignore_terminations: False
    use_fixed_reset_state_ids: True
    max_episode_steps: 10

  eval:
    total_num_envs: null
    auto_reset: False
    ignore_terminations: False
    use_fixed_reset_state_ids: True
    max_episode_steps: 10

env.group_name:环境 worker 组的逻辑名称。

env.channel.name:进程间通信的共享内存通道名。

env.channel.queue_name:观测缓冲区队列名。

env.channel.queue_size:队列大小(0 表示不限制)。

env.enable_offload:启用环境侧的下放以降低内存占用。

env.train.total_num_envs:训练用的并行环境总数。

env.train.auto_reset:训练时当 episode 终止时自动重置环境。

env.train.ignore_terminations:训练时忽略 episode 终止(如果启用,episode 仅在达到 max_episode_steps 时结束)。

env.train.use_fixed_reset_state_ids:使用固定的 reset 状态 ID(false 则随机化)。GRPO 始终为 True,PPO 默认为 False。

env.train.max_episode_steps:训练时每个 episode 的最大步数。

env.eval.total_num_envs:评估用的并行环境总数。

env.eval.auto_reset:评估时当 episode 终止时自动重置环境。

env.eval.ignore_terminations:评估时忽略 episode 终止(如果启用,episode 仅在达到 max_episode_steps 时结束)。

env.eval.use_fixed_reset_state_ids:使用固定的 reset 状态 ID(false 则随机化)。GRPO 始终为 True,PPO 默认为 False。

env.eval.max_episode_steps:评估时每个 episode 的最大步数。

rollout#

rollout:
  channel:
    name: ${env.channel.name}
    queue_name: "action_buffer"
    queue_size: 0
  mode: "collocate"
  backend: "huggingface"
  enforce_eager: True
  enable_offload: True
  pipeline_stage_num: 2

rollout.channel.name:共享内存通道(继承自 env)。

rollout.channel.queue_name:动作缓冲区队列名。

rollout.channel.queue_size:队列大小。

rollout.mode:rollout 模式(collocate 表示**共享式**使用 GPU)。

rollout.backend:模型后端(huggingface、vllm)。

rollout.pipeline_stage_num:rollout 的流水线阶段数。

actor#

actor:
  channel:
    name: ${env.channel.name}
    queue_name: "replay_buffer"
    queue_size: 0
  training_backend: "fsdp"
  micro_batch_size: 8
  global_batch_size: 160
  enable_offload: True

  model:
    model_path: "/path/to/hf_model"
    model_type: "openvla_oft"
    action_dim: 7
    num_action_chunks: 8
    use_proprio: False
    unnorm_key: bridge_orig
    value_type: ${algorithm.reward_type}
    val_micro_batch_size: 8
    center_crop: True
    do_sample: False

    precision: "bf16"
    add_bias_linear: False
    add_qkv_bias: True
    vocab_size: 32000
    hidden_size: 4096
    policy_setup: "widowx_bridge"
    image_size: [224, 224]
    is_lora: True
    lora_rank: 32
    lora_path: /storage/models/oft-sft/lora_004000
    num_images_in_input: 1
    attn_implementation: "flash_attention_2"
    low_cpu_mem_usage: True
    trust_remote_code: True

  tokenizer:
    tokenizer_type: "HuggingFaceTokenizer"
    tokenizer_model: "/storage/download_models/Openvla-oft-SFT-libero10-trajall/"
    extra_vocab_size: 421
    use_fast: False
    trust_remote_code: True
    padding_side: "right"

  optim:
    lr: 1.0e-4
    value_lr: 3.0e-3
    adam_beta1: 0.9
    adam_beta2: 0.999
    adam_eps: 1.0e-05
    clip_grad: 10.0

actor.channel.name:共享内存通道(继承自 env)。

actor.channel.queue_name:回放缓冲区队列名。

actor.training_backend:训练后端(分布式 FSDP)。

actor.micro_batch_size:每张 GPU 的微批大小。

actor.global_batch_size:全局批大小(跨所有 GPU)。

actor.enable_offload:启用模型下放以降低内存占用。

模型配置:

actor.model.model_type:模型类型(openvla_oft)。

actor.model.action_dim:动作空间维度。

actor.model.num_action_chunks:每条序列的动作块数量。

actor.model.use_proprio:是否使用本体感知信息。

actor.model.unnorm_key:动作反归一化的键。

actor.model.value_type:价值函数类型(继承自 algorithm.reward_type)。

actor.model.val_micro_batch_size:价值函数计算的微批大小。

actor.model.center_crop:是否对输入图像做中心裁剪。

actor.model.do_sample:推理时是否采样。

actor.model.precision:数值精度(bf16/fp16/fp32)。

actor.model.add_bias_linear / add_qkv_bias:线性/QKV 是否加 bias。

actor.model.vocab_size / hidden_size:词表大小与隐藏维度。

actor.model.policy_setup:策略配置(widowx_bridge)。

actor.model.image_size:输入图像尺寸 [H, W]。

actor.model.is_lora / lora_rank / lora_path:是否使用 LoRA、秩与权重路径。

actor.model.megatron_checkpoint:模型 checkpoint 路径。

actor.model.num_images_in_input:输入的图像数量。

actor.model.attn_implementation:注意力实现(flash_attention_2)。

actor.model.low_cpu_mem_usage:低内存初始化。

actor.model.trust_remote_code:加载模型时信任远程代码。

分词器配置:

actor.tokenizer.tokenizer_type:分词器类型(HuggingFaceTokenizer)。

actor.tokenizer.tokenizer_model:分词器模型路径。

actor.tokenizer.extra_vocab_size:额外词表大小。

actor.tokenizer.use_fast:是否使用 fast 版本。

actor.tokenizer.trust_remote_code:信任远程代码。

actor.tokenizer.padding_side:填充方向(left/right)。

优化器配置:

actor.optim.lr:策略网络学习率。

actor.optim.value_lr:价值网络学习率。

actor.optim.adam_beta1/beta2/eps:Adam 超参数。

actor.optim.clip_grad:梯度裁剪阈值。

基于环境的配置#

以下示例以 Libero-10 为例说明环境关键参数。

路径为

环境类型

env_type: libero
task_suite_name: libero_10

env_type:模拟器类型(libero 表示 Libero 基准)。

task_suite_name:任务集合(libero_10 表示 10 个任务的基准)。

Episode 配置

auto_reset: ${algorithm.auto_reset}
ignore_terminations: ${algorithm.ignore_terminations}
max_episode_steps: 512

auto_reset:episode 结束时是否自动重置(继承自 algorithm)。

ignore_terminations:训练时是否忽略终止(继承自 algorithm)。

max_episode_steps:每个 episode 的最大步数(复杂 Libero 任务通常取 512)。

奖励配置

use_rel_reward: true
reward_coef: 5.0

use_rel_reward:使用相对奖励(当前步与前一状态的差值)。

reward_coef:奖励缩放系数(如 5.0 强化奖励信号)。

随机化与分组

seed: 0
group_size: 1
use_fixed_reset_state_ids: True

seed:环境初始化随机种子(0 便于复现)。

group_size:每个分组的环境数(继承自 algorithm.group_size)。

use_fixed_reset_state_ids:是否使用固定 reset 状态(GRPO 为 True,PPO 默认 False)。

环境规模

total_num_envs: null

total_num_envs:总并行环境数用于训练或评估。

视频记录

video_cfg:
  save_video: true
  info_on_video: true
  video_base_dir: ${runner.logger.log_path}/video/train

video_cfg.save_video:训练时保存视频。

video_cfg.info_on_video:在视频上叠加训练信息。

video_cfg.video_base_dir:视频保存目录。

相机配置

init_params:
  camera_heights: 256
  camera_widths: 256

init_params.camera_heights:相机图像高度(像素)。

init_params.camera_widths:相机图像宽度(像素)。