Что это
Jetson nano позиционируется как платформа для запуска нейросетей или других сложных программ которым требуется CUDA, в которой есть GPIO порты.
Характеристики
GPU 128-core Maxwell™ GPU
CPU Quad-core ARM A57 @1.43 GHz
RAM 2 GB 64-bit LPDDR4 | 25.6 GB/s
Хранилище - microSD
1x MIPI-CSI camera connector
Питание через USB C - 5V 3A
40-pin GPIO
12-pin header: Power and related signals, UART
4-pin разъём под вентилятор
Размеры: 100mm x 80mm x 29mm
Нет wifi
Настройка CUDA
Первым делом я попытался запустить CUDA на официальном образе, в стоке. Но установщик выдавал рекурсивную ошибку. На просторах интернета был найден репозиторий с готовым образом. Записав его на microSD карточку(для комфортной работы надо минимум 64 гига, т.к. сам образ занимает 31 гиг), и открыв jtop(htop но специально под jetson, отображающий его GPU, и статус некоторых библиотек) я увидел заветные “CUDA: 10.2.300”.
![CUDA включена! CUDA включена!](https://habrastorage.org/getpro/habr/upload_files/5b5/8b2/661/5b58b2661e379835fe2edf46b2c5b1a5.png)
Тестирование YOLOv8
Начнём с того, что я буду тестировать Yolo V8 (подробнее про запуск тут). Сначала нужно установить yolo, которая входит в пакет Ultralytics, а он вместе с собой доставляет ещё кучу всего, так что нужно активировать виртуальное окружение
// создаём и переходим в папку
mkdir yolo_test
cd yolo_test
// активируем виртуальное окружение
python3 -m venv yolo_test
source venv/bin/activate
// Ставим YOLO
pip install ultralytics
Активируем jetson-clock, снимаем ограничение на питание, врубаем вентилятор
sudo nvpmodel -m 0 // отключаем ограничение потребления
sudo jetson_clocks // Фиксируем частоты
sudo bash -c "echo 255 > /sys/devices/pwm-fan/target_pwm" //Ставим вентилятору максимальные обороты
Код для запуска тестов нейросети взял (тут)
Запускаем….
Jetson намертво завис, решаем отключением питания.
Отключаем графический интерфейс sudo systemctl stop gdm
, cнова запускаем.
Скрипт начинает работу, но система убивает его, из-за недостатка оперативки. Расширяем swap:
git clone https://github.com/JetsonHacksNano/resizeSwapMemory
./setSwapFileSize [ [-g #gigabytes ] | [ -m #megabytes ] | [ -h ]
Снова запускаем и получаем результаты
Диаграмма FPS на 2х моделях(минимальной и модели для сегментации(подробнее тут, тут))
![](https://habrastorage.org/getpro/habr/upload_files/035/b33/9f0/035b339f0862bdd7ac130b572f55dc32.png)
Как мы видим, fps на cpu очень низкий(1 кадр в секунду), и использовать его будет сложно реально. А фпс на CUDA отличается в лучшую сторону, 11 фпс это хороший результат при потреблении максимум в 9-10 вт.
Энергопотребление
Jetson nano крайне требовательный к питанию(по оф сайту 5в 2а, но на самой плате написано 5v 3a 😁). У меня получалось так, что при минимальной просадке напряжения меньше 5 в, jetson выдаёт OS ALARM 0x0000001, и начинает тротлить. Из-за этого необходимо найти хороший блок питания, который не будет просаживать напряжение при скачках потребления. Я пробовал на нескольких блоках питания(и на 1 повербанке) с одинаковыми характеристиками(выдают 5v 3А). В итоге, получились такие результаты:
Noname повербанк: в пиках нагрузки периодически возникает os alram.
Xiaomi блок питания 33w: работает идеально, никаких os alarm нет.
Лабораторный блок питания(Wanptek APS3010H) выставленный на 5.15v, 8А, питающий jetson через порезанный type-c провод: В пиках выдает многократные os alram.
Xiaomi блок питания 33w, в нём usb тестер fnirsi: В пиках выдает многократные os alram.
Тесты проводились на блоке питания Xiaomi. Так-же вентилятор который я поставил(подробнее позже) кушает неплохо, с его учётом jetson потребляет в пике 2.2А, без него 1.8А
![Фото usb тестера с потреблением в пике(которое смогли заснять, было 2.2А, но не успел заснять) Фото usb тестера с потреблением в пике(которое смогли заснять, было 2.2А, но не успел заснять)](https://habrastorage.org/getpro/habr/upload_files/d1d/cb3/3a7/d1dcb33a7a2d2f6bc213a91117493e44.png)
![Потребление в режиме простоя Потребление в режиме простоя](https://habrastorage.org/getpro/habr/upload_files/271/623/e52/271623e52b5b30a4b054f5257269438a.png)
Корпус
Одна из проблем это голые контакты снизу платы, а следовательно риск замыкания от установки на металлическую поверхность, решается самым обычным корпусом. Корпус был найден на grabcad(корпус, подходит для обычного jetson nano и jetson nano 2gb), распечатан на 3D принтере, зашкурен и покрашен в чёрный цвет.
Охлаждение
Сразу после того, как он попал ко мне в руки, я заменил штатную термопасту на arctic mx-6. В режиме простоя jetson греется не сильно, градусов 30-40 максимум, благодаря хорошему радиатору. А вот во время активной работы, радиатор нагревается до такого состояния, что касаться больно, но при этом температура gpu и cpu не превышает 45 градусов. Для решения проблемы был куплен кулер NIDEC UltraFlo R40W12BS5AC-65(не судите строго, искал на авито, с подходящими размерами 40х40 и 4х пиновым штекером), и установил его пользуясь шпильками и гайками.
![Итоговый вид после апгрейдов) Итоговый вид после апгрейдов)](https://habrastorage.org/getpro/habr/upload_files/df0/5a6/ad7/df05a6ad76a28a50b3180b68cbb0a6da.png)
WiFi
В качестве WiFi модуля был выбран tplink wn725n, система его сразу опознала, подключение к wifi сети делается командой nmcli d wifi connect <network_name> password <password>
Возможно мне ‘повезло’, но у меня jetson подключался к сети примерно каждый 2 ребут)
Вывод
По моему мнению, данное устройство имеет смысл покупать если вам нужно запускать нейросети в поле, и при этом вам нужен gpio(например для общения с arduino(вдруг вы решите сделать турель с автонаведением)) или если вам нужны ядра CUDA, и вы не можете экспортировать модель например в openvino. Если вам нужны CUDA ядра(их тут 128), и нужна мобильность то имеет смысл покупать jetson nano, но на 4GB памяти(его цена отличается не сильно). В случаях если вам надо запускать нейросеть, и при этом нужен GPIO, имеет смысл брать jetson nano но на 4гб. В случаях когда CUDA не принципиально нужна(можно экспортировать например в openvine), энергопотребление не важно и GPIO тоже не нужно, я бы посоветовал присмотреться к мини пк с N100 или с другими процессороми Intel.