Skip to content

配置参考手册

参数分为三类:

  1. megatron 参数:Relax 会读取 PYTHONPATH 中的 megatron 里设置的所有参数,可以通过传入如 --tensor-model-parallel-size 2 的方式配置 megatron;
  2. sglang 参数:支持环境中安装的 sglang 的所有参数,这些参数需要以 --sglang 起始,例如 --mem-fraction-static 需要通过 --sglang-mem-fraction-static 传入。
  3. Relax 自身的参数请见:relax/utils/arguments.py

常见配置用法和示例请参见快速开始指南


集群与资源配置

Ray 启动参数

参数类型默认值说明
--rollout-num-gpus-per-engineint1每个 SGLang 推理引擎使用的 GPU 数,等同于 SGLang 的 tp_size
--num-gpus-per-nodeint8每个节点的 GPU 数。如果在 colocate 模式下每个节点使用少于 8 张 GPU 需要设置此值
--resourcejson-Ray 资源配置,JSON 格式。'{"actor":[副本数, 卡数], "rollout":[副本数, 卡数]}'
--colocateflagFalse是否将推理引擎和训练 Actor 共置在相同的 GPU 上。开启后会同时将 --offload 设为 True
--offloadflagFalse等同于同时设置 --offload-train--offload-rollout
--offload-trainflagNone训练期间是否将训练 Actor 卸载到 CPU。--colocate 时始终为 True
--offload-rolloutflagNone训练期间是否将 Rollout 生成器卸载到 CPU。--colocate 时始终为 True
--distributed-backendstrnccl分布式后端
--distributed-timeout-minutesint10分布式超时时间(分钟)

TransferQueue 数据队列

参数类型默认值说明
--num-data-storage-unitsint1TransferQueue SimpleStorageUnit Actor 数量
--max-stalenessint0TransferQueue 数据系统的最大陈旧度(0=on-policy)
--polling-modeboolTrue获取 metadata 时是否使用轮询模式
--num-iters-per-train-updateint1全异步流水线中每个 global batch 的迭代次数

训练后端与模式

参数类型默认值可选值说明
--train-backendstrmegatronmegatron训练后端选择
--qkv-formatstrthdthd, bshdMegatron 后端的 QKV 布局。bshd 模式下不支持动态批处理,必须指定 --micro-batch-size
--megatron-to-hf-modestrrawraw, bridgeMegatron 到 HF 权重转换方式。bridge 使用 megatron bridge 自动转换
--true-on-policy-modeflagFalse-是否启用真正的 on-policy 模式
--fully-asyncflagFalse-是否使用全异步训练流水线

检查点配置

参数类型默认值说明
--hf-checkpointstrNoneHuggingFace 模型检查点路径。用于初始化 SGLang 和提供 tokenizer。不需要包含最新的参数,只需与训练模型架构一致
--ref-loadstrNone参考模型检查点路径。当 --load 未设置时,会作为训练的初始检查点
--ref-ckpt-stepintNone参考模型检查点的步数
--loadstrNoneActor 模型检查点加载路径。断点续训时指向此路径
--savestrNone训练中模型的保存路径
--save-intervalintNone模型保存间隔(步数)
--save-hfstrNoneMegatron 后端时保存 HuggingFace 格式模型的路径。路径可包含 {rollout_id} 占位符
--async-saveflagFalse异步保存检查点
--no-save-optimflagFalse保存检查点时不保存优化器状态。减少检查点大小但无法从该检查点恢复训练
--rotate-ckptflagFalse是否轮换检查点。需要同时设置 --save--save-interval--async-save
--max-actor-ckpt-to-keepintNone保留的最大 Actor 检查点数
--checkpoint-engine-backendstrnccl检查点引擎后端
--critic-loadstrNoneCritic 模型检查点路径。None 时等于 --load
--critic-savestrNoneCritic 模型保存路径

数据配置

数据集

