从宇树到399美元的Microduck,训练自己的机器宠物已经成了新玩法

AI 摘要 / TL;DR

Microduck 的吸引力不只是 399 美元的机器鸭,而是一套可以被个人开发者复现的开源具身智能训练闭环:用 MuJoCo 做仿真,用云端 GPU 训练强化学习策略,导出 ONNX 后发布到 Hugging Face,再在真实机器人上验证。以 UCloud 优刻得 V100S 32GB 为例,训练一个可用的走路策略通常需要 1 到 2 小时,GPU 成本约 12 到 25 元。真正需要认真判断的,不是“买哪张显卡”,而是训练规模、奖励函数、仿真到真机的差距,以及是否需要长期保存和批量复现实验。

先说结论:如果目标是低成本体验具身智能策略训练,Microduck 是一个很适合个人开发者入门的项目。没有真机,可以先在 MuJoCo 里回放社区策略;没有本地显卡,可以按小时租用 UCloud 优刻得 GPU;训练完成后,导出 ONNX、发布到 Hugging Face,整个流程可以被复现和共享。

但它并不意味着“有一张 GPU 就能稳定得到真机动作”。奖励函数是否合理、并行环境数量是否合适、仿真动作是否稳定,以及真实硬件的摩擦、重心、电池和舵机差异,都会影响最终结果。

一、Microduck 到底是什么,为什么值得玩

2026 年 8 月 27 日,Hugging Face 旗下 Pollen Robotics 开放双足机器鸭 Microduck 预购。它售价 399 美元,高 25 厘米,由 15 个舵机驱动,支持走路、跌倒后自行爬起、踢球和轮滑等动作。开放预购后 24 小时内,订单金额超过 260 万美元;首批售罄后,交付排期延后到圣诞节。

这些信息能说明它有关注度,但 Microduck 真正值得关注的地方不是外形,而是动作生成方式。

它的步态不是通过代码逐帧写死,而是由强化学习训练出的神经网络策略控制。强化学习可以理解为:让智能体在环境中不断尝试,根据奖励信号判断哪些行为更好,最终学会完成目标。在 Microduck 场景里,奖励可以对应前进速度、双脚离地高度、动作平滑度或抗干扰能力。

Pollen Robotics 已经开放 Microduck 的训练框架、仿真模型和预训练策略。开发者可以从 GitHub 获取训练代码,从 Hugging Face 下载模型,也可以把自己训练出的 ONNX 策略发布给社区。

!

二、官方动作只是起点,社区已经在持续扩展能力

Microduck 的出厂动作并不是终点。开源训练框架让社区可以围绕同一套硬件训练不同策略,再通过 Hugging Face 分发模型。这样一来,动作可以按照“训练—仿真验证—社区发布—真机运行”的路径持续迭代。

截至发稿,Hugging Face 上已有 30 多位社区成员发布 Microduck 动作策略,覆盖跑步、跳跃、单腿站立、地面捡物、踢球、前滚翻、鞠躬、太空步和旋转等方向。

2.1 代表性社区动作

动作贡献者/来源已知结果可追溯来源
跑步HannesVonEssen最高 1.65 m/s;512 个并行环境压测存活率 98.8%Hugging Face:HannesVonEssen/microduck-running
开心跳跃joanfox已被 Pollen Robotics 在真实硬件上测试成功Hugging Face:joanfox/microduck-happy-hop
火烈鸟单腿RemiFabre单腿站立平衡Hugging Face 社区策略合集
踢球官方策略左脚踢、右脚踢两种策略pollen-robotics/microduck-policies
前滚翻官方策略完整前滚翻动作pollen-robotics/microduck-policies
太空步fffiloni向后滑步动作Hugging Face 社区策略合集

microduck跑步1.65m/s

!

microduck跳跃-仿真

!

microduck跳跃-真机

这些策略说明了一件事:硬件不变,策略网络可以持续改变机器鸭的动作能力。对于开发者来说,Microduck 更像一个可共享的具身智能实验平台,而不只是一台固定功能的消费级机器人。

三、没有机器鸭,也可以先回放社区动作

不需要先买真机,也不需要本地 GPU。只要电脑能够安装 Python 环境,就可以在 MuJoCo 仿真器中回放社区策略。

MuJoCo 是常用于机器人与物理控制研究的仿真引擎,适合观察策略在物理环境中的动作表现。仿真不能替代真机测试,但可以先筛掉明显失效的策略,降低硬件试错成本。

