3 minute read

这些文档主要围绕着在 NVIDIA Jetson AGX Orin 开发者套件上部署 多模态大型语言模型 (LLMs) 所面临的 系统升级挑战。核心问题在于,当前系统的 JetPack、Ubuntu、CUDA 和 GPU 驱动版本 过低,无法满足 vLLM 和 Ollama 等主流推理框架对 更高 CUDA 和驱动版本 的要求。文章详细阐述了 升级至 JetPack 6.0 是解决兼容性问题的关键,但这将强制要求 将 Ubuntu 升级到 22.04,从而导致 需要重装系统可能与 ROS1 产生兼容性问题 等一系列复杂挑战。此外,文档还探讨了 替代推理引擎和云端推理 等备选方案,但最终建议进行 系统全面升级 以实现长期兼容性和性能优化。

系统信息

  • 硬件环境:ARM64 架构,具体为 NVIDIA Jetson AGX Orin 开发者套件。

当前系统配置

  • 软件环境
    • Ubuntu版本:20.04
    • GPU驱动版本:515
    • JetPack版本:5.1.4
    • CUDA版本:11.4
    • Python版本:3.8
    • 机器人操作系统:ROS1(Robot Operating System 1)

系统升级需求

  • Ubuntu版本:22.04
  • GPU驱动版本:535
  • JetPack版本:>=6.0
  • CUDA版本:>=12.2
  • Python版本: 3.9 - 3.12

  • 硬件环境: ARM64 架构,具体为 NVIDIA Jetson AGX Orin 开发者套件。
  • 当前系统配置:
    • JetPack版本:5.1.4
    • Ubuntu版本:20.04
    • CUDA版本:11.4
  • 核心问题: vLLM和Ollama这两个主流的多模态大模型推理框架对CUDA和驱动版本有更高要求,而现有系统配置无法满足。
  • 具体软件版本要求:
    • vLLM: 至少需要CUDA 11.8。
    • Ollama: 需要Nvidia GPU计算能力5.0+,驱动版本531及更新。
  • JetPack与CUDA/驱动的关系:
    • JetPack 5.x系列(如5.1.4)通常包含CUDA 11.4,驱动版本约为515。
    • JetPack 6.0及以上版本支持CUDA 12.x,驱动版本535+。
  • 系统升级困境: 升级到JetPack 6.0是满足CUDA和驱动要求的关键,但JetPack 6.0强制要求Ubuntu 22.04,这意味着需要重装系统。
  • 其他问题:
    • 磁盘空间不足。
    • 机器人电池续航短(2小时),模型编译时间长,需要考虑临时外接电源。
    • ROS版本:机器人基于ROS1开发,ROS1官方最高支持版本为Ubuntu 20.04,ROS2是最新版本但ROS1已不推荐。这可能与Ubuntu 22.04的升级产生兼容性问题。
    • Python版本:尝试安装vLLM时,发现Python 3.8可能过旧,且vLLM的最新版本(0.9.x)可能不兼容旧模型。
    • Docker尝试:虽然尝试了Docker进行测试,但Docker容器仍依赖宿主机的内核和GPU驱动,因此版本要求依然存在。
    • 备选方案:传统模式(采集样本、数据预处理、训练等步骤),但这不是实时推理的方案。

CUDA GPU 计算能力

计算能力(Compute Capability) 定义了每个英伟达 GPU 架构的硬件特性和支持的指令。了解你的GPU的计算能力对于选择合适的软件和驱动版本至关重要。在下面的表格中查找您的 GPU 的计算能力。

Compute Capability Data Center GeForce/RTX Jetson
12.0 NVIDIA RTX PRO 6000 Blackwell Server Edition NVIDIA RTX PRO 6000 Blackwell Workstation Edition
NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition
NVIDIA RTX PRO 5000 Blackwell
NVIDIA RTX PRO 4500 Blackwell
NVIDIA RTX PRO 4000 Blackwell
GeForce RTX 5090
GeForce RTX 5080
GeForce RTX 5070 Ti
GeForce RTX 5070
GeForce RTX 5060 Ti
GeForce RTX 5060
 
10.0 NVIDIA GB200
NVIDIA B200
   
9.0 NVIDIA GH200
NVIDIA H200
NVIDIA H100
   
8.9 NVIDIA L4
NVIDIA L40
NVIDIA RTX 6000 Ada
NVIDIA RTX 5000 Ada
NVIDIA RTX 4500 Ada
NVIDIA RTX 4000 Ada
NVIDIA RTX 4000 SFF Ada
NVIDIA RTX 2000 Ada
GeForce RTX 4090
GeForce RTX 4080
GeForce RTX 4070 Ti
GeForce RTX 4070
GeForce RTX 4060 Ti
GeForce RTX 4060
GeForce RTX 4050
 
