jetson 是arm架构,安装很多库的时候使用预编译的包容易出现不兼容的问题

所以很多时候需要编译安装

记录以下自己编译安装pytorch的过程

查看jectpack版本匹配的pytorch版本

https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform-release-notes/pytorch-jetson-rel.html

jetpack6.1 安装pytorch v2.6.0  torchvision v0.21.0 triton v3.0.0

 完全卸载:


conda activate lerobot
pip uninstall -y torch torchvision torchaudio triton

 清理:

cd pytorch

git clean -xdf  # 删除所有未跟踪的文件和目录(包括build目录)
git checkout -- .  # 重置所有已修改的跟踪文件

pip cache purge

rm -rf ~/.cache/pip ~/.cache/torch ~/.cmake ~/.nv

下载源码编译:

Starting from 24.06 release, cusparselt support has been enabled for Jetson Platform

# 下载并安装cuSPARSELt库
wget https://developer.download.nvidia.com/compute/cusparselt/0.7.1/local_installers/cusparselt-local-tegra-repo-ubuntu2204-0.7.1_1.0-1_arm64.deb
sudo dpkg -i cusparselt-local-tegra-repo-ubuntu2204-0.7.1_1.0-1_arm64.deb
sudo cp /var/cusparselt-local-tegra-repo-ubuntu2204-0.7.1/cusparselt-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install libcusparselt0 libcusparselt-dev


cd /tmp
git clone --recursive --branch v2.6.0 https://github.com/pytorch/pytorch.git
cd pytorch

git submodule sync
git submodule update --init --recursive

安装依赖

pip3 install -r requirements.txt

编译方案一:

export CMAKE_POLICY_VERSION_MINIMUM=3.5

export USE_TRITON=1

MAX_JOBS=2 python3 setup.py build

编译方案二:

rm -rf build
mkdir build && cd build 

CMake命令进行配置:

cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DUSE_CUDA=ON \
    -DUSE_SYSTEM_NCCL=ON \ 
    -DNCCL_ROOT=/usr/local/nccl/build
    -DCMAKE_INSTALL_PREFIX:PATH=$HOME/.local \  
    -DPYTHON_EXECUTABLE:FILEPATH=`which python3` \
    -DCMAKE_CUDA_ARCHITECTURES="87"

jetson agx orin 算力8.7应该写87

-DCMAKE_CUDA_ARCHITECTURES="87"

使用cuda

-DUSE_CUDA=ON \

-DCMAKE_INSTALL_PREFIX:PATH=$HOME/.local \  

全局使用可以写$HOME/.local

当前conda 虚拟环境使用写$CONDA_PREFIX

注意每一行\后面不要有空格

nccl和triton都需要在编译安装pytorch之前安装

执行编译:
make -j$(nproc)

编译(Build):将人类可读的源代码,转换为计算机可执行的二进制文件(库、可执行文件)。
执行安装:
make install

安装(Install):将编译好的成品文件,复制到系统预定的或你指定的安装目录中,使其可被使用。

安装 Python 包(关键步骤):

切换到 PyTorch 源码根目录

cd ..

python setup.py install
# 或者使用 pip 方式(更推荐):
# pip install -e .

验证安装 关闭当前终端 再打开一个终端
python3 -c "
import torch
print('PyTorch版本:', torch.__version__)
print('CUDA是否可用:', torch.cuda.is_available())
if torch.cuda.is_available():
    print('GPU设备名称:', torch.cuda.get_device_name(0))
    print('CUDA版本:', torch.version.cuda)

编译安装torchvision

git clone --branch v0.21.0 https://github.com/pytorch/vision.git
cd vision
# 编译并安装

python3 setup.py install
或者pip install . -v

验证

python3 -c "import torchvision; print('torchvision版本:', torchvision.__version__)"

如果报错查看连接的torch路经是否正确

ldd /home/**/vision/build/lib.linux-aarch64-cpython-310/torchvision/_C.so | grep torch

输出如果不是想使用的torch路经可以设置一下环境变量

# 设置环境变量,关键是将你的torch库路径放在最前面,可以加到~/.bashrc文件中
export LIBRARY_PATH=/home/**/miniconda3/envs/lerobot/lib/python3.10/site-packages/torch/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/**/miniconda3/envs/lerobot/lib/python3.10/site-packages/torch/lib:$LD_LIBRARY_PATH
# 彻底清理上次的编译(重要!)
pip uninstall -y torchvision
rm -rf build torchvision.egg-info
python setup.py clean --all
# 重新编译安装,务必使用--no-deps防止pip下载torch
pip install --no-deps . -v

安装triton:

编译并安装 Triton 编译器 (按需)
git clone https://github.com/triton-lang/triton.git
cd triton
# 建议切换到与PyTorch 2.6.0兼容的稳定分支,例如 `v3.0.0`
git checkout v3.0.0
cd python
pip install -e . -v

验证安装:


python -c "import torch; print('PyTorch版本:', torch.__version__, 'CUDA可用:', torch.cuda.is_available())"
python -c "import torchvision; print('TorchVision版本:', torchvision.__version__)"
python -c "import triton; print('Triton编译器版本:', triton.__version__)"
python -c "import torch; print('PyTorch内建Triton支持:', torch._C._has_triton())"

-----------

CMake Error at /home/**/miniconda3/envs/lerobot/lib/python3.10/site-packages/cmake/data/share/cmake-4.1/Modules/ExternalProject/shared_internal_commands.cmake:1308 (message):
  No download info given for 'nccl_external' and its source directory:

   /home/**/code/lerobot/pytorch/third_party/nccl

报错处理:

报nccl的错

从源码编译 NCCL
cd /usr/local
1. git clone https://github.com/NVIDIA/nccl.git
2. cd nccl
3. make -j$(nproc) src.build CUDA_HOME=/usr/local/cuda-12.6
sudo make PREFIX=/usr/local install
4. 编译后,库文件在 build/lib,头文件在 build/include
/usr/local/nccl/build/lib/libnccl.so.2.29.2
/usr/local/nccl/build/include/nccl.h

--------------------

执行编译:
make -j$(nproc)的时候如果最后输出有其他虚拟环境的路经可能是环境变量污染

可以关闭当前终端,重新打开一个终端,进入虚拟环境 

执行

# 临时清空可能引起污染的变量(仅影响当前终端会话)
unset LD_LIBRARY_PATH
unset PYTHONPATH

再重新执行

rm -rf build
mkdir build && cd build

执行你的 CMake 配置命令

----------------

CMake Error: Error: generator : Ninja

Does not match the generator used previously: Unix Makefiles

执行pip install -e . 时出现以上报错

cd build

rm -f CMakeCache.txt

cd ..

python setup.py develop

设置 ARM + CUDA 链接器优化

export USE_PRIORITIZED_TEXT_FOR_LD=1 

可以将这行命令添加到 ~/.bashrc 中使其永久生效

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