无锡市网站建设_网站建设公司_MySQL_seo优化
2025/12/31 16:03:28 网站建设 项目流程

RTX 4090 上配置 ManiSkill2 + RDT(Robotics Diffusion Transformer)推理评测环境:完整踩坑与最短可跑通路线

目标是在 RTX 4090nvidia-smi 显示 CUDA 12.2)上跑通 ManiSkill2 仿真环境,并用 RDT(Robotics Diffusion Transformer) 的公开权重在 ManiSkill 基准任务上完成推理评测,导出结果与视频。重点是环境能稳定复现

0. 目标与总体思路

我们要达成的闭环是:

  • ManiSkill2 能创建环境并 step(渲染/物理可用)
  • RDT 代码依赖安装完整(PyTorch)
  • flash-attn 能正常 import(避免编译/ABI 坑)
  • 模型权重与语言 embedding 能下载到本地(网络环境常出问题)
  • eval_sim.eval_rdt_maniskill 能运行并输出成功率(评测闭环)

关键策略:

  1. 只在 conda env 内安装,不要污染 base
  2. flash-attn 尽量用预编译 wheel,避免从源码编译
  3. Hugging Face 下载若被 reset,直接用 镜像 + wget 断点续传

1. 环境准备:创建 conda 环境 + 安装 PyTorch

建议 Python 3.10(RDT 与生态普遍兼容),并用 PyTorch 的 CUDA 12.1 wheel(驱动 12.2 一般能兼容运行)。

conda create -n rdt python=3.10 -y
conda activate rdtpip install -U pip setuptools wheel
pip install "numpy<2" psutil ninja packaging# 安装 torch 2.1 + CUDA 12.1 wheel
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu121

验证:

python -c "import torch, numpy; print('torch', torch.__version__, 'cuda', torch.cuda.is_available()); print('numpy', numpy.__version__)"

2. 安装 RDT 依赖

cd ~/RoboticsDiffusionTransformer
pip install -r requirements.txt

如果 requirements 里包含 flash-attn,建议先不要让它自动编译;下一节我们用预编译 wheel 的方式安装。

3. 安装 flash-attn:避坑要点

3.1 为什么会踩坑?