8.7     Jetson AGX Orin
Jetson Orin NX
Jetson Orin Nano
8.6 NVIDIA A40
NVIDIA A10
NVIDIA A16
NVIDIA A2
NVIDIA RTX A6000
NVIDIA RTX A5000
NVIDIA RTX A4000
NVIDIA RTX A3000
NVIDIA RTX A2000
GeForce RTX 3090 Ti
GeForce RTX 3090
GeForce RTX 3080 Ti
GeForce RTX 3080
GeForce RTX 3070 Ti
GeForce RTX 3070
GeForce RTX 3060 Ti
GeForce RTX 3060
GeForce RTX 3050 Ti
GeForce RTX 3050
 
8.0 NVIDIA A100
NVIDIA A30
   
7.5 NVIDIA T4 QUADRO RTX 8000
QUADRO RTX 6000
QUADRO RTX 5000
QUADRO RTX 4000
QUADRO RTX 3000
QUADRO T2000
NVIDIA T1200
NVIDIA T1000
NVIDIA T600
NVIDIA T500
NVIDIA T400
GeForce GTX 1650 Ti
NVIDIA TITAN RTX
GeForce RTX 2080 Ti
GeForce RTX 2080
GeForce RTX 2070
GeForce RTX 2060
 

多模态大模型

模型名称 发布日期
Qwen/Qwen2.5-VL-7B-Instruct 2025-1-26
GLM-4.1V-Thinking 2025-7-1

推理引擎

vllm

ollama

Ollama 支持计算能力为 5.0+ 的 Nvidia GPU,以及驱动版本 531 及更高版本。

查看您的计算兼容性以确认您的显卡是否受支持:
https://developer.nvidia.com/cuda-gpus

计算能力 系列 显卡型号
9.0 NVIDIA H200 H100
8.9 GeForce RTX 40xx RTX 4090 RTX 4080 SUPER RTX 4080 RTX 4070 Ti SUPER RTX 4070 Ti RTX 4070 SUPER RTX 4070 RTX 4060 Ti RTX 4060
  NVIDIA 专业显卡 L4 L40 RTX 6000
8.6 GeForce RTX 30xx RTX 3090 Ti RTX 3090 RTX 3080 Ti RTX 3080 RTX 3070 Ti RTX 3070 RTX 3060 Ti RTX 3060 RTX 3050 Ti RTX 3050
  NVIDIA 专业显卡 A40 RTX A6000 RTX A5000 RTX A4000 RTX A3000 RTX A2000 A10 A16 A2
8.0 NVIDIA A100 A30
7.5 GeForce GTX/RTX GTX 1650 Ti TITAN RTX RTX 2080 Ti RTX 2080 RTX 2070 RTX 2060
  NVIDIA 专业显卡 T4 RTX 5000 RTX 4000 RTX 3000 T2000 T1200 T1000 T600 T500
  Quadro RTX 8000 RTX 6000 RTX 5000 RTX 4000
7.0 NVIDIA TITAN V V100 Quadro GV100
6.1 NVIDIA TITAN TITAN Xp TITAN X
  GeForce GTX GTX 1080 Ti GTX 1080 GTX 1070 Ti GTX 1070 GTX 1060 GTX 1050 Ti GTX 1050
  Quadro P6000 P5200 P4200 P3200 P5000 P4000 P3000 P2200 P2000 P1000 P620 P600 P500 P520
  Tesla P40 P4
6.0 NVIDIA Tesla P100 Quadro GP100
5.2 GeForce GTX GTX TITAN X GTX 980 Ti GTX 980 GTX 970 GTX 960 GTX 950
  Quadro M6000 24GB M6000 M5000 M5500M M4000 M2200 M2000 M620
  Tesla M60 M40
5.0 GeForce GTX GTX 750 Ti GTX 750 NVS 810
  Quadro K2200 K1200 K620 M1200 M520 M5000M M4000M M3000M M2000M M1000M K620M M600M M500M

如需本地构建以支持旧款 GPU,请参阅 developer.md

llama.cpp

参考信息

这是一个关于在ARM64环境下部署多模态大模型(用于火灾、烟雾和安全帽检测)的项目。核心问题围绕着软件兼容性,特别是Jetson平台上的JetPack、CUDA、驱动版本与大模型推理框架(vLLM、Ollama)之间的版本依赖。

