《VLA 系列》AMP 代码复现 | 强化训练 | 行走 跌倒 恢复
本博客是基于 mjlab + rsl_rl 的 G1/H2 AMP 运动控制,同时支持走/跑、跌倒恢复 🚀
训练开源代码:https://github.com/ccrpRepo/AMP_mjlab
部署集成位置:部署集成代码位于 https://github.com/ccrpRepo/wbc_fsm 项目中的 MJAmp State。
其中AMP的算法思路、代码分析,参考我这篇博客:《VLA 系列》AMP 算法与代码分析技术
示例效果:
跌到、恢复:
H2的效果:
项目核心特点:
- ⭐ 统一策略:使用同一个
policy同时学习locomotion(走/跑)与recovery(跌倒恢复) - 🧠 AMP 风格约束:通过
AMP discriminator约束动作风格与运动先验 - 🤖 H2 新增适配:原开源版本只支持
G1,可以通过修改任务配置、机器人资产、动作数据和训练入口等代码,新增适配H2 - 🚀 训练部署一致:训练与导出链路保持一致,支持直接导出
ONNX policy
参考项目:
- unitreerobotics/unitree_rl_mjlab 项目的开源工作与启发。
- Open-X-Humanoid/TienKung-Lab,本博客在
rsl_rl的AMP部分参考了该实现。
📚 目录
- 🧠 1. 核心思路
- 🧩 2. 环境要求
- 📦 3. 下载代码
- 🐍 4. 创建并激活 conda 环境
- 🔧 5. 安装项目依赖
- ⚡ 6. 安装指定版本的 PyTorch
- 🧱 7. 安装 Warp 和 mujoco-warp 兼容版本
- 🩹 8. 应用 mjlab 观测历史补丁
- 🛠️ 9. 修复 mjlab CUDA Graph 兼容问题
- 🔍 10. 查看可用任务
- 🚀 11. G1 训练
- 🤖 12. H2 训练
- 🎬 13. 评估与可视化
- 📊 14. 运动数据准备
- 🗂️ 15. 核心代码说明
- ⭐ 16. 总结
1. 核心思路
传统做法常把“走跑策略”和“恢复策略”分开训练并做切换;本博客将两类能力放入同一个策略中统一学习。
实现要点:
- 📁 运动数据分组:
Walk/Run数据目录:src/assets/motions/g1/amp/WalkandRunRecovery数据目录:src/assets/motions/g1/amp/RecoveryH2数据目录:src/assets/motions/h2/amp/WalkandRun与src/assets/motions/h2/amp/Recovery
- ⏱️ 延迟重置机制(Delayed Termination):
- 一部分环境在触发终止后不立即 reset,而是给定恢复窗口
- 该子集环境优先从
Recovery片段采样 reset 状态
- 🧠 统一 AMP 训练:
- 单一
actor-critic+ 单一AMP discriminator - 在同一训练过程中学习速度跟踪、抗扰动与恢复能力
- 单一
✅ 核心收益:这样可以减少策略切换带来的状态不连续问题,得到更一致的行为。
2. 环境要求
- 系统:
Linux - Python:
Python 3.11(建议) - 仿真 / GPU:已可用的
MuJoCo/ GPU 驱动环境 - CUDA:推荐
CUDA 12.8/CUDA 12.9相关环境
3. 下载代码
git clone https://github.com/ccrpRepo/AMP_mjlab.git
cd AMP_mjlab
4. 创建并激活 conda 环境
conda create -n mjlab python=3.11
conda activate mjlab
5. 安装项目依赖
在项目根目录执行:
python -m pip install -e .
✅ 说明:该命令会安装本仓库,并根据
setup.py安装mjlab==1.2.0。
6. 安装指定版本的 PyTorch
pip install torch==2.11.0 torchvision==0.26.0 torchaudio==2.11.0 --index-url https://download.pytorch.org/whl/cu128
7. 安装 Warp 和 mujoco-warp 兼容版本
pip install warp-lang==1.14.0 mujoco-warp==3.9.0
8. 应用 mjlab 观测历史补丁
⚠️ 注意:如果不打这个补丁,则需要在代码中去掉
history_ordering配置。
补丁作用说明:
- 增加历史观测的展开方式选项,可选择按时间维(
time)或按观测项(term)展开 - mjlab 默认仅支持按
term展开
补丁文件:
mjlab_patch/mjlab/managers/observation_manager.py
示例覆盖命令:
cp mjlab_patch/mjlab/managers/observation_manager.py \
/home/liguopu/miniconda3/envs/mjlab/lib/python3.11/site-packages/mjlab/managers/observation_manager.py
💡 路径提示:如果环境路径不同,请把
/home/liguopu/miniconda3/envs/mjlab替换为实际的conda环境路径。也可以用下面命令查看site-packages位置:
python - <<'PY'
import site
print(site.getsitepackages())
PY
9. 修复 mjlab CUDA Graph 兼容问题
在 torch==2.11.0+cu128 环境中,torch.cuda.get_driver_version() 不存在,而 mjlab==1.2.0 默认会调用它判断 CUDA Graph 是否可用,因此训练会报错:
AttributeError: module 'torch.cuda' has no attribute 'get_driver_version'
推荐修改 mjlab 安装包里的文件:
/home/liguopu/miniconda3/envs/mjlab/lib/python3.11/site-packages/mjlab/sim/sim.py
找到 _should_use_cuda_graph(),把原来的 PyTorch driver version 获取逻辑:
import torch
driver_ver_int = torch.cuda.get_driver_version()
driver_ver = (driver_ver_int // 1000, (driver_ver_int % 1000) // 10)
改为使用 Warp:
driver_ver = wp.get_cuda_driver_version()
修改后的关键代码应类似:
def _should_use_cuda_graph(self) -> bool:
"""Determine if CUDA graphs can be used based on device and driver version."""
if not self.wp_device.is_cuda:
return False
driver_ver = wp.get_cuda_driver_version()
has_mempool = wp.is_mempool_enabled(self.wp_device)
if driver_ver is None:
print("[WARNING] CUDA Graphs disabled: driver version unavailable")
return False
if has_mempool and driver_ver >= _GRAPH_CAPTURE_MIN_DRIVER:
return True
reasons = []
if not has_mempool:
reasons.append("mempool disabled")
if driver_ver < _GRAPH_CAPTURE_MIN_DRIVER:
reasons.append(f"driver {driver_ver[0]}.{driver_ver[1]} < 12.4")
print(f"[WARNING] CUDA Graphs disabled: {', '.join(reasons)}")
return False
✅ 原因:当前
warp-lang==1.14.0的wp.get_cuda_driver_version()返回类似(12, 9)的tuple,正好能和mjlab后续的_GRAPH_CAPTURE_MIN_DRIVER = (12, 4)比较。
可用下面命令验证:
python - <<'PY'
import warp as wp
wp.init()
print(wp.get_cuda_driver_version())
PY
10. 查看可用任务
python scripts/list_envs.py --keyword AMP
主要任务:
Unitree-G1-AMP-RoughUnitree-G1-AMP-FlatUnitree-H2-AMP-RoughUnitree-H2-AMP-Flat
⭐ 备注:原开源版本只支持
G1,H2相关任务是本博客通过修改代码后新增适配的任务。
💡 临时运行方式:如果不想安装项目,也可以临时把项目根目录加入
Python模块搜索路径(仅当前终端生效):
export PYTHONPATH=/home/liguopu/lgp_dev/project/AMP_mjlab:$PYTHONPATH
python scripts/list_envs.py --keyword AMP
命令写法注意:
python -m scripts.list_envs --keyword AMP
⚠️ 不要写错:
python -m scripts.list_envs.py是错误写法,-m后面应跟模块名,不能带.py后缀。
11. G1 训练
python scripts/train.py Unitree-G1-AMP-Flat --env.scene.num-envs=4096
日志默认保存到:
logs/rsl_rl/g1_amp_locomotion/<time_stamp_run>/
📈 训练曲线说明(对应训练信息)
在约 2w 轮(约 20k iterations)附近,策略通常会突然学会“跌倒后恢复”行为。
✅ 正常现象:对应地,
logs中多个指标可能出现明显突变(阶跃式变化),这是正常现象,不一定是训练异常。
训练过程中终端会持续打印统计信息。下面这一段是 G1 Flat 训练日志示例,用于说明各类指标的含义和正常输出格式:
################################################################################
Learning iteration : 100000/100001
Computation : 53904 steps/s (collection: 1.071s, learning 0.752s)
Mean action noise std : 0.28
Mean value_function loss : 0.0065
Mean surrogate loss : -0.0100
Mean entropy loss : 3.3100
Mean amp loss : 0.3794
Mean amp_grad_pen loss : 0.2058
Mean amp_policy_pred loss : -0.4078
Mean amp_expert_pred loss : 0.4068
Mean skipped_non_finite_batches loss : 0.0000
Mean reward : 41.46
Mean episode length : 995.78
Episode_Reward/track_anchor_linear_velocity : 0.7154
Episode_Reward/track_anchor_angular_velocity: 0.9129
Episode_Reward/track_root_height : 0.0038
Episode_Reward/body_ang_vel_xy_l2 : 0.4666
Episode_Reward/is_terminated : -0.0014
Episode_Reward/joint_acc_l2 : -0.0761
Episode_Reward/joint_pos_limits : -0.0039
Episode_Reward/action_rate_l2 : -0.0616
Episode_Reward/foot_slip : -0.0174
Episode_Reward/self_collisions : -0.0039
Episode_Metrics/mean_action_acc : 0.5422
Episode_Metrics/mean_delay_steps : 0.5537
Metrics/twist/error_vel_xy : 1.5915
Metrics/twist/error_vel_yaw : 1.7172
Episode_Termination/time_out : 5.1667
Episode_Termination/bad_orientation : 0.0000
Episode_Termination/bad_base_height : 0.0417
Metrics/slip_velocity_mean : 0.1289
--------------------------------------------------------------------------------
Total timesteps : 9830498304
Iteration time : 1.82s
Time elapsed : 02:57:11
ETA : 00:00:01
🔍 怎么看这类输出:可以快速观察训练速度、
reward、AMP loss、终止原因、速度误差和剩余时间。比如上面的G1示例中Mean reward: 41.46,Computation: 53904 steps/s,Mean skipped_non_finite_batches loss: 0.0000,说明该阶段训练正在正常推进,且没有跳过非有限数值batch。H2 Flat的实测训练日志单独记录在第 12 节。
12. H2 训练
⚠️ 训练前置条件:
H2训练前需要先准备H2 AMP NPZ数据。可由现有G1 AMP NPZ重定位生成,详见第 14 节。
确认 src/assets/motions/h2/amp/WalkandRun 中已经存在 .npz 后,执行:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/train.py Unitree-H2-AMP-Flat \
--env.scene.num-envs=4096
日志默认保存到:
logs/rsl_rl/h2_amp_locomotion/<time_stamp_run>/
如果要训练 粗糙地形 版本,任务名改为:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/train.py Unitree-H2-AMP-Rough \
--env.scene.num-envs=4096
🧪 H2 最小连通性测试命令:
💡 这里的“冒烟测试”指用最小环境数和最少训练轮数快速跑一遍,不追求训练效果,只验证
H2资产、H2 NPZ数据、任务注册和训练入口是否能正常连通。
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/train.py Unitree-H2-AMP-Flat \
--env.scene.num-envs=1 \
--agent.max-iterations=1
✅ 通过标准:如果能进入
runner并保存model_0.pt,说明H2资产、H2 NPZ和训练入口都已打通。
📊 H2 Flat 实测训练记录
本次 H2 Flat 训练命令:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/train.py Unitree-H2-AMP-Flat \
--env.scene.num-envs=4096
训练末尾输出:
################################################################################
Learning iteration : 100000/100001
Computation : 32648 steps/s (collection: 1.685s, learning 1.326s)
Mean action noise std : 0.26
Mean value_function loss : 0.0067
Mean surrogate loss : -0.0107
Mean entropy loss : -1.8587
Mean amp loss : 0.2792
Mean amp_grad_pen loss : 0.2033
Mean amp_policy_pred loss : -0.5074
Mean amp_expert_pred loss : 0.5010
Mean skipped_non_finite_batches loss : 0.0000
Mean reward : 39.14
Mean episode length : 1000.00
Episode_Reward/track_anchor_linear_velocity : 0.6854
Episode_Reward/track_anchor_angular_velocity: 0.9154
Episode_Reward/track_root_height : 0.0019
Episode_Reward/body_ang_vel_xy_l2 : 0.4594
Episode_Reward/is_terminated : 0.0000
Episode_Reward/joint_acc_l2 : -0.0881
Episode_Reward/joint_pos_limits : -0.0056
Episode_Reward/action_rate_l2 : -0.0622
Episode_Reward/foot_slip : -0.0239
Episode_Reward/self_collisions : -0.0019
Episode_Metrics/mean_action_acc : 0.5028
Episode_Metrics/mean_delay_steps : 0.8181
Metrics/twist/error_vel_xy : 1.6271
Metrics/twist/error_vel_yaw : 2.0770
Episode_Termination/time_out : 4.3333
Episode_Termination/bad_orientation : 0.0000
Episode_Termination/bad_base_height : 0.0000
Metrics/slip_velocity_mean : 0.1238
--------------------------------------------------------------------------------
Total timesteps : 9830498304
Iteration time : 3.01s
Time elapsed : 01:21:54
ETA : 00:00:01
13. 评估与可视化
🚀 说明:训练与回放阶段都支持
ONNX导出(默认开启)。
13.1 通用回放命令
使用已训练权重回放时,需要指定任务名和 checkpoint 文件:
G1 回放命令:
python scripts/play.py Unitree-G1-AMP-Rough \
--checkpoint-file logs/rsl_rl/g1_amp_locomotion/<run_dir>/model_<iter>.pt
H2 回放命令:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-H2-AMP-Flat \
--checkpoint-file logs/rsl_rl/h2_amp_locomotion/<run_dir>/model_<iter>.pt \
--num-envs 1 \
--viewer native
如果评估 H2 粗糙地形版本,任务名改为:
Unitree-H2-AMP-Rough
⚠️ 注意:
G1 checkpoint不能直接用于H2。H2当前策略只控制 29 个非头部关节,头部两个关节保持固定;但H2机器人模型和观测空间仍与G1不同。H2必须使用logs/rsl_rl/h2_amp_locomotion/...下训练得到的checkpoint。
13.2 G1 实践示例
以下示例使用 2026-07-12_11-43-37 这次训练中的 model_23900.pt 进行回放与可视化。
先确认权重文件存在:
find logs/rsl_rl/g1_amp_locomotion -name 'model_23900.pt'
示例输出:
logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/model_23900.pt
13.3 方式一:Viser 浏览器可视化
启动 Viser 可视化回放:
source ~/miniconda3/etc/profile.d/conda.sh && conda activate mjlab
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-G1-AMP-Flat \
--checkpoint-file logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/model_23900.pt \
--num-envs 1 \
--viewer viser
启动成功后,终端会显示类似:
[INFO]: Loading checkpoint: model_23900.pt
[INFO]: Exported ONNX policy to: /home/liguopu/lgp_dev/project/AMP_mjlab/logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/export/Unitree-G1-AMP-Flat_model_23900.onnx
╭────── viser (listening *:8080) ───────╮
│ ╷ │
│ HTTP │ http://localhost:8080 │
│ Websocket │ ws://localhost:8080 │
│ ╵ │
╰───────────────────────────────────────╯
浏览器打开:
http://localhost:8080
💡 端口提示:如果已有其他
Viser进程占用了8080,终端可能显示8081或其他端口,以实际输出为准。
13.4 方式二:native viewer 本地窗口
如果浏览器提示 WebGL unavailable,或者 Viser 页面能连接但画面空白,可以改用 native viewer:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-G1-AMP-Flat \
--checkpoint-file logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/model_36600.pt \
--num-envs 1 \
--viewer native
H2 native viewer 示例:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-H2-AMP-Flat \
--checkpoint-file logs/rsl_rl/h2_amp_locomotion/<run_dir>/model_<iter>.pt \
--num-envs 1 \
--viewer native
示例效果:
native viewer 常用按键:
| 按键 | 作用 |
|---|---|
s |
切换模式,提高帧率 |
= |
加速播放 |
- |
减速播放 |
R |
开关 debug visualization |
P |
开关 reward plots |
Space |
暂停 / 继续 |
Enter |
重置环境 |
, |
切换到上一个环境 |
. |
切换到下一个环境 |
→ |
暂停时单步前进 |

🎮 操作建议:可以先按
R关闭debug visualization,再按P确认reward plots关闭;需要更快播放时按=加速。
13.5 H2 实践示例
本小节使用已经训练完成的 H2 Flat checkpoint 进行回放,主要用于确认 H2 策略是否能正常驱动机器人走、跑以及跌倒恢复。
✅ 示例权重:这里使用的是
logs/rsl_rl/h2_amp_locomotion/2026-07-13_18-59-23/model_100000.pt。如果使用自己的训练结果,请把run_dir和model_<iter>.pt替换为实际路径。
H2 Flat native viewer 回放命令:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-H2-AMP-Flat \
--checkpoint-file logs/rsl_rl/h2_amp_locomotion/2026-07-13_18-59-23/model_100000.pt \
--num-envs 1 \
--viewer native
参数说明:
Unitree-H2-AMP-Flat:使用H2 Flat评估任务--checkpoint-file:指定训练完成后的H2权重文件--num-envs 1:只启动 1 个环境,便于观察单个机器人的动作效果--viewer native:使用 MuJoCo 原生窗口查看回放效果
⚠️ 注意:这里必须使用
h2_amp_locomotion目录下的H2 checkpoint。不要把G1的checkpoint直接拿来回放H2,两者机器人模型和观测空间不同。
走、跑效果:
跌倒、恢复效果:



🎬 观察重点:回放时可以重点看
H2是否能稳定跟踪速度命令、走跑动作是否连续、跌倒后是否能进入恢复动作并重新站起。
13.6 常见问题:rsl_rl 导入路径
如果直接运行 python scripts/play.py ... 时出现下面错误:
ModuleNotFoundError: No module named 'rsl_rl.runners.amp_on_policy_runner'
✅ 原因与处理:通常是因为没有优先导入本仓库自带的
rsl_rl。在命令前加上下面这一段即可:
PYTHONPATH="$PWD:${PYTHONPATH:-}"
完整命令可以写成:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/play.py Unitree-G1-AMP-Flat \
--checkpoint-file logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/model_23900.pt \
--num-envs 1 \
--viewer viser
13.7 ONNX 导出结果
这次实践中导出的 ONNX 文件为:
logs/rsl_rl/g1_amp_locomotion/2026-07-12_11-43-37/export/Unitree-G1-AMP-Flat_model_23900.onnx
14. 运动数据准备
仓库提供 CSV 到 NPZ 的转换脚本:
python scripts/csv_to_npz.py --help
推荐目录组织:
- 原始 CSV:
motion_data_csv/amp - 转换后 NPZ:
src/assets/motions/g1/amp/WalkandRun与src/assets/motions/g1/amp/Recovery - H2 重定位 NPZ:
src/assets/motions/h2/amp/WalkandRun与src/assets/motions/h2/amp/Recovery
✅ 自动加载:只要上述目录中存在可用
NPZ,训练配置会自动加载。
14.1 G1 AMP NPZ 可视化
如果想直接查看 G1 NPZ 动作本身,不需要训练 checkpoint,可以用 MuJoCo 原生窗口播放:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/visualize_g1_npz.py \
--npz-file src/assets/motions/g1/amp/Recovery/fallAndGetUp1_subject1.npz \
--device cuda:0
🎬 播放提示:脚本默认会循环播放,关闭
MuJoCo窗口即可退出。
常用参数:
# 无窗口快速校验前三帧,适合远程或无显示环境
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/visualize_g1_npz.py \
--npz-file src/assets/motions/g1/amp/Recovery/fallAndGetUp1_subject1.npz \
--no-viewer \
--no-loop \
--max-frames 3
# 慢速播放
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/visualize_g1_npz.py \
--npz-file src/assets/motions/g1/amp/Recovery/fallAndGetUp1_subject1.npz \
--speed 0.5
该脚本会读取 G1 NPZ 中的 root 状态、29 维关节位置/速度,并逐帧写入 G1 MuJoCo/mjlab 模型。
14.2 由 G1 AMP NPZ 生成 H2 AMP NPZ
H2 可以直接使用脚本从现有 G1 AMP NPZ 重定位生成:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/retarget_g1_amp_to_h2_npz.py \
--input-root src/assets/motions/g1/amp \
--output-root src/assets/motions/h2/amp \
--device cuda:0
如果使用 CPU:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python scripts/retarget_g1_amp_to_h2_npz.py \
--input-root src/assets/motions/g1/amp \
--output-root src/assets/motions/h2/amp \
--device cpu
当前重定位策略:
- 关节映射:
G1的 29 个同名关节映射到H2的 29 个非头部关节 - 头部关节:
H2的head_pitch_joint与head_yaw_joint保持默认0位姿和0速度 - 数据格式:输出仍然保留
H2 31 DoF数据格式,其中头部两维为默认0;训练策略只控制 29 个非头部关节 - 重新计算 body 状态:脚本会用
H2 MuJoCo/mjlab模型forward,重新生成H2的body_pos_w、body_quat_w、body_lin_vel_w、body_ang_vel_w
生成后可验证:
find src/assets/motions/h2/amp -name '*.npz' | sort | wc -l
检查 shape:
PYTHONPATH="$PWD:${PYTHONPATH:-}" \
python - <<'PY'
import pathlib
import numpy as np
files = sorted(pathlib.Path("src/assets/motions/h2/amp").glob("*/*.npz"))
print("files", len(files))
joint_dims = set()
body_counts = set()
head_max = 0.0
for path in files:
data = np.load(path)
joint_dims.add(data["joint_pos"].shape[-1])
body_counts.add(data["body_pos_w"].shape[1])
head_max = max(head_max, float(abs(data["joint_pos"][:, 15:17]).max()))
print("joint_dims", joint_dims)
print("body_counts", body_counts)
print("head_abs_max", head_max)
PY
期望输出类似:
files 18
joint_dims {31}
body_counts {32}
head_abs_max 0.0
📘 更详细说明见:
H2_NPZ生成指导.md
15. 核心代码——目录说明
- 📁
src/tasks/amp_loco:AMP locomotion/recovery任务实现 - 📁
src/tasks/amp_loco/config/g1:G1任务注册、环境与RL配置 - 📁
src/tasks/amp_loco/config/h2:H2任务注册、环境与RL配置 - 📁
src/tasks/amp_loco/mdp:奖励、观测、事件、终止逻辑 - 🚀
scripts/train.py:训练入口 - 🎬
scripts/play.py:回放入口 - 📊
scripts/csv_to_npz.py:动作数据转换工具 - 👀
scripts/visualize_g1_npz.py:G1 AMP NPZ的MuJoCo原生窗口可视化工具 - 👀
scripts/visualize_h2_npz.py:H2 AMP NPZ的MuJoCo原生窗口可视化工具 - 🔁
scripts/retarget_g1_amp_to_h2_npz.py:G1 AMP NPZ到H2 AMP NPZ的重定位生成工具 - 📘
H2_NPZ生成指导.md:H2 AMP NPZ生成说明 - 🩹
mjlab_patch:依赖的mjlab本地补丁
16. 总结
- ⭐ 单一策略:统一覆盖走跑与跌倒恢复
- 🧠 AMP + 速度任务联合优化:兼顾风格与任务性能
- 🛡️ 延迟重置与 recovery 采样机制:显式强化恢复能力
- 🚀 训练到部署链路完整:支持
ONNX导出
✅ 分享完成~
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)