Перейти к содержимому

Краткое руководство по запуску: NVIDIA Jetson с Ultralytics YOLOv8

В этом подробном руководстве ты найдешь подробное описание развертывания Ultralytics YOLOv8 на устройствах NVIDIA Jetson. Кроме того, в нем приведены эталоны производительности, демонстрирующие возможности YOLOv8 на этих небольших и мощных устройствах.



Смотри: Как настроить NVIDIA Jetson с Ultralytics YOLOv8

NVIDIA Экосистема Джетсона

Примечание

Это руководство было протестировано как на Seeed Studio reComputer J4012, который основан на NVIDIA Jetson Orin NX 16GB под управлением последнего стабильного релиза JetPack JP5.1.3, так и на Seeed Studio reComputer J1020 v2, который основан на NVIDIA Jetson Nano 4GB под управлением JetPack релиза JP4.6.1. Ожидается, что он будет работать на всех аппаратных линейках NVIDIA Jetson, включая последние и устаревшие.

Что такое NVIDIA Джетсон?

NVIDIA Jetson - это серия встраиваемых вычислительных плат, призванных принести ускоренные вычисления ИИ (искусственного интеллекта) на граничные устройства. Эти компактные и мощные устройства построены на архитектуре NVIDIA's GPU и способны выполнять сложные алгоритмы ИИ и модели глубокого обучения непосредственно на устройстве, без необходимости полагаться на облачные вычислительные ресурсы. Платы Jetson часто используются в робототехнике, автономных транспортных средствах, промышленной автоматизации и других приложениях, где ИИ-выводы должны выполняться локально с низкой задержкой и высокой эффективностью. Кроме того, эти платы основаны на архитектуре ARM64 и работают с меньшим энергопотреблением по сравнению с традиционными вычислительными устройствами GPU .

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, питающий модули Jetson, является наиболее полным решением и предоставляет полноценную среду разработки для создания сквозных ускоренных AI-приложений и сокращает время выхода на рынок. JetPack включает в себя Jetson Linux с загрузчиком, ядро Linux, среду рабочего стола Ubuntu и полный набор библиотек для ускорения вычислений GPU , мультимедиа, графики и компьютерного зрения. В комплект также входят примеры, документация и инструменты разработчика как для хост-компьютера, так и для набора разработчика, а также поддержка SDK более высокого уровня, таких как DeepStream для аналитики потокового видео, Isaac для робототехники и Riva для разговорного ИИ.

Флеш JetPack на NVIDIA Jetson

Первый шаг после получения в руки устройства NVIDIA Jetson - прошить NVIDIA JetPack на него. Существует несколько различных способов прошивки NVIDIA Jetson-устройств.

  1. Если у тебя есть официальный NVIDIA Development Kit, например Jetson Orin Nano Developer Kit, ты можешь загрузить образ и подготовить SD-карту с JetPack для загрузки устройства.
  2. Если ты являешься владельцем любого другого NVIDIA Development Kit, ты можешь прошить JetPack на устройство с помощью SDK Manager.
  3. Если ты владелец устройства Seeed Studio reComputer J4012, то можешь прошить JetPack на прилагаемый SSD, а если ты владелец устройства Seeed Studio reComputer J1020 v2, то можешь прошить JetPack на eMMC/ SSD.
  4. Если ты являешься владельцем любого другого стороннего устройства, работающего на модуле NVIDIA Jetson, рекомендуется выполнить прошивку из командной строки.

Примечание

Для методов 3 и 4 выше, после прошивки системы и загрузки устройства, пожалуйста, введите "sudo apt update && sudo apt install nvidia-jetpack -y" в терминале устройства, чтобы установить все оставшиеся необходимые компоненты JetPack.

Запуск на JetPack 5.x

Если ты владелец Jetson Xavier NX, AGX Xavier, AGX Orin, Orin Nano или Orin NX, которые поддерживают JetPack 5.x, ты можешь продолжать следовать этому руководству. Однако если у тебя устаревшее устройство, например Jetson Nano, переходи к разделу " Запуск на JetPack 4.x".

Настройка Ultralytics

Есть два способа установки пакета Ultralytics на NVIDIA Jetson для создания твоего следующего проекта по компьютерному зрению. Ты можешь использовать любой из них.

Начни с Docker

Самый быстрый способ начать работу с Ultralytics YOLOv8 на NVIDIA Jetson - запустить с помощью предварительно собранного докер-образа для Jetson.

Выполни приведенную ниже команду, чтобы вытащить Docker-контейнер и запустить его на Jetson. Это основано на докер-образе l4t-pytorch, который содержит PyTorch и Torchvision в среде Python3.

t=ultralytics/ultralytics:latest-jetson-jetpack5 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

После этого переходи к разделу Use TensorRT on NVIDIA Jetson.

Запуск без Docker

Установи пакет Ultralytics

Здесь мы установим на Jetson пакет Ultralytics с дополнительными зависимостями, чтобы мы могли экспортировать модели PyTorch в другие различные форматы. В основном мы сосредоточимся на экспортеNVIDIA TensorRT , потому что TensorRT позволит нам добиться максимальной производительности от устройств Jetson.

  1. Обнови список пакетов, установи pip и обновись до последней версии

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Установи ultralytics Пакет pip с дополнительными зависимостями

    pip install ultralytics[export]
    
  3. Перезагрузите устройство

    sudo reboot
    
