- 人工智能
- 基础模型
【免费下载链接】rho-libero
rho-libero 是面向 LIBERO 机器人操作基准的预训练 VLA(视觉-语言-动作)模型检查点,其核心配置文件 policy.json 完整记录了 50 个训练与推理超参数。这份手册将逐项解析优化器、学习率调度、流匹配(Flow Matching)、冻结开关等关键配置,帮助你快速读懂模型训练设置并复现推理环境。
1. 文件全景:一个模型检查点由哪些文件组成
在逐参数解析之前,先了解 policy.json 在整个仓库中的位置。一个完整的 rho 格式检查点包含以下文件:
| 文件 | 作用 | 关键内容 |
|---|---|---|
| policy.json | 模型结构与训练超参数 | 50 个字段,本文主角 |
| features.json | 数据特征定义 | 7 维 action、2 张 256×256 图像、8 维 state |
| data_config.json | 数据加载配置 | batch_size=32、QUANTILE 归一化、clip=±1.05 |
| stats.json | 数据统计量 | 各特征的 mean/std/quantile,推理反归一化必需 |
| manifest.json | 检查点元信息 | 训练步数 step=3000,5GB 分片 |
| model.safetensors.index.json | 权重分片索引 | 10.5GB 权重映射到 3 个 safetensors 分片 |
💡 manifest.json 显示
"step": 3000,说明这是一个训练中途的快照;而 policy.json 中的pretrained_repo_id指向microsoft/rho-base,即该检查点由 rho 基座模型微调而来。
2. 基础信息:4 个快速定位字段
policy.json 开头 4 个字段定义了模型的身份与运行环境:
| 参数 | 本仓库取值 | 含义 |
|---|---|---|
type | rho | 策略模型系列,加载器据此选择模型类 |
name | rho | 模型实例名,与 LIBERO 数据集对应 |
device | cuda | 默认推理/训练设备为 GPU |
dtype | bfloat16 | 半精度计算,显存约为 float32 的一半 |
📌新手提示:bfloat16比float16动态范围更大,训练大模型时不易上溢(overflow),这也是 VLA 模型的常见选择。
3. 优化器与学习率调度:AdamW + 余弦衰减配置
这是训练最核心的两组参数,分别位于 policy.json 的lr_scheduler与optimizer子对象中。
3.1 学习率调度器(lr_scheduler)
"lr_scheduler": { "type": "cosine_decay_with_warmup", "num_warmup_steps": 2500, "num_decay_steps": 40000, "peak_lr": 0.0001, "decay_lr": 5e-06, "decay_start_step": null }| 参数 | 取值 | 通俗解释 |
|---|---|---|
type | cosine_decay_with_warmup | 先线性升温、再按余弦曲线降温的经典调度 |
num_warmup_steps | 2500 | 前 2500 步学习率从 0 爬升到峰值,避免初期不稳定 |
num_decay_steps | 40000 | 之后用 40000 步把学习率从峰值余弦衰减到终点 |
peak_lr | 1e-4 | 升温结束时的最高学习率 |
decay_lr | 5e-6 | 衰减终点的学习率,约为峰值的 1/20 |
decay_start_step | null | 自动在 warmup 结束后开始衰减 |
3.2 优化器(optimizer)
"optimizer": { "type": "adamw", "lr": 0.0001, "weight_decay": 1e-10, "grad_clip_norm": 10.0, "betas": [0.9, 0.95], "eps": 1e-08 }| 参数 | 取值 | 通俗解释 |
|---|---|---|
type | adamw | 带解耦权重衰减的 Adam,深度学习默认首选 |
lr | 1e-4 | 初始学习率,与peak_lr保持一致 |
weight_decay | 1e-10 | 权重衰减几乎为零,说明该任务几乎不依赖 L2 正则 |
grad_clip_norm | 10.0 | 梯度全局范数裁剪到 10,防止梯度爆炸 |
betas | [0.9, 0.95] | β2=0.95 高于常见默认值 0.999 的反向调整,二阶矩估计更"灵敏",适配 VLA 训练 |
eps | 1e-8 | 数值稳定性常数 |
⚠️ 注意文件后半部分还有一组"扁平化"的冗余字段(policy.json 的optimizer_lr、optimizer_betas、scheduler_warmup_steps等),其取值与上面子对象完全一致。这是为了兼容旧版加载器而保留的快照副本,解析配置时以子对象为准即可。
4. 动作专家模型结构:12 层 Transformer 与注意力配置
rho 的架构是"冻结可选的 VLM 主干 + 可训练的动作专家(action expert)"。policy.json 中这一组参数定义了动作专家的形状:
| 参数 | 取值 | 含义 |
|---|---|---|
embed_dim | 2048 | 动作专家隐层宽度,与noise_policy_kwargs.emb_dim对齐 |
num_blocks | 12 | Transformer 块数量 |
num_heads | 16 | 自注意力头数(2048 ÷ 16 = 每头 128 维) |
ff_dim | 4096 | 前馈层宽度,为 embed_dim 的 2 倍 |
gqa_groups | 4 | 分组查询注意力(GQA),KV 头压缩为 4 组,降低推理显存 |
attention_type | cross | 主注意力为交叉注意力:动作 token 查询 VLM 特征 |
attention_implementation | flash_attention_2 | 使用 FlashAttention-2 加速,要求 GPU 支持 |
norm | adaptive | 自适应层归一化(AdaLN),由流时间步 t 调制 |
adaln_mode | shared | 各层共享 AdaLN 调制参数 |
adaln_lora_rank | 256 | AdaLN 调制矩阵的低秩分解秩 |
pos_emb_method | sinusoidal | 位置编码采用正弦形式 |
kv_pos_encoding | true | KV 侧启用位置编码 |
max_seq_len | 6144 | VLM 主干支持的最大序列长度 |
VLM 主干侧还有 3 个"接口"参数(policy.json):
vlm_layer_select: last—— 取 VLM 最后一层隐状态作为上下文特征;hidden_state_idx: 14—— 具体从第 14 层取隐状态(last模式下作为校验/兼容项);shared_vlm_projection: false—— 不同输入模态使用独立投影层。
📌 从 model.safetensors.index.json 可以验证:action_expert.transformer_blocks正好有 0~11 共 12 个块,每个块含query_self_attention、cross_attention与feedforward,与本节参数一一对应。
5. 动作块与数据维度:chunk_size 如何决定控制节奏
机器人策略不是一帧一帧输出,而是按"块"(chunk)批量预测未来动作:
| 参数 | 取值 | 含义 |
|---|---|---|
chunk_size | 16 | 一次预测 16 步动作,与 data_config.json 中训练用的 chunk 对齐 |
n_action_steps | 8 | 实际执行 8 步后重新规划(receding horizon 控制) |
n_obs_steps | 1 | 只使用当前 1 帧观测,不堆叠历史 |
max_action_dim | 32 | 动作维度的最大兼容上限(实际为 7 维) |
max_state_dim | 32 | 状态维度的最大兼容上限(实际为 8 维) |
💡 7 维 action 对应 LIBERO 的机械臂输出:3 维末端位置 + 3 维旋转 + 1 维夹爪开合,可在 features.json 中确认"shape": [7]。max_*_dim大于实际维度是为了让同一模型结构兼容不同机器人配置。
6. 流匹配训练:num_steps、采样策略与推理采样
rho 用Flow Matching(data_config.json 中training_mode: ROBOT_FLOWMATCH)替代传统模仿学习的 MSE 回归,相关参数如下:
| 参数 | 取值 | 含义 |
|---|---|---|
num_steps | 10 | 流匹配去噪/积分的总步数(训练目标定义) |
num_flow_samples | 1 | 推理时仅做 1 步采样,牺牲少量精度换取极低延迟 |
time_sampling_strategy | beta | 训练时按 Beta 分布采样时间步 t,让模型均匀覆盖整条流轨迹 |
dropout_p | 0.02 | 2% 的 Dropout 正则化 |
📌新手提示:num_flow_samples: 1意味着推理时模型"一步出结果",这是 16 步动作块能低延迟执行的关键——若追求更高精度,可将其调大,代价是推理耗时线性增加。
7. 噪声策略 vlm_residual:6 个噪声网络参数
noise_policy: vlm_residual是 rho 系列的特色:噪声不是纯随机数,而是由 VLM 特征条件化生成的"结构化残差",让扩散/流过程从有意义的起点出发。
policy.json 的noise_policy_kwargs:
| 参数 | 取值 | 含义 |
|---|---|---|
emb_dim | 2048 | 噪声网络的隐层宽度 |
state_dim | 8 | 输入机器人 8 维状态 |
hidden_dims | [1024, 1024, 1024] | 3 层 1024 维 MLP |
base_magnitude | 3.0 | "基础"噪声头输出幅度(放大幅度) |
head_magnitude | 1.5 | "头部"噪声头输出幅度 |
scale | 1.0 | 全局噪声缩放系数 |
在 model.safetensors.index.json 中可以看到对应的两组网络权重noise_policy.base与noise_policy.head,说明基础噪声和头部噪声由两个独立 MLP 生成,幅度比 3.0 : 1.5 让整体噪声偏向"基础动作模式"。
8. 冻结开关与训练范围:4 个 freeze 标志位
微调 VLA 时最关心的就是"哪些层动、哪些层不动",policy.json 提供了 4 个开关:
| 参数 | 本仓库取值 | 含义 |
|---|---|---|
freeze_vlm_backbone | false | VLM 主干不冻结,全量微调 |
freeze_vision_encoder | false | 视觉编码器不冻结 |
freeze_language_model | false | 语言模型不冻结 |
train_expert_only | false | 不只训练动作专家 |
enable_gradient_checkpointing | true | ✅ 开启梯度检查点,用重计算换显存 |
🧊 结论:这是一次全参数微调(VLM 主干 + 动作专家一起训练),并依赖梯度检查点控制显存。如果你要在小显存显卡上复训,把前 4 个开关设为true可显著降低显存占用,但泛化能力会打折扣。
9. 推理兼容字段:容易被忽略的 3 个参数
| 参数 | 取值 | 含义 |
|---|---|---|
resize_imgs_with_padding | null | 不启用"保持纵横比的 padding 缩放",直接用 256×256 原图 |
cross_attention_dim | null | 交叉注意力沿用embed_dim,未指定独立维度 |
log_hidden_state_stats | true | 训练时记录隐状态统计量(便于诊断) |
optimizer_lr_action_expert | null | 未给动作专家单独设学习率,与主干共用 1e-4 |
10. 交叉核对速查:5 个文件如何互相印证
拿到检查点后,建议按下面顺序核对,确保"配置—数据—权重"三者一致:
- policy.json
chunk_size: 16↔ data_config.jsonchunk_size: 16✅ - policy.json
state_dim: 8↔ features.jsonobservation.stateshape[8]✅ - features.json
actionshape[7]↔ data_config.jsonmin_action_chunk_size: 8≤chunk_size: 16✅ - manifest.json
step: 3000介于scheduler_warmup_steps: 2500与num_decay_steps: 40000之间 → 快照取自余弦衰减的中段 ✅ - stats.json 中
q01/q99分位数与 data_config.json 的QUANTILE归一化策略配套,推理反归一化时直接读取 ✅
11. 常见问题(FAQ)
Q1:修改chunk_size后还能直接加载权重吗?不能。chunk_size影响动作头输入形状,需与 data_config.json 同步修改并重新微调。
Q2:为什么文件里同时出现optimizer对象和optimizer_lr扁平字段?扁平字段是向后兼容的快照副本,值与子对象相同;解析时应优先读取optimizer/lr_scheduler对象。
Q3:num_flow_samples: 1一步采样精度够吗?在本检查点的 LIBERO 训练中是官方验证过的配置;若你的任务更精细,可逐步调大到 2~4 观察成功率变化。
Q4:如何确认权重与配置匹配?用 model.safetensors.index.json 的total_size(约 10.5GB)核对 3 个分片文件总和,再对照本手册第 4 节的层数(12 个transformer_blocks)即可快速判断版本是否一致。
📚一句话总结:policy.json 就是一本"模型说明书"——优化器与调度决定训练节奏(AdamW + 余弦 4 万步),12 层交叉注意力动作专家 + 1 步流匹配采样决定推理形态,4 个 freeze 开关记录了这是一次全量微调。读懂这 50 个字段,你就掌握了 rho-libero 从训练到推理的完整脉络。
- 人工智能
- 基础模型
【免费下载链接】rho-libero
相关推荐
rho-fr3-duo训练配置全解读:policy.json里30多个关键超参数应该怎么读
rho fr3 duo训练配置全解读:policy.json里30多个关键超参数应该怎么读 rho fr3 duo 是微软开源的机器人操作策略模型(robot
config.json里50+个键逐一精讲:AliceAI-Foundation-80B-A3B-Base模型超参数完全参考手册
config.json里50+个键逐一精讲:AliceAI Foundation 80B A3B Base模型超参数完全参考手册 AliceAI Foundat
人工智能大模型基础模型预训练config.json参数逐个讲透:Spark-X2.6-4B-Base配置参考手册
config.json参数逐个讲透:Spark X2.6 4B Base配置参考手册 📌 Spark X2.6 4B Base 是 SparkLLM 团队推出
人工智能大模型基础模型本地部署AI Agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考