参数类型默认值说明
--prompt-datastrNone训练 Prompt 数据集路径
--input-keystrinput数据集中输入字段的 key
--label-keystrNone数据集中标签字段的 key
--metadata-keystrmetadata数据集中元数据字段的 key
--tool-keystrtools应用 Chat Template 时的 tools 字段 key
--apply-chat-templateflagFalse将输入作为 OpenAI message 格式应用 Chat Template
--apply-chat-template-kwargsjson{}Chat Template 的额外参数
--system-promptstrNone可选的系统提示词,会添加到用户输入之前。最终消息为 <system_prompt> + <dataset_prompt>
--rollout-shuffleflagFalseRollout 时是否打乱 Prompt 顺序
--rollout-seedint42Rollout 的随机种子,用于打乱 Prompt 和随机采样
--use-streaming-datasetflagFalse使用流式数据集以节省内存
--streaming-buffer-sizeint10000流式数据集的缓冲区大小
--prefetch-chunk-sizeint32每轮预取时分派到线程池的样本数。较大的值可以提高吞吐量但也会增加内存压力。仅在设置了 --use-streaming-dataset 且数据集包含多模态数据时生效
--prefetch-max-cachedint256预取缓存中保留的最大预加载样本数。缓存满时后台预取线程会暂停,直到消费者释放空间。设为 0 可禁用预取。仅在设置了 --use-streaming-dataset 且数据集包含多模态数据时生效
--prefetch-num-workersint1预取缓冲区中用于 I/O 密集型媒体解码(视频/图像)的并行工作线程数。设为 1 可序列化所有解码操作(对 FFmpeg 非线程安全问题最安全)。较高值可提高并行度,但在某些平台上可能触发 EAGAIN 错误。仅在启用预取时生效
--custom-prompt-pathstrNone自定义 Prompt 转换函数的 Python 点分导入路径。该函数在对话/多模态处理之前调用。函数签名:def custom_fn(prompt, data: dict) -> prompt。示例:my_package.prompt_utils.add_prefix
--data-source-pathstrrelax.engine.rollout.data_source.RolloutDataSourceWithBufferRollout 数据源类路径
--start-rollout-idintNone起始 Rollout 步数。未设置时会尝试从 --load 的检查点中读取

多模态数据

参数类型默认值说明
--multimodal-keysjsonNone多模态数据字段映射。示例:'{"image": "image_key"}'
--use-audio-in-videoflagFalse是否处理视频中的音频
--image-max-token-numintNone图像处理的最大 Token 数。未设置时使用默认值 16384
--image-min-token-numintNone图像处理的最小 Token 数。未设置时使用默认值 4
--video-min-token-numintNone视频帧处理的最小 Token 数。未设置时使用默认值 128
--video-max-token-numintNone视频帧处理的最大 Token 数。未设置时使用默认值 768
--video-fpsfloatNone视频处理的目标 FPS。未设置时使用默认值 2.0
--video-fps-min-framesintNone视频处理的最少帧数。未设置时使用默认值 4
--video-fps-max-framesintNone视频处理的最多帧数。未设置时使用默认值 768
--image-resize-scale-factorintNone图像缩放尺寸对齐因子。默认使用 patch_size * spatial_merge_size(通常为 28)。设为 0 可禁用对齐
--audio-sample-rateintNone音频处理的采样率。未设置时使用默认值 16000
--frame-factorintNone帧数对齐因子。未设置时使用默认值 2
--mm-processor-pool-sizeint0多模态处理器池大小。0(默认)禁用进程池,使用 ThreadPoolExecutor。设置为正整数时,创建指定数量 worker 的 ProcessPoolExecutor,实现无 GIL 竞争的真正并行

Rollout 配置

采样参数