Установи PyTorch и Torchvision

Приведенная выше установка ultralytics установит Torch и Torchvision. Однако эти два пакета, установленные через pip, несовместимы для работы на платформе Jetson, которая основана на архитектуре ARM64. Поэтому нам нужно вручную установить предварительно собранный PyTorch pip wheel и скомпилировать/установить Torchvision из исходников.

  1. Деинсталлируй установленные в данный момент PyTorch и Torchvision

    pip uninstall torch torchvision
    
  2. Установи 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
    
  3. Установи Torchvision v0.16.2 по адресу PyTorch v2.1.0.

    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user
    

Посети страницу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 поддержка JetPack, который мы используем в этом руководстве.

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

Запуск на JetPack 4.x

Здесь мы поддерживаем запуск Ultralytics на устаревшем оборудовании, таком как Jetson Nano. В настоящее время для этого мы используем Docker.

Выполни приведенную ниже команду, чтобы вытащить Docker-контейнер и запустить его на Jetson. Это основано на докер-образе l4t-cuda, который содержит CUDA в окружении L4T.

t=ultralytics/ultralytics:latest-jetson-jetpack4 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Используй 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")
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'

# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

Примечание

Посети страницу экспорта, чтобы получить доступ к дополнительным аргументам при экспорте моделей в различные форматы

NVIDIA Jetson Orin YOLOv8 Бенчмарки

YOLOv8 Бенчмарки проводились Ultralytics Команда работает над 10 различными форматами моделей, измеряющих скорость и точность: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Облегченный, PaddlePaddle, NCNN. Тесты проводились на Seeed Studio reComputer J4012 на базе устройства Jetson Orin NX 16 ГБ с точностью FP32 с размером входного изображения по умолчанию 640.

Сравнительная таблица

Несмотря на то что все экспортируемые модели работают с NVIDIA Jetson, мы включили в сравнительную таблицу ниже только PyTorch, TorchScript, TensorRT, потому что они используют GPU на Jetson и гарантированно дают наилучшие результаты. Все остальные экспорты используют только CPU , и их производительность не так хороша, как у трех вышеперечисленных. Бенчмарки для всех экспортов ты можешь найти в разделе после этого графика.

NVIDIA Экосистема Джетсона

Подробная сравнительная таблица

В таблице ниже представлены результаты тестов для пяти различных моделей (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 13.6 0.6117 8.9
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 44.0 0.7136 14.82
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 100.3 0.7285 33.21
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 168.4 0.7554 51.23
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 261.8 0.7469 84.53
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 бенчмарки на всех форматах экспорта, выполни этот код:

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val изображений).

Лучшие практики при использовании NVIDIA Jetson

При использовании NVIDIA Jetson есть несколько лучших практик, которым стоит следовать, чтобы обеспечить максимальную производительность на NVIDIA Jetson под управлением YOLOv8.

  1. Включи режим максимальной мощности

    Включив режим MAX Power Mode на Jetson, ты убедишься, что все ядра CPU, GPU включены.

    sudo nvpmodel -m 0
    
  2. Включи часы Jetson

    Включив Jetson Clocks, ты убедишься, что все ядра CPU, GPU работают на максимальной частоте.

    sudo jetson_clocks
    
  3. Установи приложение Jetson Stats

    Мы можем использовать приложение jetson stats для мониторинга температуры компонентов системы и проверки других системных деталей, таких как просмотр CPU, GPU, использование оперативной памяти, изменение режимов питания, установка максимальных часов, проверка информации о JetPack.

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop
    

Статистика Джетсона

Следующие шаги

Поздравляю с успешной настройкой YOLOv8 на твоем NVIDIA Jetson! Для дальнейшего обучения и поддержки посети дополнительное руководство на Ultralytics YOLOv8 Docs!

ВОПРОСЫ И ОТВЕТЫ

Как развернуть Ultralytics YOLOv8 на устройствах NVIDIA Jetson?

Развертывание Ultralytics YOLOv8 на NVIDIA устройствах Jetson - процесс несложный. Сначала прошей свое устройство Jetson с помощью NVIDIA JetPack SDK. Затем либо используй готовый образ Docker для быстрой настройки, либо вручную установи необходимые пакеты. Подробные шаги для каждого подхода можно найти в разделах " Запуск с 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, следуй этим лучшим рекомендациям:

  1. Включи режим MAX Power Mode, чтобы задействовать все ядра CPU и GPU .
  2. Включи Jetson Clocks, чтобы запустить все ядра на максимальной частоте.
  3. Установи приложение Jetson Stats для мониторинга системных показателей.

Команды и дополнительные подробности смотри в разделе " Лучшие практики при использовании NVIDIA Jetson".



Создано 2024-04-02, Обновлено 2024-07-05
Авторы: glenn-jocher (9), RizwanMunawar (1), lakshanthad (3), Ahelsamahy (1), Burhan-Q (2)

Комментарии