典型坑包括:

  • NumPy 2.x 与一些 C++/CUDA 扩展不兼容(需 numpy<2
  • flash-attn 新版本可能要求更高 PyTorch(例如 PyTorch>=2.2)
  • 从源码编译时容易遇到编译工具链、CUDA toolkit、缓存跨文件系统等问题

3.2 最稳做法:使用与 torch 2.1 匹配的预编译 wheel

在我的配置里最终稳定组合是:

  • torch==2.1.0+cu121
  • flash-attn==2.5.2
  • wheel 名称带 torch2.1cp310linux_x86_64

安装方式(从本地 wheel 安装):

pip install --no-cache-dir ./flash_attn-2.5.2+cu122torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

验证:

python -c "import flash_attn; print('flash_attn import ok')"
python -c "import torch; import flash_attn; print('torch', torch.__version__, 'cuda', torch.cuda.is_available())"

如果能输出 flash_attn import okcuda True,就说明 flash-attn 的二进制扩展与 torch ABI 匹配。

经验:不要在 base 环境里装 torch/flash-attn;否则很容易把 torch 升级到不匹配版本,导致 undefined symbol 这类 ABI 错误。

4. 安装 ManiSkill2 并进行冒烟测试

安装:

pip install --upgrade mani_skill

最小冒烟测试(确认环境能创建、reset、step):

python - <<'PY'
import gymnasium as gym
env = gym.make("PickCube-v1", obs_mode="rgbd", control_mode="pd_joint_pos")
obs, info = env.reset(seed=0)
for _ in range(5):obs, rew, terminated, truncated, info = env.step(env.action_space.sample())
print("maniskill env ok")
PY

看到 maniskill env ok 说明仿真链路基本没问题。

5. 下载 RDT ManiSkill 权重与 lang_embeds:网络问题的最稳解决

5.1 CLI 下载为何容易失败?

很多服务器网络对 huggingface.co 会出现 TLS 握手被 reset(Connection reset by peer),导致 huggingface-cli/hf/snapshot_download 全部失败。

5.2 最稳方案:使用镜像 + wget 断点续传

这一步是我最终能稳定下载的关键。

在 RDT 仓库下创建目录,然后下载:

cd ~/RoboticsDiffusionTransformer
mkdir -p models/maniskill/rdt models/maniskill/lang_embeds# 1) 大模型权重(断点续传)
wget -c -O models/maniskill/rdt/mp_rank_00_model_states.pt \"https://hf-mirror.com/robotics-diffusion-transformer/maniskill-model/resolve/main/rdt/mp_rank_00_model_states.pt"# 2) 5 个语言 embedding(小文件)
for f in PegInsertionSide PickCube StackCube PlugCharger PushCube; dowget -c -O "models/maniskill/lang_embeds/text_embed_${f}.pt" \"https://hf-mirror.com/robotics-diffusion-transformer/maniskill-model/resolve/main/lang_embeds/text_embed_${f}.pt"
done

下载完成后验收:

ls -lh models/maniskill/rdt/mp_rank_00_model_states.pt
ls -lh models/maniskill/lang_embeds/*.pt | wc -l

应当看到 1 个大权重文件存在,embedding 文件数量为 5。

6. 跑 RDT ManiSkill 推理评测

先看脚本参数(确认是否支持 episode 数、视频输出等):

python -m eval_sim.eval_rdt_maniskill -h

最小运行(先跑通闭环):

python -m eval_sim.eval_rdt_maniskill \--pretrained_path ./models/maniskill/rdt/mp_rank_00_model_states.pt

建议把输出保存到日志文件,便于写报告:

python -m eval_sim.eval_rdt_maniskill \--pretrained_path ./models/maniskill/rdt/mp_rank_00_model_states.pt \| tee outputs/rdt_maniskill_eval.txt

7. 我遇到的典型坑与解决总结

坑 1:flash-attn 安装失败(NumPy 2 / 编译依赖 / wheel 缓存)

  • 解决:固定 numpy<2;优先装与 torch 版本匹配的预编译 wheel;必要时从本地 wheel 安装。

坑 2:误装到 base 环境导致 torch 升级,出现 undefined symbol

  • 解决:只在 conda activate rdt 后装包;随时用 echo $CONDA_DEFAULT_ENVwhich python 自检。

坑 3:Hugging Face 下载被 reset

  • 解决:用 hf-mirror.com 镜像 + wget -c 断点续传,直接下载指定文件路径。

8. 最终可复现的一套命令清单(核心步骤浓缩版)

# 1) env
conda create -n rdt python=3.10 -y
conda activate rdt
pip install -U pip setuptools wheel
pip install "numpy<2" psutil ninja packaging
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu121# 2) RDT deps + flash-attn wheel
cd ~/RoboticsDiffusionTransformer
pip install -r requirements.txt
pip install --no-cache-dir ./flash_attn-2.5.2+cu122torch2.1cxx11abiFALSE-cp310-cp310-linux_x86_64.whl# 3) ManiSkill2
pip install --upgrade mani_skill# 4) download weights via mirror
mkdir -p models/maniskill/rdt models/maniskill/lang_embeds
wget -c -O models/maniskill/rdt/mp_rank_00_model_states.pt \"https://hf-mirror.com/robotics-diffusion-transformer/maniskill-model/resolve/main/rdt/mp_rank_00_model_states.pt"
for f in PegInsertionSide PickCube StackCube PlugCharger PushCube; dowget -c -O "models/maniskill/lang_embeds/text_embed_${f}.pt" \"https://hf-mirror.com/robotics-diffusion-transformer/maniskill-model/resolve/main/lang_embeds/text_embed_${f}.pt"
done# 5) run eval
python -m eval_sim.eval_rdt_maniskill \--pretrained_path ./models/maniskill/rdt/mp_rank_00_model_states.pt

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询