Linux 35.6 + JetPack v5.1.4之编译 pytorch

Linux 35.6 + JetPack v5.1.4之编译 pytorch

  • [1. 源由](#1. 源由)
  • [2. 折腾](#2. 折腾)
  • [3. 构建步骤](#3. 构建步骤)
    • [3.1 下载代码](#3.1 下载代码)
    • [3.2 编译选项](#3.2 编译选项)
    • [3.3 CUDA选项](#3.3 CUDA选项)
    • [3.4 CUDA路径](#3.4 CUDA路径)
    • [3.5 版本控制](#3.5 版本控制)
    • [3.6 编译whl](#3.6 编译whl)
  • [4. 总结](#4. 总结)
  • [5. 参考资料](#5. 参考资料)

1. 源由

目前,有很多科研性质的自动导航的开源代码,例如:

但是这些代码都有一个特性,基于ROS系统的一些组件:

当然逻辑上ROS2系统有对应的组件,但是要做升级就需要解决一些兼容性,以及异常问题的DEBUG。可以做,但是。。。。

从学习、研究、以及短平快项目的国内大体环境下,不会去深入系统性的解决问题,除非有利润,这是企业需要做的事情。

为了工作、学习上的收敛,期望jetson orin平台上能够集成更多的功能,我们暂时将目标对准了支持ROS中间件的Jetpack 5.1.4版本。

因为,该版本基于ubuntu20.04,支持ROS中间件,并且NVIDIA大部分AI算法以及Deepstream的功能都支持,且应该BUG修复的相对完善。

但是,pytorch官方仅支持到到2.1版本,虽然Jetpack5系列并未EOL。而在实际应用过程发现NVIDIA pytorch2.1存在导出onnx问题。

因此,想在Jetpack5系列上支持更新的pytorch版本。

2. 折腾

功夫不负有心人,但要做好徒劳无果的准备,通常都是徒劳无果的情况居多!

3. 构建步骤

3.1 下载代码

bash 复制代码
$ git clone git@github.com:pytorch/pytorch.git
$ git checkout v2.3.1
$ git submodule update --init --recursive

注:大家可以直接从pytorch官方网站获取代码,或参考SnapDragonfly/pytorch。

3.2 编译选项

bash 复制代码
$ export USE_NCCL=0
$ export USE_DISTRIBUTED=0
$ export USE_QNNPACK=0
$ export USE_PYTORCH_QNNPACK=0
$ export USE_PRIORITIZED_TEXT_FOR_LD=1

注:不同的版本,选项可能有所不同,具体根据实际情况调整。

3.3 CUDA选项

bash 复制代码
$ export TORCH_CUDA_ARCH_LIST="8.7"

注:8.7 是jetson orin板子的CUDA版本。

3.4 CUDA路径

bash 复制代码
$ export PATH=/usr/local/cuda/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

注:当前使用的CUDA版本,这里是一个软连接。

3.5 版本控制

bash 复制代码
$ export PYTORCH_BUILD_VERSION=2.3.1
$ export PYTORCH_BUILD_NUMBER=1
$ export L4T_BUILD_VERSION=35.6

注1:PYTORCH_BUILD_VERSION 是对应checkout的pytorch版本。
注2:L4T_BUILD_VERSION 是NVIDIA L4T版本号。

3.6 编译whl

bash 复制代码
$ python3 setup.py bdist_wheel

4. 总结

通过不懈的努力,顺利构建了一下二进制:

注:这里需要注意各自板子当前系统的swap内存大小,笔者看到最大使用到9.2GB。

希望,在不久的将来,能够构建出 2.3.1 / 2.4.1 甚至更高的版本!

5. 参考资料

【1】Linux 35.6 + JetPack v5.1.4@yolo安装

【2】Linux 35.6 + JetPack v5.1.4@python opencv安装

【3】Linux 35.6 + JetPack v5.1.4@DeepStream安装

【4】Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

【5】Linux swap 配置与虚拟内存

相关推荐
小白的码BUG之路6 小时前
linux -- ssh两台机器相连
运维·服务器·ssh
缓慢更新7 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
续写烂尾8 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
不昀8 小时前
网口Link Up后仍然掉线,怎样区分物理链路和数据通路问题?
linux·以太网
迪康妍妍8 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn8 小时前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统
Lhan.zzZ9 小时前
Qt WebEngineView 在 Linux 上无法加载网页:从“看不见 HTML“到“禁用沙箱“
linux·c++·qt
zxcvb1539 小时前
运维经验分享:监控网页更新内容的几种思路
运维
Fcy64810 小时前
Linux下 多路转接select详解
linux·select·多路转接
田里的水稻10 小时前
PyTorch_TensorBoard展示
人工智能·pytorch·python·深度学习·神经网络