3.1 安装环境并回放跑步策略

# 装环境(只需一次)
curl -LsSf https://astral.sh/uv/install.sh | sh && source ~/.zshrc
git clone https://github.com/pollen-robotics/microduck_rl && cd microduck_rl
export UV_HTTP_TIMEOUT=600 && uv sync

# 下载社区跑步策略并回放
uv run hf download HannesVonEssen/microduck-running policy.onnx --local-dir policies/running
.venv/bin/mjpython scripts/infer_policy.py --walking policies/running/policy.onnx --new-cmd-obs

macOS 必须使用 .venv/bin/mjpython 启动仿真器,不能使用 uv run。官方策略合集中的文件名通常是 alpha_walking.onnx,社区模型常见文件名是 policy.onnx

跳跃策略和官方走路策略的流程基本相同:下载 ONNX 文件,再用 infer_policy.py 回放即可。ONNX 是开放神经网络交换格式,便于在不同训练框架、推理环境和机器人运行时之间复用同一份策略文件。

四、训练新动作,核心不是“堆显卡”,而是设计奖励函数

跑步和跳跃不是官方预设玩法的全部。社区开发者通过调整训练参数,定义“什么行为值得奖励”,就能让 Microduck 学出新动作。

例如:

  • 走路任务可以奖励前进速度;
  • 跳跃任务可以奖励双脚离地高度;
  • 跑步任务可以提高目标速度;
  • 动作平滑度可以减少暴力抖动;
  • 随机推力、重心偏移和初始倾斜可以提高抗干扰能力。

这里的鲁棒性训练,是指在训练阶段主动加入扰动,让策略在真实硬件上更不容易失效。

Microduck 训练通常会同时运行 4096 个并行环境。并行环境越多,单位时间内获得的训练样本越多,但显存占用也越高。如果购买本地 RTX 40 系显卡,不仅硬件投入较高,还可能遇到驱动、CUDA、散热和显卡供货问题。

对个人开发者来说,云端 GPU 更适合一次性训练、参数试错和短期实验。需要长期稳定运行、反复调参或多人共享时,再考虑固定硬件或集群化方案。

五、为什么我会优先考虑 UCloud GPU

选择云端 GPU,主要看四件事:显存是否够用、环境是否容易启动、计费是否适合短任务,以及训练结束后能否及时释放资源。

UCloud 优刻得 GPU 云服务器适合按小时启动训练任务。选择预装驱动的镜像后,不需要购买显卡,也不需要手工处理完整的 CUDA 安装流程,开机后即可进入训练环境,用完释放实例即可停止主要 GPU 计费。

5.1 创建 GPU 实例

登录 UCloud 控制台,进入云主机并创建 GPU 云主机。以入门动作训练为目标,可以选择 V 系列中的 V100S,配置为 1 颗 GPU、10 核 CPU、32GB 内存。

V100S 32GB 提供 32GB 显存、1.13TB/s 显存带宽、5120 个 CUDA Core、640 个 Tensor Core 和 130 TFlops FP16 Tensor 算力。对于 Microduck 的 4096 并行环境训练,这一配置可以用于入门策略训练,且时租成本相对较低。

地域可以选择华东上海 2 可用区 A。操作系统选择预装驱动的 Ubuntu 20.04 64 位,集成软件显示 nvidia 550.90.12 与 CUDA 12.4。系统盘使用 40GB SSD 通常够用,但建议至少保留 20GB 可用空间,因为训练依赖包约占 8GB。

!

UCloud镜像选择

网络使用默认配置,并绑定一个 EIP。BGP 线路、5M 带宽通常足够 SSH 连接。登录方式选择密码登录,用户名为 ubuntu。计费方式选择按时付费,V100S 参考价格为 12.18 元/小时。

ssh ubuntu@<你的公网IP>

# 确认 GPU 可用
nvidia-smi

如果能够看到 V100、32GB 显存和 CUDA 12.4,说明基础训练环境已经就绪。若系统盘空间不足,可以先清理不需要的预装软件,例如 conda 和 jupyter。

5.2 GPU 选型怎么判断