背景信息:

  • 项目目标: 在物资仓库机器人项目中实现智能检测火灾、烟雾和正确佩戴安全帽。
  • 硬件环境: ARM64架构,具体为NVIDIA Jetson AGX Orin开发者套件。
  • 当前系统配置:
    • JetPack版本:5.1.4
    • Ubuntu版本:20.04
    • CUDA版本:11.4
  • 核心问题: vLLM和Ollama这两个主流的多模态大模型推理框架对CUDA和驱动版本有更高要求,而现有系统配置无法满足。
  • 具体软件版本要求:
    • vLLM: 至少需要CUDA 11.8。
    • Ollama: 需要Nvidia GPU计算能力5.0+,驱动版本531及更新。
  • JetPack与CUDA/驱动的关系:
    • JetPack 5.x系列(如5.1.4)通常包含CUDA 11.4,驱动版本约为515。
    • JetPack 6.0及以上版本支持CUDA 12.x,驱动版本535+。
  • 系统升级困境: 升级到JetPack 6.0是满足CUDA和驱动要求的关键,但JetPack 6.0强制要求Ubuntu 22.04,这意味着需要重装系统。
  • 其他问题:
    • 磁盘空间不足。
    • 机器人电池续航短(2小时),模型编译时间长,需要考虑临时外接电源。
    • ROS版本:机器人基于ROS1开发,ROS1官方最高支持版本为Ubuntu 20.04,ROS2是最新版本但ROS1已不推荐。这可能与Ubuntu 22.04的升级产生兼容性问题。
    • Python版本:尝试安装vLLM时,发现Python 3.8可能过旧,且vLLM的最新版本(0.9.x)可能不兼容旧模型。
    • Docker尝试:虽然尝试了Docker进行测试,但Docker容器仍依赖宿主机的内核和GPU驱动,因此版本要求依然存在。
    • 备选方案:传统模式(采集样本、数据预处理、训练等步骤),但这不是实时推理的方案。

技术方案:

目前来看,主要有以下几种解决思路,以及对应的挑战和风险:

  1. 系统升级方案(推荐,但存在挑战):
    • 核心步骤: 将Jetson AGX Orin的JetPack版本从5.1.4升级到6.0或更高版本。
    • 前提条件: 必须将Ubuntu操作系统从20.04升级到22.04。
    • 挑战:
      • 重装系统: 这将是最大的工程量,需要备份所有数据,并重新配置机器人相关的软件和依赖,包括ROS1。ROS1在Ubuntu 22.04上的兼容性需要验证,可能需要进行额外的适配工作,甚至考虑是否需要升级到ROS2(但ROS2与ROS1的API有较大差异,项目改动会很大)。
      • 耗时: 重装系统和配置环境会占用大量时间,影响项目进度。
      • 外部电源: 编译和安装过程可能耗时较长,需解决机器人电源问题。
    • 优点: 这是最彻底的解决方案,能够满足vLLM和Ollama对CUDA和驱动的最新要求,确保大模型的稳定运行和未来兼容性。
  2. 寻找兼容当前环境的推理框架或模型版本(难度大,可能无法实现):
    • 思路: 尝试寻找对CUDA 11.4或更低版本有良好支持的多模态大模型推理框架,或者寻找可以运行在当前CUDA版本上的旧版vLLM/Ollama模型。
    • 挑战:
      • 模型性能与功能: 旧版本的推理框架或模型可能无法支持最新的大模型算法,导致检测效果不佳或功能受限。
      • 维护与支持: 旧版本通常不再得到官方维护和支持,存在安全和稳定性风险。
      • 可用性: 市场上的主流多模态大模型及其推理框架通常会追随最新的CUDA版本。
    • 现状: 聊天记录中已经尝试过vLLM的安装,发现即使是0.6.3版本也存在依赖问题,且Qwen25-VL等新模型可能不支持。Ollama的驱动要求也无法满足。
  3. 替代推理引擎方案(llama.cpp备选):
    • 思路: 考虑使用llama.cpp等更为轻量级或对硬件要求更低的推理库。
    • 挑战:
      • 多模态支持: 需要确认llama.cpp是否能很好地支持多模态(火灾、烟雾、安全帽识别)任务,以及其推理性能是否满足实时性要求。
      • 模型转换: 可能需要将现有的多模态模型转换为llama.cpp支持的格式。
      • 性能瓶颈: 即使能运行,其在Jetson平台上的推理速度和准确性是否能达到预期是未知数。
    • 优点: 可能会避免系统升级的复杂性。
  4. 云端推理/边缘云方案(非本次任务范畴,但可作为长期考虑):
    • 思路: 将大模型的推理部分放到云端或性能更强的边缘服务器上,Jetson平台只负责数据采集和预处理,然后将数据传输到云端进行推理,再接收推理结果。
    • 挑战:
      • 网络延迟: 实时性要求高的任务可能会受到网络延迟的影响。
      • 数据传输: 大量图像/视频数据传输可能产生带宽和成本问题。
      • 部署复杂性: 引入云端服务会增加系统架构的复杂性。
    • 优点: 摆脱Jetson硬件限制,可以利用更强大的计算资源。

目前建议:

鉴于vLLM和Ollama都明确要求更高的CUDA和驱动版本,且JetPack 6.0是支持这些新版本的关键,最直接且长期的解决方案是进行JetPack和Ubuntu的升级

在执行升级前,需要进行详细的规划:

  • 评估ROS1在Ubuntu 22.04上的兼容性,并制定相应的适配或迁移方案。
  • 确保所有重要数据已备份。
  • 准备临时的外接电源,以应对长时间的系统安装和模型编译。
  • 与技术支持团队沟通,获取官方的升级指导和可能遇到的问题解决方案。

同时,可以继续尝试在现有环境下寻找一些临时的或者备选的方案,例如尝试不同版本的pip源或者更早版本的vLLM(尽管可能性不大),但这不应作为主要方向。

参考资料

Updated: