joint-space-empowerment 仓库结构全解析Adroit、MyoHand 任务目录、seed 与 .pkl 文件都是什么joint-space-empowerment 是一个存放灵巧手强化学习预训练模型的官方仓库按 Adroit 与 MyoHand 两大灵巧手、6 类操作任务、多个 seed 目录组织。本文带你 5 分钟看懂它的仓库结构任务目录命名、seed_0~seed_5 各自代表什么、.zip与.pkl文件分别存了什么以及.yaml配置文件的作用帮助新手快速上手使用这些模型。一句话说清这个仓库 这是论文《Joint-Space Empowerment for Dexterous Coordination in Tendon-Driven Hands》ICML 2026 Spotlight的官方训练策略仓库基于 stable-baselines3 训练。仓库本身不含训练代码只包含两类资产资产说明训练好的 PPO 策略模型每个任务 × 每个 seed 各一份环境配置与归一化统计.yaml环境配置 .pkl观测统计完整说明见仓库根目录的 README.md。顶层目录两大灵巧手任务家族整个仓库只有两个一级目录对应两种灵巧手dexterous handjoint-space-empowerment ├── Adroit/ # Adroit 机械手研究界最常用的灵巧手基准 └── MyoHand/ # 肌腱驱动手更接近生物结构的 tendon-driven handAdroit/4 个任务 ——BaodingBalls抖空竹/转球、DieReorient骰子重定向、KeyTurn拧钥匙、PenTwirl转笔MyoHand/4 个同名任务外加两个 MyoHand 专属任务Reorient100100 个朝向目标的重定向和Reorient8-sparse8 个朝向、稀疏奖励每个任务目录内部结构完全一致1 个.yaml环境配置 若干seed_N目录。任务目录速查表不同任务为什么步数不同文件名中的数字是训练总步数total timesteps不同任务难度不同训练预算也不同任务训练步数AdroitMyoHandBaodingBalls转球10,000,000✅✅DieReorient骰子重定向10,000,000✅✅KeyTurn拧钥匙7,500,000✅✅PenTwirl转笔5,000,000✅✅Reorient8-sparse稀疏奖励5,000,000—✅Reorient100100 朝向2,000,000预训练 1,000,000—✅文件名规律很直白rl_model_5000000_steps.zip 训练了 500 万步的模型。seed 目录同一任务为什么有多份模型seed_0~seed_5是随机种子random seed。强化学习训练具有随机性同一个任务用不同种子独立训练一遍得到不同的策略网络。Adroit 的 4 个任务各有seed_0~seed_4每任务 5 份模型MyoHand 的BaodingBalls、DieReorient、Reorient8-sparse是seed_0、seed_1、seed_2、seed_4、seed_5没有 seed_3选种规则略有差异多份种子的作用是跑多个独立重复实验才能可靠地统计成功率避免只跑一次、碰巧成功的假象。做实验时通常 5 个种子都评测一遍再取平均。以 Adroit 的 BaodingBalls 为例模型Adroit/BaodingBalls/seed_0/rl_model_10000000_steps.zip归一化统计Adroit/BaodingBalls/seed_0/rl_model_vecnormalize_10000000_steps.pkl核心疑问.zip和.pkl文件到底存了什么这是新手最常问的问题。每个seed_N目录里成对出现两个文件文件内容加载方式rl_model_N_steps.zip训练完成的 PPO 策略网络stable-baselines3 格式内部含网络权重、动作空间配置等sb3.load(path)rl_model_vecnormalize_N_steps.pkl观测归一化统计量均值与标准差由 VecNormalize 保存模型加载时配套传入为什么要两个文件因为配置里开启了norm_obs: True观测归一化网络期望的输入是减均值、除标准差之后的数值。.pkl文件就是记录这套归一化参数的 Python pickle 文件——加载模型时必须同时带上它否则输入分布对不上策略行为会完全错乱。 简单记忆.zip是大脑网络权重.pkl是校准表输入数据的统计量两者必须配套使用。.yaml配置文件环境的训练档案每个任务目录根部有一个.yaml文件记录了该任务训练时的完整环境配置例如 Adroit/BaodingBalls/CustomAdroitBaodingP1-v1.yamlenv_id: CustomAdroitBaodingP1-v1 total_timesteps: 10_000_000 # 训练总步数与文件名中的数字对应 reward_type: dense # 稠密奖励 norm_obs: True # 启用观测归一化 clip_obs: 10.0 # 观测裁剪上限 env_kwargs: max_episode_steps: 200 # 每回合最长 200 步 weighted_reward_keys: # 各奖励项权重 solved: 5 alive: 1 pos_dist_1: 1 pos_dist_2: 1几个关键看点reward_type多数任务是dense稠密奖励每步都有分数而 MyoHand/Reorient8-sparse/myoHandReorient8-v0.yaml 是sparse稀疏奖励只有成功才给分对应更难的训练设定weighted_reward_keys各奖励项的权重如solved: 5表示成功得 5 分、drop: 5.0表示掉落罚 5 分task_variables_keys该任务追踪的状态变量如obj_err_pos位置误差、obj_err_rot旋转误差camera可视化相机参数fps、视角play.py回放演示时会用到Reorient100 的特殊结构两阶段训练存档MyoHand/Reorient100/ 是仓库里唯一的两层结构任务对应两阶段训练流程MyoHand/Reorient100 ├── Pretraining_Play/ # 阶段一预训练play 阶段 │ └── seed_0 ~ seed_4 │ ├── rl_model_replay_buffer_1000000_steps.pkl # 经验回放缓冲区 │ └── rl_model_vecnormalize_1000000_steps.pkl # 归一化统计 └── Training/ # 阶段二正式训练 └── seed_0 ~ seed_4 ├── rl_model_2000000_steps.zip # 最终策略模型 └── rl_model_vecnormalize_2000000_steps.pkl注意预训练目录里有个rl_model_replay_buffer_*.pkl—— 这是经验回放缓冲区约 2GB 的大文件保存了预训练阶段采样的所有状态-动作-奖励样本供阶段二继续学习使用。这也是仓库中体积最大的文件之一。文件体积大Git LFS 在背后仓库通过 Git LFS 管理大文件见 .gitattributes.zip、.pkl均在 LFS 列表中。克隆或拉取时需要安装 Git LFS否则下载到的会是几十字节的指针文件而非真实模型。play.py脚本在加载前会自动处理模型下载因此通常无需手动操心。如何使用这些模型训练与回放代码在配套的 JoSE 仓库中克隆https://gitcode.com/hf_mirrors/jamesheald/joint-space-empowerment仅用于模型文件在 JoSE 仓库根目录运行uv run python play.py --hand hand --task task --seed seed参数可选值--handAdroit、MyoHand--taskBaodingBalls、DieReorient、KeyTurn、PenTwirl、Reorient8-sparse、Reorient100/Training--seed0~5以各任务目录下实际存在的 seed 为准例如想看 Adroit 手转笔--hand Adroit --task PenTwirl --seed 0模型对应 Adroit/PenTwirl/seed_0/rl_model_5000000_steps.zip。常见问题速答 Q我想复现论文里某任务的结果应该用哪个文件用对应seed_N目录里的.zip模型 同名.pkl归一化文件再配合任务目录下的.yaml环境配置三者一一对应。Q为什么 MyoHand 有些任务没有 seed_3论文实验为每个手 × 任务组合保留了 5 个成功种子具体编号因任务而异直接以目录实际内容为准即可。Q.pkl文件能单独打开看吗可以用 Python 的pickle.load加载内容是 VecNormalize 的均值/标准差等统计字典主要用于加载模型时配套传入一般无需人工查看。总结一张图记住仓库结构 ️手 (Adroit / MyoHand) └── 任务 (BaodingBalls / KeyTurn / …) ├── *.yaml ← 环境配置奖励、步数、相机 └── seed_N/ ├── rl_model_…_steps.zip ← PPO 策略网络 └── rl_model_vecnormalize_…_steps.pkl ← 观测归一化统计记住这个三层结构手 → 任务 → seed你就能在这个仓库里秒定位任意一个模型文件了。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?