需求推荐卡型理由
训练单个动作策略V100S 32GB时租低,FP16 130 TFlops 足够跑 4096 并行环境
更快迭代、同时调多组参数RTX 40 系 / 30 系FP16 算力约 330 TFlops,约为 V100S 的 2.5 倍;显存 24GB
更大规模仿真、多任务并行训练A800 / H800 80GB 或同级国产算力卡80GB 大显存,支持 800Gbps 高速网络、GPUDirect RDMA、RoCE 和 InfiniBand,可扩展到多卡集群

如果计划长期训练并积累大量 checkpoint,可以挂载 UCloud 高性能存储 UPFS。UPFS 读写吞吐可到百 GB/s,延迟低至微秒,并支持 GDS(GPUDirect Storage)。多人协作时,可以使用 UCloud 容器服务 UK8S 纳管 GPU 云主机,把环境封装为容器镜像后复用。

对于第一次训练,我不建议直接上多卡或大规格集群。先确认单个动作能否训练成功,再根据训练时间、并行任务数量和 checkpoint 管理需求升级配置,通常更容易控制成本。

六、从零训练第一个走路策略

开始前建议准备两个账号:

  1. Hugging Face 账号:在 Settings 的 Access Tokens 中创建 Write 权限 token,用于发布动作策略。
  2. wandb 账号:在 Settings 中获取 API Key,用于查看 reward 曲线。不需要在线曲线时,可以使用离线模式训练。

6.1 安装训练环境

# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc

# 安装 Python 3.12
uv python install 3.12

# 克隆官方训练仓库并安装依赖
git clone https://github.com/pollen-robotics/microduck_rl
cd microduck_rl

# 首次会下载约 7-8GB,主要是 NVIDIA CUDA wheels
export UV_HTTP_TIMEOUT=600
uv sync

uv sync 通常需要 10 到 15 分钟,具体取决于网络速度。依赖安装完成且没有报错后,训练环境就绪。

wandbhuggingface_hub 已包含在项目依赖中,不需要单独安装。需要在线查看曲线时,运行 uv run wandb login 并粘贴 API Key;需要发布模型时,运行 uv run hf auth login 并粘贴 Hugging Face token。

6.2 开始训练走路策略

先训练官方默认走路任务,不需要修改参数。

# 方式 1:离线模式,不需要 wandb 账号
WANDB_MODE=offline uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096

# 方式 2:在线模式,需要先 wandb login,可在网页端看曲线
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096

训练启动后,终端会持续输出迭代次数、reward 值和 GPU 利用率。通常可以观察到 reward 逐渐上涨并趋于平稳;使用 wandb 在线模式时,也可以在网页端查看曲线。

走路策略通常需要 1 到 2 小时才能得到可用步态。如果 4096 个并行环境触发显存不足,按下面的顺序降低环境数:

# 显存不够就降到 2048
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 2048

# 还不够就继续降到 1024
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 1024

环境数降低后,训练速度可能变慢,但更容易在显存限制内完成训练。

6.3 导出 ONNX 并在仿真器验证

训练完成后,把策略导出为 ONNX 格式。使用 wandb 在线模式时,从 wandb 找到 run path,格式为 用户名/项目名/run_id

uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck \
  --wandb-run-path <你的wandb用户名>/<项目名>/<run_id>

离线模式训练时,使用本地 checkpoint 导出,参数为 --checkpoint-file <checkpoint路径>。导出完成后,当前目录会生成 output.onnx

仿真验证主要占用 CPU,不占 GPU。因此,策略导出后可以先释放 GPU 实例,降低成本。

# GPU 服务器是 Linux 系统,直接用 uv run
uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs

# 本地 macOS 回放需要用 mjpython
# .venv/bin/mjpython scripts/infer_policy.py --walking output.onnx

需要保存观测数据时,加上 --record 参数:

uv run scripts/infer_policy.py --walking output.onnx --new-cmd-obs --record recording.pkl

验证时不要只看“机器人有没有动”。至少要观察动作是否达到目标、是否频繁摔倒、速度是否稳定、关节是否出现异常抖动,以及 reward 曲线是否存在异常波动。

6.4 发布动作到 Hugging Face Hub

训练出满意效果后,可以用一行命令发布策略:

uv run publish --onnx output.onnx \
  --repo <你的HF用户名>/microduck-walk \
  --kind perpetual \
  --slot walk \
  --description 'My first microduck walking policy'

发布后,其他用户可以下载并回放你的策略:

uv run hf download <你的HF用户名>/microduck-walk policy.onnx --local-dir policies/my-walk
uv run scripts/infer_policy.py --walking policies/my-walk/policy.onnx --new-cmd-obs