参数类型默认值说明
--num-rolloutintNone总 Rollout 轮数。与 --num-epoch 二选一
--num-epochintNone训练 Epoch 数。会根据数据集大小自动计算 num_rollout。若同时设置 --num-rollout 则此参数被忽略
--rollout-batch-sizeint必填每轮采样的 Prompt 数量。总数据量 = rollout-batch-size * n-samples-per-prompt
--n-samples-per-promptint1每个 Prompt 生成的响应数量
--rollout-temperaturefloat1.0推理引擎的采样温度
--rollout-top-pfloat1.0推理引擎的 Top-p 采样参数
--rollout-top-kint-1推理引擎的 Top-k 采样参数。-1 表示不使用
--rollout-max-response-lenintNone响应的最大长度,等同于 SGLang 的 max_tokens
--rollout-max-prompt-lenintNonePrompt 的最大长度。设置后会在数据集初始化时过滤长 Prompt
--rollout-max-context-lenintNone推理引擎的最大上下文长度。不应超过 HuggingFace 模型 config.json 中的 max_position_embeddings
--rollout-stopstr (列表)NoneRollout 时的停止词。可以是一个或多个字符串
--rollout-stop-token-idsint (列表)NoneRollout 时的停止 Token ID
--rollout-skip-special-tokensflagFalse响应中是否跳过特殊 Token

过采样与动态过滤

参数类型默认值说明
--over-sampling-batch-sizeintNone采样批次粒度。None 时使用 rollout-batch-size 的值。必须 >= rollout-batch-size
--dynamic-sampling-filter-pathstrNone动态采样过滤函数路径。用于实现类似 DAPO 的过滤(如排除全部正确或全部错误的样本)。示例:relax.engine.filters.dynamic_sampling_filters.check_reward_nonzero_std
--buffer-filter-pathstrNoneBuffer 过滤函数路径。函数签名:list[list[Sample]] -> list[list[Sample]]

Partial Rollout

参数类型默认值说明
--partial-rolloutflagFalse启用部分 Rollout。未完成的样本会被回收到数据缓冲区,适合长响应场景
--partial-rollout-max-aborted-countintNone样本被中断的最大次数。达到阈值后不再中断该样本,保证其完成生成
--mask-offpolicy-in-partial-rolloutflagFalse部分 Rollout 中是否 mask 之前的生成内容。设置后只有 on-policy 生成的 Token 参与训练

权重更新

参数类型默认值说明
--update-weight-buffer-sizeint512MB权重更新的缓冲区大小(字节)。分块更新权重,对 MoE 模型有用
--update-weights-intervalint1权重更新间隔
--keep-old-actorflagFalse是否在训练过程中保留 Rollout 模型

外部推理引擎

参数类型默认值说明
--rollout-externalflagFalse使用外部 SGLang 实例而非框架内启动的实例
--rollout-external-engine-addrsstr (列表)None外部引擎的地址和端口列表

SGLang 引擎参数

更多参数请参照 SGLang 官方文档。

