Краткое руководство по запуску: NVIDIA Jetson с Ultralytics YOLOv8
В этом подробном руководстве ты найдешь подробное описание развертывания Ultralytics YOLOv8 на устройствах NVIDIA Jetson. Кроме того, в нем приведены эталоны производительности, демонстрирующие возможности YOLOv8 на этих небольших и мощных устройствах.
Смотри: Как настроить NVIDIA Jetson с Ultralytics YOLOv8
Примечание
Это руководство было протестировано как с Seeed Studio reComputer J4012, который основан на NVIDIA Jetson Orin NX 16GB под управлением последнего стабильного JetPack-релиза JP6.0, JetPack-релиза JP5.1.3, так и с Seeed Studio reComputer J1020 v2, который основан на NVIDIA Jetson Nano 4GB под управлением JetPack-релиза JP4.6.1. Ожидается, что он будет работать на всех аппаратных линейках NVIDIA Jetson, включая последние и устаревшие.
Что такое NVIDIA Джетсон?
NVIDIA Jetson is a series of embedded computing boards designed to bring accelerated AI (artificial intelligence) computing to edge devices. These compact and powerful devices are built around NVIDIA's GPU architecture and are capable of running complex AI algorithms and deep learning models directly on the device, without needing to rely on cloud computing resources. Jetson boards are often used in robotics, autonomous vehicles, industrial automation, and other applications where AI inference needs to be performed locally with low latency and high efficiency. Additionally, these boards are based on the ARM64 architecture and runs on lower power compared to traditional GPU computing devices.
NVIDIA Сравнение серии Jetson
Jetson Orin - это последняя итерация семейства NVIDIA Jetson, основанная на архитектуре NVIDIA Ampere, которая обеспечивает радикально улучшенную производительность искусственного интеллекта по сравнению с предыдущими поколениями. Ниже в таблице приведено сравнение нескольких устройств Jetson в экосистеме.
Jetson AGX Orin 64GB | Jetson Orin NX 16GB | Jetson Orin Nano 8GB | Jetson AGX Xavier | Джетсон Ксавьер NX | Jetson Nano | |
---|---|---|---|---|---|---|
Производительность искусственного интеллекта | 275 TOPS | 100 ТОПОВ | 40 ТОПов | 32 TOPS | 21 TOPS | 472 GFLOPS |
GPU | 2048-ядерная NVIDIA амперная архитектура GPU с 64 Tensor ядрами. | 1024-ядерная NVIDIA амперная архитектура GPU с 32 Tensor ядрами. | 1024-ядерная NVIDIA амперная архитектура GPU с 32 Tensor ядрами. | 512-ядерная NVIDIA архитектура Volta GPU с 64 Tensor ядрами. | 384-ядерная NVIDIA архитектура Volta™ GPU с 48 Tensor ядрами. | 128-ядерная архитектура NVIDIA Maxwell™ GPU |
GPU Максимальная частота | 1,3 ГГц | 918 МГц | 625 МГц | 1377 МГц | 1100 МГц | 921 МГц |
CPU | 12-ядерный NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 3 МБ L2 + 6 МБ L3. | 8-ядерный NVIDIA Arm® Cortex A78AE v8.2 64-bit CPU 2 МБ L2 + 4 МБ L3. | 6-ядерный Arm® Cortex®-A78AE v8.2 64-bit CPU 1,5 МБ L2 + 4 МБ L3. | 8-ядерный NVIDIA Carmel Arm®v8.2 64-bit CPU 8 МБ L2 + 4 МБ L3. | 6-ядерный NVIDIA Carmel Arm®v8.2 64-bit CPU 6 МБ L2 + 4 МБ L3. | Четырехъядерный процессор Arm® Cortex®-A57 MPCore |
CPU Максимальная частота | 2,2 ГГц | 2,0 ГГц | 1,5 ГГц | 2,2 ГГц | 1,9 ГГц | 1,43 ГГц |
Память | 64 Гб 256-битной LPDDR5 204,8 Гб/с | 16 Гб 128-битной LPDDR5 102,4 Гб/с | 8 Гб 128-битной LPDDR5 68 Гб/с | 32 Гб 256-битной LPDDR4x 136,5 Гб/с | 8 Гб 128-битной LPDDR4x 59,7 Гб/с | 4 Гб 64-битной LPDDR4 25,6 Гб/с" |
Более подробную сравнительную таблицу ты можешь найти в разделе " Технические характеристики " на официальной странице NVIDIA Jetson.
Что такое NVIDIA JetPack?
NVIDIA JetPack SDK powering the Jetson modules is the most comprehensive solution and provides full development environment for building end-to-end accelerated AI applications and shortens time to market. JetPack includes Jetson Linux with bootloader, Linux kernel, Ubuntu desktop environment, and a complete set of libraries for acceleration of GPU computing, multimedia, graphics, and computer vision. It also includes samples, documentation, and developer tools for both host computer and developer kit, and supports higher level SDKs such as DeepStream for streaming video analytics, Isaac for robotics, and Riva for conversational AI.
Флеш JetPack на NVIDIA Jetson
Первый шаг после получения в руки устройства NVIDIA Jetson - прошить NVIDIA JetPack на него. Существует несколько различных способов прошивки NVIDIA Jetson-устройств.
- Если у тебя есть официальный NVIDIA Development Kit, например Jetson Orin Nano Developer Kit, ты можешь загрузить образ и подготовить SD-карту с JetPack для загрузки устройства.
- Если ты являешься владельцем любого другого NVIDIA Development Kit, ты можешь прошить JetPack на устройство с помощью SDK Manager.
- Если ты владелец устройства Seeed Studio reComputer J4012, то можешь прошить JetPack на прилагаемый SSD, а если ты владелец устройства Seeed Studio reComputer J1020 v2, то можешь прошить JetPack на eMMC/ SSD.
- Если ты являешься владельцем любого другого стороннего устройства, работающего на модуле NVIDIA Jetson, рекомендуется выполнить прошивку из командной строки.
Примечание
Для методов 3 и 4 выше, после прошивки системы и загрузки устройства, пожалуйста, введите "sudo apt update && sudo apt install nvidia-jetpack -y" в терминале устройства, чтобы установить все оставшиеся необходимые компоненты JetPack.
Поддержка JetPack на базе устройства Jetson
В таблице ниже приведены версии NVIDIA JetPack, поддерживаемые различными устройствами NVIDIA Jetson.
JetPack 4 | JetPack 5 | JetPack 6 | |
---|---|---|---|
Jetson Nano | ✅ | ❌ | ❌ |
Джетсон TX2 | ✅ | ❌ | ❌ |
Джетсон Ксавьер NX | ✅ | ✅ | ❌ |
Jetson AGX Xavier | ✅ | ✅ | ❌ |
Jetson AGX Orin | ❌ | ✅ | ✅ |
Jetson Orin NX | ❌ | ✅ | ✅ |
Джетсон Орин Нано | ❌ | ✅ | ✅ |
Быстрый старт с Docker
Самый быстрый способ начать работу с Ultralytics YOLOv8 на NVIDIA Jetson - это запустить с помощью предварительно собранных докер-образов для Jetson. Обратись к таблице выше и выбери версию JetPack в соответствии с устройством Jetson, которым ты владеешь.
После этого переходи к разделу Use TensorRT on NVIDIA Jetson.
Начни с родной установки
Для нативной установки без Docker, пожалуйста, обратись к шагам ниже.
Запуск на JetPack 6.x
Установи пакет Ultralytics
Here we will install Ultralytics package on the Jetson with optional dependencies so that we can export the PyTorch models to other different formats. We will mainly focus on NVIDIA TensorRT exports because TensorRT will make sure we can get the maximum performance out of the Jetson devices.
Обнови список пакетов, установи pip и обновись до последней версии
Установи
ultralytics
Пакет pip с дополнительными зависимостямиПерезагрузите устройство
Установи PyTorch и Torchvision
Приведенная выше установка ultralytics установит Torch и Torchvision. Однако эти два пакета, установленные через pip, несовместимы для работы на платформе Jetson, которая основана на архитектуре ARM64. Поэтому нам нужно вручную установить предварительно собранный PyTorch pip wheel и скомпилировать/установить Torchvision из исходников.
Установи torch 2.3.0
и torchvision 0.18
в соответствии с JP6.0
sudo apt-get install libopenmpi-dev libopenblas-base libomp-dev -y
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.3.0-cp310-cp310-linux_aarch64.whl
pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.18.0a0+6043bc2-cp310-cp310-linux_aarch64.whl
Посети страницуPyTorch for Jetson, чтобы получить доступ ко всем различным версиям PyTorch для разных версий JetPack. Более подробный список совместимости PyTorch и Torchvision можно найти на страницеPyTorch и Torchvision.
Установи onnxruntime-gpu
The onnxruntime-gpu Пакет, размещенный в PyPI, не имеет aarch64
двоичные файлы для Jetson. Поэтому нам нужно вручную установить этот пакет. Этот пакет нужен для некоторых экспортов.
Все разные onnxruntime-gpu
Перечислены пакеты, соответствующие различным версиям JetPack и Python здесь. Однако здесь мы будем скачивать и устанавливать onnxruntime-gpu 1.18.0
с Python3.10
поддержка.
wget https://nvidia.box.com/shared/static/48dtuob7meiw6ebgfsfqakc9vse62sg4.whl -O onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
pip install onnxruntime_gpu-1.18.0-cp310-cp310-linux_aarch64.whl
Примечание
onnxruntime-gpu
автоматически вернет версию numpy на последнюю. Поэтому нам нужно переустановить numpy на 1.23.5
чтобы устранить проблему, выполнив ее:
pip install numpy==1.23.5
Запуск на JetPack 5.x
Установи пакет Ultralytics
Здесь мы установим на Jetson пакет Ultralytics с дополнительными зависимостями, чтобы мы могли экспортировать модели PyTorch в другие различные форматы. В основном мы сосредоточимся на экспортеNVIDIA TensorRT , потому что TensorRT позволит нам добиться максимальной производительности от устройств Jetson.
Обнови список пакетов, установи pip и обновись до последней версии
Установи
ultralytics
Пакет pip с дополнительными зависимостямиПерезагрузите устройство
Установи PyTorch и Torchvision
Приведенная выше установка ultralytics установит Torch и Torchvision. Однако эти два пакета, установленные через pip, несовместимы для работы на платформе Jetson, которая основана на архитектуре ARM64. Поэтому нам нужно вручную установить предварительно собранный PyTorch pip wheel и скомпилировать/установить Torchvision из исходников.
Деинсталлируй установленные в данный момент PyTorch и Torchvision
Установи PyTorch 2.1.0 в соответствии с JP5.1.3.
sudo apt-get install -y libopenblas-base libopenmpi-dev wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
Установи Torchvision v0.16.2 по адресу PyTorch v2.1.0.
Посети страницуPyTorch for Jetson, чтобы получить доступ ко всем различным версиям PyTorch для разных версий JetPack. Более подробный список совместимости PyTorch и Torchvision можно найти на страницеPyTorch и Torchvision.
Установи onnxruntime-gpu
The onnxruntime-gpu Пакет, размещенный в PyPI, не имеет aarch64
двоичные файлы для Jetson. Поэтому нам нужно вручную установить этот пакет. Этот пакет нужен для некоторых экспортов.
Все разные onnxruntime-gpu
Перечислены пакеты, соответствующие различным версиям JetPack и Python здесь. Однако здесь мы будем скачивать и устанавливать onnxruntime-gpu 1.17.0
с Python3.8
поддержка.
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
Примечание
onnxruntime-gpu
автоматически вернет версию numpy на последнюю. Поэтому нам нужно переустановить numpy на 1.23.5
чтобы устранить проблему, выполнив ее:
pip install numpy==1.23.5
Используй TensorRT на сайте NVIDIA Jetson.
Из всех форматов экспорта моделей, поддерживаемых Ultralytics, TensorRT обеспечивает наилучшую производительность вывода при работе с устройствами NVIDIA Jetson, и мы рекомендуем использовать TensorRT с Jetson. Также у нас есть подробный документ по TensorRT здесь.
Преобразуй модель в TensorRT и выполни вывод
Модель YOLOv8n в формате PyTorch конвертируется в TensorRT , чтобы запустить вывод с экспортированной моделью.
Пример
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="engine") # creates 'yolov8n.engine'
# Load the exported TensorRT model
trt_model = YOLO("yolov8n.engine")
# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
Примечание
Посети страницу экспорта, чтобы получить доступ к дополнительным аргументам при экспорте моделей в различные форматы
NVIDIA Jetson Orin YOLOv8 Бенчмарки
YOLOv8 benchmarks were run by the Ultralytics team on 10 different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on Seeed Studio reComputer J4012 powered by Jetson Orin NX 16GB device at FP32 precision with default input image size of 640.
Сравнительная таблица
Несмотря на то что все экспортируемые модели работают с NVIDIA Jetson, мы включили в сравнительную таблицу ниже только PyTorch, TorchScript, TensorRT, потому что они используют GPU на Jetson и гарантированно дают наилучшие результаты. Все остальные экспорты используют только CPU , и их производительность не так хороша, как у трех вышеперечисленных. Бенчмарки для всех экспортов ты можешь найти в разделе после этого графика.
Подробная сравнительная таблица
В таблице ниже представлены результаты тестов для пяти различных моделей (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) в десяти различных форматах (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Облегченный, PaddlePaddle, NCNN), предоставляя нам статус, размер, метрику mAP50-95(B) и время вывода для каждой комбинации.
Производительность
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 14.3 |
TorchScript | ✅ | 12.4 | 0.6117 | 13.3 |
ONNX | ✅ | 12.2 | 0.6092 | 70.6 |
OpenVINO | ✅ | 12.3 | 0.6092 | 104.2 |
TensorRT (FP32) | ✅ | 16.1 | 0.6091 | 8.01 |
TensorRT (FP16) | ✅ | 9.2 | 0.6093 | 4.55 |
TensorRT (INT8) | ✅ | 5.9 | 0.2759 | 4.09 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 141.74 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 199.93 |
TF Lite | ✅ | 12.3 | 0.6092 | 349.18 |
PaddlePaddle | ✅ | 24.4 | 0.6030 | 555 |
NCNN | ✅ | 12.2 | 0.6092 | 32 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 18 |
TorchScript | ✅ | 43.0 | 0.7136 | 23.81 |
ONNX | ✅ | 42.8 | 0.7136 | 185.55 |
OpenVINO | ✅ | 42.9 | 0.7136 | 243.97 |
TensorRT (FP32) | ✅ | 46.4 | 0.7136 | 14.01 |
TensorRT (FP16) | ✅ | 24.2 | 0.722 | 7.16 |
TensorRT (INT8) | ✅ | 13.7 | 0.4233 | 5.49 |
TF SavedModel | ✅ | 107 | 0.7136 | 260.03 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 423.4 |
TF Lite | ✅ | 42.8 | 0.7136 | 1046.64 |
PaddlePaddle | ✅ | 85.5 | 0.7140 | 1464 |
NCNN | ✅ | 42.7 | 0.7200 | 63 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 49.7 | 0.7370 | 36.4 |
TorchScript | ✅ | 99.2 | 0.7285 | 53.58 |
ONNX | ✅ | 99 | 0.7280 | 452.09 |
OpenVINO | ✅ | 99.1 | 0.7280 | 544.36 |
TensorRT (FP32) | ✅ | 102.4 | 0.7285 | 31.51 |
TensorRT (FP16) | ✅ | 52.6 | 0.7324 | 14.88 |
TensorRT (INT8) | ✅ | 28.6 | 0.3283 | 10.89 |
TF SavedModel | ✅ | 247.5 | 0.7280 | 543.65 |
TF GraphDef | ✅ | 99 | 0.7280 | 906.63 |
TF Lite | ✅ | 99 | 0.7280 | 2758.08 |
PaddlePaddle | ✅ | 197.9 | 0.7280 | 3678 |
NCNN | ✅ | 98.9 | 0.7260 | 135 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 83.7 | 0.7768 | 61.3 |
TorchScript | ✅ | 167.2 | 0.7554 | 87.9 |
ONNX | ✅ | 166.8 | 0.7551 | 852.29 |
OpenVINO | ✅ | 167 | 0.7551 | 1012.6 |
TensorRT (FP32) | ✅ | 170.5 | 0.7554 | 49.79 |
TensorRT (FP16) | ✅ | 86.1 | 0.7535 | 22.89 |
TensorRT (INT8) | ✅ | 46.4 | 0.4048 | 14.61 |
TF SavedModel | ✅ | 417.2 | 0.7551 | 990.45 |
TF GraphDef | ✅ | 166.9 | 0.7551 | 1649.86 |
TF Lite | ✅ | 166.9 | 0.7551 | 5652.37 |
PaddlePaddle | ✅ | 333.6 | 0.7551 | 7114.67 |
NCNN | ✅ | 166.8 | 0.7685 | 231.9 |
Формат | Статус | Размер на диске (МБ) | mAP50-95(B) | Время вывода (мс/им) |
---|---|---|---|---|
PyTorch | ✅ | 130.5 | 0.7759 | 93 |
TorchScript | ✅ | 260.7 | 0.7472 | 135.1 |
ONNX | ✅ | 260.4 | 0.7479 | 1296.13 |
OpenVINO | ✅ | 260.6 | 0.7479 | 1502.15 |
TensorRT (FP32) | ✅ | 264.0 | 0.7469 | 80.01 |
TensorRT (FP16) | ✅ | 133.3 | 0.7513 | 40.76 |
TensorRT (INT8) | ✅ | 70.2 | 0.4277 | 22.08 |
TF SavedModel | ✅ | 651.1 | 0.7479 | 1451.76 |
TF GraphDef | ✅ | 260.5 | 0.7479 | 4029.36 |
TF Lite | ✅ | 260.4 | 0.7479 | 8772.86 |
PaddlePaddle | ✅ | 520.8 | 0.7479 | 10619.53 |
NCNN | ✅ | 260.4 | 0.7646 | 376.38 |
Изучи другие бенчмарки Seeed Studio, работающие на разных версиях аппаратного обеспечения NVIDIA Jetson.
Воспроизведи наши результаты
Чтобы воспроизвести приведенные выше Ultralytics бенчмарки на всех форматах экспорта, выполни этот код:
Пример
Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val изображений).
Лучшие практики при использовании NVIDIA Jetson
При использовании NVIDIA Jetson есть несколько лучших практик, которым стоит следовать, чтобы обеспечить максимальную производительность на NVIDIA Jetson под управлением YOLOv8.
Включи режим максимальной мощности
Включив режим MAX Power Mode на Jetson, ты убедишься, что все ядра CPU, GPU включены.
Включи часы Jetson
Включив Jetson Clocks, ты убедишься, что все ядра CPU, GPU работают на максимальной частоте.
Установи приложение Jetson Stats
Мы можем использовать приложение jetson stats для мониторинга температуры компонентов системы и проверки других системных деталей, таких как просмотр CPU, GPU, использование оперативной памяти, изменение режимов питания, установка максимальных часов, проверка информации о JetPack.
Следующие шаги
Поздравляю с успешной настройкой YOLOv8 на твоем NVIDIA Jetson! Для дальнейшего обучения и поддержки посети дополнительное руководство на Ultralytics YOLOv8 Docs!
ВОПРОСЫ И ОТВЕТЫ
Как развернуть Ultralytics YOLOv8 на устройствах NVIDIA Jetson?
Развертывание Ultralytics YOLOv8 на NVIDIA устройствах Jetson - процесс несложный. Сначала прошей свое устройство Jetson с помощью NVIDIA JetPack SDK. Затем либо используй готовый образ Docker для быстрой настройки, либо вручную установи необходимые пакеты. Подробные шаги для каждого подхода можно найти в разделах "Быстрый старт с Docker" и "Старт с нативной установкой".
Какие бенчмарки производительности можно ожидать от моделей YOLOv8 на устройствах NVIDIA Jetson?
YOLOv8 модели были протестированы на различных устройствах NVIDIA Jetson и показали значительный прирост производительности. Например, формат TensorRT обеспечивает наилучшую производительность при проведении выводов. Таблица в разделе " Подробная таблица сравнения " дает полное представление о таких метриках производительности, как mAP50-95 и время вывода для разных форматов моделей.
Почему я должен использовать TensorRT для развертывания YOLOv8 на NVIDIA Jetson?
TensorRT настоятельно рекомендуется для развертывания YOLOv8 моделей на NVIDIA Jetson благодаря своей оптимальной производительности. Он ускоряет проведение выводов за счет использования возможностей GPU Jetson, обеспечивая максимальную эффективность и скорость. Подробнее о том, как конвертировать в TensorRT и запустить inference, читай в разделе " Использование TensorRT на NVIDIA Jetson".
Как установить PyTorch и Torchvision на NVIDIA Jetson?
Чтобы установить PyTorch и Torchvision на NVIDIA Jetson, сначала удали все существующие версии, которые могли быть установлены через pip. Затем вручную установи совместимые версии PyTorch и Torchvision для ARM64-архитектуры Jetson. Подробные инструкции по этому процессу приведены в разделе " Установка PyTorch и Torchvision ".
Каковы лучшие практики для максимизации производительности на NVIDIA Jetson при использовании YOLOv8?
Чтобы добиться максимальной производительности на NVIDIA Jetson с YOLOv8, следуй этим лучшим рекомендациям:
- Включи режим MAX Power Mode, чтобы задействовать все ядра CPU и GPU .
- Включи Jetson Clocks, чтобы запустить все ядра на максимальной частоте.
- Установи приложение Jetson Stats для мониторинга системных показателей.
Команды и дополнительные подробности смотри в разделе " Лучшие практики при использовании NVIDIA Jetson".