Jetson Xavier NX (ARM) 使用 PyTorch 安装 Open3D-ML 指南

由于 Jetson 为 ARM64 (aarch64) 的系统架构,所以不能用 pip install 直接安装,需要通过源码编译。

升级系统 JetPack

由于 Open3D-ML 目前只支持 CUDA 10.0 以及 CUDA 11.*,并且 JetPack 的 CUDA 开发环境只有10.2、11.4以及12.2,所以我们只能选择 CUDA 11.4 进行安装。

使用 jtop命令查看 JetPack 版本。如果 Jetson 系统的 JetPack 低于 5.1.2 则需要通过 SDK Manager 升级到 JetPack 5.1.2。

如果你的系统已经是 JetPack 5.1.2 那我也推荐你通过 SDK Manager 重新安装一遍,排除难以发现的错误。

详细指南参考文章Jetson Xavier NX 升级或重新安装 JetPack 指南

安装 PyTorch

安装教程参考文章Jetson Xavier NX 安装 CUDA 支持的 Pytorch 指南

注意,PyTorch 的 CUDA 支持版本需要和 Open3D-ML 的一致,同为 CUDA 11.4。否则与最后安装 Open3D-ML 的时候会报错:

下载源码

下载 Open3D 源码

如果你之前下载过则不需要再下载:

复制代码
git clone https://github.com/isl-org/Open3D.git

下载 Open3D-ML 源码

复制代码
git clone https://github.com/isl-org/Open3D-ML.git

前提准备

安装依赖:

复制代码
cd Open3D
bash util/install_deps_ubuntu.sh
复制代码
pip install yapf

重新链接 6.0.29 的 libstdc++.so,否则会出现undefined reference to 'std::__throw_bad_array_new_Length()@GLIBCXX_3.4.29'的错误。

复制代码
ln -sf /usr/local/lib64/libstdc++.so.6.0.29 /lib/aarch64-linux-gnu/libstdc++.so.6

编译安装

国际惯例,先创建一个 build 文件夹。

复制代码
mkdir build
cd build
复制代码
sudo cmake \
-DBUILD_CUDA_MODULE=ON \
-DBUILD_PYTORCH_OPS=ON \
-DBUILD_TENSORFLOW_OPS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DGLIBCXX_USE_CXX11_ABI=ON \
-DBUILD_PYTHON_MODULE=ON \
-DBUNDLE_OPEN3D_ML=ON \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DPython3_EXECUTABLE=/path/to/python \
-DOPEN3D_ML_ROOT=../../Open3D-ML \
..

-DBUILD_PYTORCH_OPS-DBUILD_TENSORFLOW_OPS分别为构建 PyTorch 版和构建 Tensorflow 版选项,两个选择可以同时为ON,本指南只构建 PyTorch。

-DBUILD_EXAMPLES表示是否构建官方示例,这里设置OFF不构建,可以缩短构建时间。

如果没有使用 Python 虚拟环境,则不需要-DPython3_EXECUTABLE;如果使用了 Python 虚拟环境,需要改成虚拟环境的 Python 的路径,使用which python查看路径。

-DOPEN3D_ML_ROOT为刚刚下载的 Open-ML 的源代码路径。

编译:

复制代码
make -j$(nproc)

编译过程需要数个小时的时间。

编译完毕后需要添加一个环境变量:

复制代码
vim ~/.zsh #或者 ~/.bashrc

在文件末尾添加一行:

复制代码
export LD_PRELOAD=/usr/local/lib/libOpen3D.so

安装 Open3D C++ 库:

复制代码
make install

安装 Open3D 与 Open3D-ML Python 库:

复制代码
make install-pip-package -j$(nproc)

错误解决

undefined reference to '***' @GLIBCXX_3.4.29

这个错误问题出在系统的 libstdc++ 版本不够高。尝试使用strings /lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX命令查看 libstdc++ 是否支持 GLIBCXX_3.4.29,如果缺少 GLIBCXX_3.4.29 则请尝试软链接 libstdc++.so.6 到正确版本。

复制代码
ln -sf /usr/local/lib64/libstdc++.so.6.0.29 /lib/aarch64-linux-gnu/libstdc++.so.6

如果提示找不到 libstdc++.so.6.0.29 文件,则请升级 libstdc++ 库。

CMAKE_CUDA_ARCHITECTURES now detected for NVCC

检查系统默认 CUDA 版本是否存在 nvcc 二进制文件。

复制代码
sudo stat /usr/local/cuda/bin/nvcc

若提示不存在文件,则 CUDA 开发环境已经损坏,需要重新安装 JetPack。详细参考文章 Jetson Xavier NX 升级或重新安装 JetPack 指南

/lib/Release/libOpen3D.so: cannot allocate memory in static TLS block

复制代码
vim ~/.zsh #或者 ~/.bashrc

在文件末尾添加一行:

复制代码
export LD_PRELOAD=/usr/local/lib/libOpen3D.so

ModuleNotFoundError: No module named 'jupyter_packaging'

复制代码
pip install jupyter-packaging

ModuleNotFoundError: No module named 'ipywidgets'

复制代码
pip install ipywidgets

Open3D was built with CUDA 11.4 but PyTorch was built with CUDA 10.2

这个警告表示,PyTorch 的 CUDA 版本和 Open3D-ML 的 CUDA 版本不一致。需要使用与 Open3D-ML 一致的 CUDA 版本重新构建安装 PyTorch。详细请参考文章Jetson Xavier NX 安装 CUDA 支持的 Pytorch 指南

测试验证

复制代码
python3 -c "import open3d.ml.torch"

若无任何输出,则表示安装成功。

相关推荐
Justin3go5 分钟前
AI 引荐流量报告:哪些独立产品正在从 ChatGPT 获客?
人工智能·seo
风流 少年19 分钟前
Spring AI 2.0:SSE
java·人工智能·spring
深小乐40 分钟前
AI 项目上线:折腾 Cloudflare,真香也藏不少坑
人工智能
ACP广源盛139246256731 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
冬奇Lab2 小时前
开源项目第190期:claude-video — 给 Claude 装上「眼睛」看视频,一条命令分析 YouTube/Loom/本地视频
人工智能·开源·claude
七牛开发者2 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
dear_bi_MyOnly2 小时前
AI人工智能分类识别——机器如何学习
人工智能·学习·分类
冬奇Lab2 小时前
Code Agent 解剖(04):系统提示词是怎么组装的,agent 的「人格」从哪来?
人工智能·开源·agent
河南凹凸环境艺术设计3 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python