真机到手后,可以使用下面两条命令加载并执行动作:

sudo robotctl policy load walk <你的HF用户名>/microduck-walk
robotctl robot do walk

七、进阶:通过改参数训练跑步动作

跑通官方走路策略后,可以进一步修改训练参数。社区跑步策略的思路,是提高目标速度、增加前进奖励,同时加入随机推力、重心偏移和初始倾斜等鲁棒性扰动。

官方走路策略的速度命令范围是 -0.4 到 0.4 m/s。HannesVonEssen 的跑步策略将目标速度范围提高到 2.2 m/s,同时加入随机推力、重心偏移和初始倾斜,让机器鸭从慢走转向跑步。

跑步策略使用社区扩展仓库 microduck-playground,它基于官方训练框架增加跑步任务配置,不需要改动核心代码,可以通过环境变量配置参数。

git clone https://github.com/Vottivott/microduck-playground.git
cd microduck-playground
export UV_HTTP_TIMEOUT=600
uv sync

MICRODUCK_RUNNING_TARGET_MAX_SPEED=2.2 \
MICRODUCK_RUNNING_SPEED_CAP=2.4 \
MICRODUCK_RUNNING_FORWARD_PROGRESS_WEIGHT=5.0 \
MICRODUCK_RUNNING_ROBUST_PUSH_MPS=0.10 \
MICRODUCK_RUNNING_ROBUST_TRUNK_COM_M=0.008 \
MICRODUCK_RUNNING_ROBUST_HEAD_COM_M=0.006 \
MICRODUCK_RUNNING_ROBUST_INITIAL_TILT_DEG=2.0 \
WANDB_MODE=offline uv run train Mjlab-Running-Flat-MicroDuck --env.scene.num-envs 4096

7.1 关键参数解释

参数含义示例值
MICRODUCK_RUNNING_TARGET_MAX_SPEED目标速度上限2.2 m/s
MICRODUCK_RUNNING_SPEED_CAP允许速度上限2.4 m/s
MICRODUCK_RUNNING_FORWARD_PROGRESS_WEIGHT前进奖励权重5.0
MICRODUCK_RUNNING_ACTION_RATE_WEIGHT动作平滑度惩罚,避免暴力抖动-0.10
MICRODUCK_RUNNING_ROBUST_PUSH_MPS随机推力强度0.10
MICRODUCK_RUNNING_ROBUST_TRUNK_COM_M躯干重心偏移0.008 m
MICRODUCK_RUNNING_ROBUST_HEAD_COM_M头部重心偏移0.006 m
MICRODUCK_RUNNING_ROBUST_INITIAL_TILT_DEG初始倾斜角度2.0°

跑步比走路更难训练。社区跑步策略从零训练 12,195 个 iteration,约 9 小时,最终得到 1.65 m/s 的稳定跑步效果。导出、仿真验证和发布流程与走路策略相同。

八、成本怎么估算:单个走路动作约十几到二十几元

以 UCloud V100S 按时付费为例:

项目费用或资源
UCloud V100S GPU 按时付费12.18 元/小时
训练一个走路策略约 1 到 2 小时
训练总成本约 12 到 25 元
EIP 带宽 5M约 0.06 元/小时
导出和仿真验证不占 GPU,可提前释放实例

这里的成本只适用于给定配置和训练时长下的参考估算,不应理解为固定报价。实际费用还会受到地域、实例状态、网络、存储、训练失败重试和参数调整次数影响。

训练完成后应及时释放 GPU 实例。按时付费实例只要保持运行状态,就会持续计费。

九、不同方案怎么选

方案优点不足适合人群
本地 GPU环境长期保留,反复实验方便前期硬件投入高,需要自行处理驱动、CUDA、散热和维护长期研究、持续训练、已有显卡的开发者
UCloud 单卡 GPU按小时付费,启动快,不必购买显卡,适合短期试错长时间运行会累积费用,需要管理实例和数据个人开发者、课程实验、单个策略训练
多卡 GPU 集群适合大规模仿真、多任务并行和批量调参配置和使用复杂度更高,成本也更高研究团队、企业研发和长期项目
仅使用 MuJoCo 仿真无需真机,验证成本低无法完全覆盖真实硬件差异入门体验、策略筛选和前期调试