参数类型默认值说明
--sglang-mem-fraction-staticfloat-SGLang 静态内存分配比例
--sglang-profileflagFalse启用 SGLang 引擎的 torch profiling。在 Rollout 推理期间触发,每步保存 profile trace
--sglang-profile-stepsint (列表)None指定要进行 SGLang profiling 的绝对 rollout step ID(0-indexed)列表。优先级高于 --sglang-profile-step-start/end。例如 --sglang-profile-steps 3 10 50
--sglang-profile-step-startintNoneSGLang profiling 的起始 rollout step(inclusive,0-indexed)。与 --sglang-profile-step-end 配合指定连续范围。设置了 --sglang-profile-steps 时被忽略
--sglang-profile-step-endintNoneSGLang profiling 的结束 rollout step(inclusive,0-indexed)。与 --sglang-profile-step-start 配合指定连续范围。设置了 --sglang-profile-steps 时被忽略。例如 start=2, end=4 会采集 step 2, 3, 4
--sglang-profile-output-dirstrNoneSGLang profile trace 的输出目录。默认使用 traces/<tb_experiment_name>/sglang_trace
--sglang-profile-num-stepsint3每轮 Rollout 中要 profile 的 SGLang 前向步数。-1 表示 profile 整个 Rollout 步,直到调用 stop_profile
--sglang-profile-activitiesstr (列表)["CPU", "GPU"]要 profile 的活动类型(例如 CPU GPU
--sglang-profile-by-stageflagFalse按阶段(prefill/decode)分别进行 profile
--sglang-profile-with-stackflagFalse在 profile trace 中记录调用栈
--sglang-profile-record-shapesflagFalse在 profile trace 中记录张量形状

自定义 Rollout 函数

参数类型默认值说明
--rollout-function-pathstrrelax.engine.rollout.sglang_rollout.generate_rolloutRollout 生成函数路径
--custom-generate-function-pathstrNone自定义 generate 函数,替换默认 rollout 中的 generate 函数。适合实现多轮对话、function calling 等特殊逻辑
--rollout-data-postprocess-pathstrNoneRollout 数据后处理函数,在获取完所有数据(包含 log_probs)后调用。可用于更新 loss mask
--custom-rollout-log-function-pathstrNone自定义 Rollout 日志函数
--custom-eval-rollout-log-function-pathstrNone自定义评估 Rollout 日志函数

批处理配置

参数类型默认值说明
--global-batch-sizeintNone全局批次大小。定义执行一次参数更新(optimizer.step)所需的样本量
--micro-batch-sizeint1微批次大小。开启 --use-dynamic-batch-size 后该值被忽略
--num-steps-per-rolloutintNone每次 Rollout 的训练步数。等效于设置 GBS = rollout_batch_size * n_samples_per_prompt / num_steps_per_rollout
--use-dynamic-batch-sizeflagFalse启用动态批处理。根据样本长度动态打包,使每个 micro-batch 的总 Token 数接近 --max-tokens-per-gpu 限制
--max-tokens-per-gpuintNone每个 GPU 的最大 Token 数。启用动态批处理时必须设置。使用 CP 时应设为约 max_response_len / cp_size
--log-probs-max-tokens-per-gpuintNone计算 log probs 时每个 GPU 的最大 Token 数。None 时等于 max-tokens-per-gpu
--balance-dataflagFalse使用 karmarkar_karp 算法在数据并行 rank 间平衡 Token 数量。仅在 colocate 模式下可用,不支持 --fully-async。注意同一 Prompt 的不同响应可能被分到不同训练步

并行配置

参数类型默认值说明
--tensor-model-parallel-sizeint1张量并行大小
--pipeline-model-parallel-sizeint1流水线并行大小
--sequence-parallelflagFalse启用序列并行
--context-parallel-sizeint1上下文并行大小
--expert-model-parallel-sizeint1专家并行大小(MoE 模型)
--expert-tensor-parallel-sizeint1专家张量并行大小

重计算

重计算部分使用的是 Megatron 原生参数,具体可参考 Megatron 文档。

参数类型默认值说明
--recompute-granularitystr-重计算粒度:fullselective
--recompute-methodstr-重计算方法:uniformblock
--recompute-num-layersint-重计算层数

优化器配置

参数类型默认值说明
--lrfloat1e-6学习率
--optimizerstr-优化器类型(Megatron 原生参数)
--lr-decay-stylestr-学习率衰减方式(Megatron 原生参数)
--weight-decayfloat-权重衰减(Megatron 原生参数)
--adam-beta1float-Adam beta1(Megatron 原生参数)
--adam-beta2float-Adam beta2(Megatron 原生参数)
--clip-gradfloat1.0梯度裁剪
--seedint1234随机种子
--optimizer-cpu-offloadflag-启用 CPU offload 优化器状态(Megatron 原生参数)
--overlap-cpu-optimizer-d2h-h2dflag-重叠 CPU 优化器 D2H/H2D 通信(Megatron 原生参数)
--use-precision-aware-optimizerflag-使用精度感知优化器(Megatron 原生参数)
--use-distributed-optimizerflag-ZeRO-1 风格分片优化器状态(Megatron 原生参数)
--overlap-grad-reduceflag-反向计算与 grad reduce-scatter 重叠(Megatron 原生参数)
--overlap-param-gatherflag-reduce-scatter 与下一步 param all-gather 重叠,强制配合 --overlap-grad-reduce(Megatron 原生参数)
--calculate-per-token-lossflagFalse按 Token 计算损失(Megatron 原生参数)

优化器 Flag 兼容性

场景--use-distributed-optimizer--overlap-grad-reduce / --overlap-param-gather
纯文本 Dense
Dense VL,CP = 1
Dense VL,CP > 1
MoE

算法配置

优势估计

参数类型默认值可选值说明
--advantage-estimatorstrgrpogrpo, gspo, on_policy_distillation, sapo优势估计器。注意:OPD 现在独立于优势估计器,使用 --opd-kl-coef > 0 在任何估计器上启用 OPD
--normalize-advantagesflagFalse-是否归一化优势
--disable-grpo-std-normalizationflag--禁用 GRPO 标准差归一化(来自 Dr.GRPO
--disable-rewards-normalizationflag--禁用 reward 归一化
--disable-compute-advantages-and-returnsflag--禁用优势和回报计算。用于 SFT 或自定义损失函数

损失函数

参数类型默认值可选值说明
--loss-typestrpolicy_losspolicy_loss, custom_loss损失类型。custom_loss 时需设置 --custom-loss-function-path
--custom-loss-function-pathstrNone-自定义损失函数路径
--eps-clipfloat0.2-PPO 裁剪范围(下界)
--eps-clip-highfloatNone-PPO 裁剪上界。None 时等于 --eps-clip
--eps-clip-cfloatNone-Dual-clip PPO 的值下界(论文
--value-clipfloat0.2-值函数裁剪范围
--entropy-coeffloat0.0-熵损失系数

KL 散度相关

参数类型默认值说明
--kl-coeffloat0.0KL 惩罚系数,用于 reward shaping(在优势计算之前应用到 reward 信号)。不能与 --kl-loss-coef 同时非零
--use-kl-lossflagFalse是否使用 GRPO 中的 KL 损失
--kl-loss-coeffloat0.0KL 惩罚系数,添加到最终 PPO 损失中。不能与 --kl-coef 同时非零
--kl-loss-typestrk1k1, k2, k3, low_var_kl
--use-unbiased-klflagFalse启用无偏 KL 估计
--ref-update-intervalintNone参考模型更新间隔(Rollout 步数)。None 表示不更新参考模型

SAPO 参数

参数类型默认值说明
--sapo-tau-posfloat1.0SAPO 正优势温度
--sapo-tau-negfloat1.05SAPO 负优势温度

Critic 配置

参数类型默认值说明
--num-critic-only-stepsint0仅训练 Critic 的步数
--critic-train-onlyflagFalse仅训练 Critic 模型
--critic-lrfloatNoneCritic 学习率。None 时等于 --lr
--critic-lr-warmup-itersint0Critic 模型线性预热的迭代数

Off-Policy 修正

参数类型默认值说明
--use-rollout-logprobsflagFalse计算重要性采样比率时使用 Rollout 的 logprobs。未设置时使用 Actor 模型的 logprobs
--use-tisflagFalse启用 TIS(Truncated Importance Sampling)off-policy 重要性采样
--tis-clipfloat2.0重要性采样比率的裁剪阈值上界
--tis-clip-lowfloat0重要性采样比率的裁剪阈值下界
--custom-tis-function-pathstrNone自定义 TIS/RS 函数路径
--custom-pg-loss-reducer-function-pathstrNone自定义 pg_loss reducer 函数路径。设置后 pg_loss 使用自定义 reducer,其他指标仍使用默认的 sum_of_sample_mean

Routing Replay 与 OPSM

参数类型默认值说明
--use-routing-replayflagFalse启用 Routing Replay(论文
--use-rollout-routing-replayflagFalse启用 Rollout Routing Replay(论文)。启用后会自动开启 --use-routing-replay
--use-opsmflagFalse启用 Off-Policy Sequence Masking (OPSM)
--opsm-deltafloat1e-4OPSM 阈值

其他训练选项

参数类型默认值说明
--reset-optimizer-statesflagFalse每次 Rollout 后是否重置优化器状态
--use-rollout-entropyflagFalse计算 logprobs 时是否同时计算熵。用于特殊 loss mask
--get-mismatch-metricsflagFalse是否计算 mismatch 指标。需要同时设置 --custom-tis-function-path

参数冻结与选择性训练

参数类型默认值说明
--only-train-params-name-liststr (列表)None要训练的参数名正则表达式列表。其余参数被冻结。不能与 --freeze-params-name-list 同时使用。示例:--only-train-params-name-list experts
--freeze-params-name-liststr (列表)None要冻结的参数名正则表达式列表。其余参数保持可训练。示例:--freeze-params-name-list embedding output_layer

评估配置

参数类型默认值说明
--eval-intervalintNone评估间隔(Rollout 轮数)
--eval-prompt-datastr (列表)None评估数据集,格式:dataset_name /path/to/data.jsonl,可指定多对
--eval-configstrNoneOmegaConf YAML/JSON 评估配置文件路径。设置时覆盖 --eval-prompt-data
--eval-function-pathstrNone评估生成函数路径。None 时使用 --rollout-function-path
--skip-eval-before-trainflagFalse是否跳过训练前的评估
--eval-input-keystrNone评估数据中输入字段的 key。None 时使用 --input-key
--eval-label-keystrNone评估数据中标签字段的 key
--eval-tool-keystrNone评估数据中 tool 字段的 key
--n-samples-per-eval-promptint1每个评估 Prompt 的采样数量
--eval-temperaturefloatNone评估时采样温度
--eval-top-pfloatNone评估时 Top-p 参数
--eval-top-kintNone评估时 Top-k 参数
--eval-max-response-lenintNone评估时最大响应长度
--eval-max-prompt-lenintNone评估时最大 Prompt 长度
--eval-min-new-tokensintNone评估时最少新生成的 Token 数
--eval-max-context-lenintNone评估时最大上下文长度。None 时等于 --rollout-max-context-len

Reward 配置

参数类型默认值说明
--rm-typestrNone内置 Reward 模型类型
--custom-rm-pathstrNone自定义 Reward 函数路径。函数签名:def custom_rm(args, sample) -> float
--reward-keystrNoneReward 函数返回 dict 时提取 reward 值的 key
--eval-reward-keystrNone评估时的 reward key。None 时等于 --reward-key
--group-rmflagFalse是否对整个 group 做 Reward 计算
--rm-urlstrNone远程 Reward 模型服务 URL(用于 --rm-type remote_rm
--custom-reward-post-process-pathstrNone自定义 reward 后处理函数路径。默认是 GRPO 的归一化处理
--custom-convert-samples-to-train-data-pathstrNone自定义样本到训练数据的转换函数。签名:def convert_samples_to_train_data(args, samples) -> dict

GenRM(生成式奖励模型)

参数类型默认值说明
--genrm-model-pathstrNoneGenRM 模型路径。设置后启用 GenRM
--genrm-num-gpusint1GenRM 使用的总 GPU 数
--genrm-num-gpus-per-engineint1每个 GenRM 引擎实例的 GPU 数
--genrm-engine-configjsonNoneGenRM 引擎初始化参数。示例:'{"dp_size": 1, "pp_size": 1, "max_total_tokens": 8192}'
--genrm-sampling-configjsonNoneGenRM 采样参数。可用 key:temperature(默认 0.1)、top_p(默认 1.0)、top_k(默认 -1)、max_response_len(默认 4096)

On-Policy Distillation(OPD)

参数类型默认值可选值说明
--use-opdflagFalse-启用 On-Policy Distillation。需同时指定 --opd-type
--opd-typestrNonesglang, megatronOPD 类型。sglang:从外部 SGLang 服务器获取教师模型的 logprobs;megatron:通过 --opd-teacher-load 加载教师模型
--opd-kl-coeffloat1.0-OPD KL 惩罚系数
--opd-teacher-loadstrNone-OPD 教师模型检查点路径。--opd-type=megatron 时必须设置
--opd-teacher-ckpt-stepintNone-OPD 教师模型检查点步数

容错配置

参数类型默认值说明
--use-fault-toleranceflagFalse是否启用 Rollout 期间的容错功能
--use-health-checkflagFalse是否启用全局健康检查系统。Controller 的 HealthManager 监控所有服务,故障时触发自动重启
--max-global-restartint3允许的最大全局重启次数。超过后训练终止。仅在 --use-health-check 启用时生效
--rollout-health-check-intervalfloat30.0Rollout 引擎健康检查间隔(秒)
--rollout-health-check-timeoutfloat30.0Rollout 引擎健康检查超时时间(秒)
--rollout-health-check-first-waitfloat0开始健康检查前的初始等待时间(秒)。使用 deepgemm 时需要增大此值

弹性扩缩容配置

Autoscaler

参数类型默认值说明
--autoscaler-configstrNoneAutoscaler YAML 配置文件路径。设置后启用自动扩缩容,未设置则禁用。示例:--autoscaler-config relax/utils/autoscaler/autoscaler.yaml

Autoscaler YAML 配置详情请参见 relax/utils/autoscaler/autoscaler.yaml

Scale-Out 操作参数

参数类型默认值可选值说明
--scale-out-timeoutfloat300.0-所有扩容操作(引擎启动、连接、健康检查、权重同步等)的超时时间(秒)
--scale-out-partial-success-policystrrollback_allrollback_all, keep_partial扩容部分成功时的策略。rollback_all 回滚所有引擎;keep_partial 保留成功的引擎

Scale-In 操作参数

参数类型默认值说明
--scale-in-drain-timeoutfloat30.0等待进行中请求排空的超时时间(秒),超时后强制终止
--scale-in-shutdown-timeoutfloat30.0SGLang 引擎优雅关闭的超时时间(秒),超时后使用 ray.kill 强制终止

日志与监控配置

TensorBoard

参数类型默认值说明
--use-tensorboardflagFalse启用 TensorBoard 日志
--tb-project-namestrNoneTensorBoard 日志目录。默认使用环境变量 TENSORBOARD_DIR
--tb-experiment-namestrNoneTensorBoard 实验名称

ClearML

参数类型默认值说明
--use-clearmlflagFalse启用 ClearML 日志

Metrics Service

参数类型默认值说明
--use-metrics-serviceflagFalse启用集中化指标收集和报告服务
--timeline-dump-dirstrNone时间线 trace 事件导出目录(Chrome Trace 格式)。未设置则禁用时间线追踪

日志选项

参数类型默认值说明
--log-passrateflagFalse启用 pass@n 通过率日志
--log-multi-turnflagFalse启用多轮 Rollout 信息日志
--log-correct-samplesflagFalse记录正确样本
--log-reward-categorystrNone记录 reward 分类统计。指定 reward dict 中的 key

通知

参数类型默认值说明
--notify-urlsstrNoneApprise 通知 URL 列表(逗号分隔)

Router 配置

参数类型默认值说明
--use-slime-routerflagFalse使用 SlimeRouter 进行基于文本的路由而非 SGLang 的基于 Token 的路由
--slime-router-middleware-pathsstr (列表)""中间件路径列表
--slime-router-timeoutfloatNoneSlimeRouter HTTP 请求超时时间(秒)
--slime-router-max-connectionsintNoneSlimeRouter HTTP 客户端最大连接数
--slime-router-health-check-failure-thresholdint3连续失败多少次后标记 worker 为不健康

其他训练参数

参数类型默认值说明
--train-env-varsjson{}训练进程的额外环境变量
--train-memory-margin-bytesint1GB (1024³)训练内存分配的预留空间
--disable-weights-backuperflag-禁用权重备份以节省主机内存
--custom-model-provider-pathstrNone自定义模型 provider 函数路径
--recompute-loss-functionflagFalse是否重计算损失函数以节省显存
--log-probs-chunk-sizeint-1分块计算 log probs 的大小。用于节省显存
--allgather-cpflagFalse-
--model-namestrNone模型名称,用于 Megatron 到 HF 权重转换。未设置时从 AutoConfig.from_pretrained(hf_checkpoint) 推断
--only-load-weightflagFalse参考模型和 actor fwd 仅加载权重
--rlsp-server-portint8234RLSP Server HTTP 端口
--custom-config-pathstrNone自定义参数 YAML 配置文件路径。文件中的 key-value 会覆盖已有参数

调试与性能分析参数

调试

参数类型默认值说明
--debug-rollout-onlyflagFalse仅运行 Rollout,不训练
--debug-train-onlyflagFalse仅运行训练,不 Rollout
--load-debug-rollout-datastrNone加载调试用 Rollout 数据。设置后自动启用 --debug-train-only
--load-debug-rollout-data-subsamplefloatNone子采样部分调试 Rollout 数据以加速调试
--save-debug-rollout-datastrNone保存 Rollout 数据,路径支持 {rollout_id} 占位符
--save-debug-train-datastrNone保存训练数据,路径支持 {rollout_id} 占位符
--dump-detailsstrNone导出所有训练细节用于事后分析
--check-weight-update-equalflagFalse检查权重更新是否相等
--enable-cuda-memory-checkflagFalse在底层 NCCL 通信调用周围启用内存检查。在每次集合通信前记录可用 GPU 显存,通信失败时将内存信息附加到异常中

训练性能 Profiling

以下参数控制训练过程的 PyTorch Profiler 采集。Trace 文件默认保存到 traces/<tb_experiment_name>/train_trace/ 目录下。

参数类型默认值说明
--use-pytorch-profilerflagFalse启用 PyTorch 内置 profiler 记录训练步骤的 CUDA kernel、CPU op 和通信操作(来自 Megatron)
--profile-step-startint10开始 profiling 的步数偏移(inclusive,来自 Megatron)。指从本次训练启动后的第 N 步开始采集,非绝对 rollout ID;断点续训时计数从 0 重新开始
--profile-step-endint12停止 profiling 的步数偏移(inclusive,来自 Megatron)。含义同上。例如 start=10, end=12 会采集 step 10, 11, 12(共 3 步)
--profile-targetstr (列表)train_overall性能分析目标:train_overalltrain_actortrain_log_probs
--profile-with-stackflagFalse在 profiler trace 中记录调用栈信息
--profile-with-memoryflagFalse在 profiler trace 中记录内存信息
--profile-with-flopsflagFalse在 profiler trace 中估算 FLOPs

GPU 内存 Profiling

以下参数控制 GPU 内存快照采集,用于诊断显存泄漏和 OOM 问题。Snapshot 文件可用 PyTorch Memory Viz 工具(torch.cuda.memory._viz)查看。

参数类型默认值说明
--record-memory-historyflagFalse启用 CUDA 内存分配历史记录(来自 Megatron)。开启后会记录每次分配/释放的调用栈和张量信息,并在发生 OOM 时自动 dump snapshot
--memory-snapshot-pathstrsnapshot.pickle内存快照文件名(来自 Megatron)
--memory-snapshot-dirstrNone内存快照保存目录。默认使用 traces/<tb_experiment_name>/memory_snapshot
--memory-snapshot-num-stepsintNone在指定步数后主动 dump 内存快照(0-indexed,即设为 3 表示在第 2 步后 dump)
--memory-recorderstrtorch内存记录器后端:torch(PyTorch 内置)、memray(需要 pip install memray

网络

参数类型默认值说明
--http-proxystrNoneHTTP 代理地址
--use-distributed-postflagFalse使用分布式 POST 请求

环境配置

Relax 使用 configs/env.yaml配置运行时环境变量:

yaml
env_vars:
  TOKENIZERS_PARALLELISM: 'true'
  NCCL_DEBUG: 'WARN'
  CUDA_DEVICE_MAX_CONNECTIONS: '1'
  GLOO_SOCKET_IFNAME: "eth0"
  TP_SOCKET_IFNAME: "eth0"

基于 Apache 2.0 许可发布