如果只是想验证一个动作创意,先用本地 CPU 或云端 GPU 回放社区策略;如果需要训练单个动作,V100S 32GB 是较平衡的起点;如果需要同时调多组参数,可以考虑 RTX 40 系或 30 系;如果涉及更大规模仿真、多任务训练或多卡协作,再考虑 A800、H800 80GB 或同级算力卡。

十、适合和不适合哪些场景

适合

  • 想了解强化学习和具身智能,但不想先购买高价本地 GPU;
  • 希望在 MuJoCo 中复现社区动作;
  • 需要训练走路、跑步、跳跃等单个动作策略;
  • 想把训练得到的 ONNX 模型发布到 Hugging Face 与他人共享;
  • 需要短时间完成一次训练或参数试错;
  • 希望把流程迁移到机器人、无人机或机械臂等其他具身智能项目。

不适合

  • 需要仿真结果直接等同于真机效果;
  • 没有时间调试奖励函数、环境参数和训练依赖;
  • 需要开机即用、完全不涉及开发环境的消费体验;
  • 计划长时间运行大量实验,却没有做好存储、版本和实例成本管理;
  • 直接在真机上尝试高冲击的跑步、跳跃和翻滚动作。

十一、训练闭环里最容易被忽略的风险

云端 GPU 能解决算力和环境部署问题,但不能替代算法设计与硬件验证。

奖励函数设计不合理时,策略可能学会投机动作,例如只追求速度而忽略稳定性;仿真中看起来稳定的动作,也可能因为真实硬件的摩擦、重心、电池电量和舵机差异而表现下降。

建议至少设置三个验证点:

  1. MuJoCo 验证:确认动作是否达到目标,是否频繁摔倒或出现异常抖动;
  2. 训练曲线验证:检查 reward 是否稳定,而不是短暂升高后异常波动;
  3. 真机小步验证:真机到手后,从低速度、小幅度、低冲击动作开始测试。

跑步、跳跃和翻滚对硬件冲击更大,应优先在仿真器中充分验证,再逐步增加真机动作强度。

十二、Microduck 之外,这套工作流还能迁移什么

Microduck 的流程可以迁移到机器人、无人机和机械臂等具身智能场景。共同模式通常是:

  1. 在仿真器中构建任务和物理环境;
  2. 用强化学习训练控制策略;
  3. 导出为 ONNX 等可复用格式;
  4. 在仿真器中回放和筛选;
  5. 部署到真实设备;
  6. 根据真机反馈继续调整奖励函数和训练参数。

UCloud GPU 产品线覆盖单卡云主机、多卡集群、高性能存储 UPFS 和容器平台 UK8S。对个人开发者,单卡 GPU 适合低成本试错;对团队,多卡集群、800Gbps 高速网络、GPUDirect RDMA、RoCE、InfiniBand 和容器化环境更适合大规模仿真、多任务训练与协作复用。

Microduck 的意义不只是购买一只 399 美元的机器鸭,而是把具身智能训练拆成了一条个人开发者也能参与的路径:一个动作想法、一台云端 GPU 服务器和一套开源工具,就可以完成从训练、仿真到社区发布的完整闭环。

FAQ

Q1:没有 Microduck 真机可以玩吗?

可以。开发者可以先下载社区策略,在 MuJoCo 仿真器中回放动作。真机主要用于最后的硬件验证。

Q2:训练 Microduck 一定要本地 GPU 吗?

不一定。可以使用 UCloud 优刻得 GPU 云服务器按小时训练。训练完成后,导出和仿真验证阶段不占 GPU,可以释放实例以降低成本。

Q3:为什么推荐 V100S 32GB?

V100S 32GB 的显存和 FP16 算力足够完成 Microduck 入门动作训练,且按时付费成本相对较低,适合个人开发者训练单个策略。

Q4:4096 个并行环境跑不起来怎么办?

如果出现 OOM,可以把并行环境数降到 2048 或 1024。环境数降低后,训练速度可能变慢,但更容易在显存限制内完成训练。

Q5:训练出的动作能发布给别人用吗?

可以。将策略导出为 ONNX 后,可以发布到 Hugging Face Hub。其他用户可以下载 policy.onnx,并在仿真器或真机上加载。

Q6:仿真成功是否等于真机一定成功?

不等于。仿真到真机存在 sim-to-real 差距,真实硬件的摩擦、重心、电池状态和舵机误差都会影响动作效果。跳跃、跑步和翻滚动作尤其需要谨慎验证。

相关链接