Бесконечная жизнь, бесконечные метания: статьи о программном обеспечении Jetson Nano

искусственный интеллект

Заглавное фото: Снято у ворот Вуда Линбо.

Как системный инженер, который каждый день сталкивается с различными голыми досками, я полностью готов к тому, чтобы Jetson Nano наступал на различные ямы.В духе наступания на ямы и заполнения ям я запишу опыт наступания на ямы для всем Радость. Как избежать этих ям? Думайте слишком много, потому что даже если вы избежите этих ям в будущем, вас будут ждать другие ямы :) Важно, чтобы люди не убивали людей и будд, чтобы убить будд, и идти прямо в ямы.

Программа установки сталкивается с блокировкой

Используйте команду apt-get install для установки пакета и получите следующее приглашение:

alex@alex-jetson-nano:~$ sudo apt-get install xrdp
[sudo] password for alex: 
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

После перезагрузки ничего не делайте, установите пакет, а приглашение останется прежним.

Руководство по заполнению ямы:

Сначала проверьте, работает ли подходящий процесс:

alex@alex-jetson-nano:~$ ps aux | grep -i apt
root      6569  0.0  0.0   1912   496 ?        Ss   10:37   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root      6582  0.0  0.0   1912  1272 ?        S    10:37   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt      7736  5.4  0.1  19552  8036 ?        S    10:41   0:20 /usr/lib/apt/methods/http
alex      7883  0.0  0.0   7416   640 pts/0    R+   10:47   0:00 grep --color=auto -i apt

Вы видите, что система ежедневно проверяет наличие обновлений.Решение очень простое.Отключите ежедневную проверку обновлений:

Системные настройки | Программное обеспечение и обновления, на странице Обновления Автоматически проверять наличие обновлений выберите Никогда

Удаленное подключение

Для Jetson Nano нет отдельного дисплея, который используется совместно с машиной для разработки, но оба используют интерфейс HDMI, поэтому каждый раз, когда дисплей переключается, кабель HDMI необходимо подключать и отключать, что очень проблематично. , требуется удаленное подключение.

Существует два способа удаленного входа в Jetson Nano: первый — через протокол SSH, этот метод имеет низкую задержку и требует меньше ресурсов, но поддерживает только командную строку. Другой — через протокол RDP (протокол удаленного рабочего стола), который поддерживает графический интерфейс.Друзья, знакомые с Windows, могут знать, что Windows поддерживает удаленный вход в систему, и тот же эффект может быть достигнут в системе Ubuntu.

Jetson Nano использует настольную систему Ubuntu, и поддерживать протокол удаленного рабочего стола очень просто:

sudo apt-get update
sudo apt-get install xrdp

Однако на моей машине-разработчике используетсяRemmina Remote Desktop ClientПрограммное обеспечение, после настройки различных параметров для подключения, всегда мигает и выходит из приложения. начать подозреватьRemmina Remote Desktop ClientЕсть проблема с совместимостью.Позже удалённый вход под винду всё тот ​​же. Проверьте журнал $HOME/.xorgxrdp.10.log, вы увидите, что серверная часть активно выходит.

Руководство по заполнению ямы:

В отличие от обычной настольной системы Ubuntu, Jetson Nano не поддерживает одновременный вход двух клиентов. Чтобы избежать проблем во время установки, я решил автоматически входить в систему, чтобы каждый раз при запуске Jetson Nano пользователь входил в систему, и мне было отказано, если я войду в систему удаленно. В качестве обходного пути отредактируйте/etc/gdm3/custom.confфайл, нашелAutomaticLoginEnableиAutomatic Loginстрока, закомментированная:

sudo vi /etc/gdm3/custom.conf

# AutomaticLoginEnable=true
# Automatic Login=[user1]

не могу импортировать модуль cv2

Версия Python по умолчанию для системы Jetson Nano — версия 2.7.Однако для установки tensorflow-gpu требуется Python3.При импорте модуля opencv под Python3 возникает следующая ошибка:

(tensorflow-gpu) alex@alex-jetson-nano:~$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
>>>

С версией Python 2.7 по умолчанию такой проблемы нет.

Руководство по заполнению ямы:

По умолчанию система устанавливает модуль opencv для python 2.7, но не для python3, вам нужно установить его самостоятельно:

sudo apt-get install python3-opencv

Это устанавливается в среду системы python3, если вы используете виртуальную среду python, и вы не добавили ее при создании виртуальной среды--system-site-packageПараметры, в виртуальном окружении все равно будут проблемы.Решение - удалить файл no-global-site-packages.txt в виртуальном окружении. Если виртуальная среда называется tensorflow-gpu, команда выглядит следующим образом:

rm ~/.virtualenvs/tensorflow-gpu/lib/python3.6/no-global-site-packages.txt

виртуальная среда питона

Когда дело доходит до версии python, программисты на python абсолютно сопливые и слезливые. Проблема несовместимости между Python 2 и Python 3 имеет давнюю историю. Пока что Python 3 не убил Python 2, и они неловко сосуществуют. В дополнение к самому python, проблема версии сторонних пакетов python также является большой головной болью. К счастью, мы можем решить эту проблему с помощью виртуальной среды Python. Виртуальная среда python отличается от виртуальной машины тем, что это только изоляция среды, и нет никакой потери производительности, она очень подходит для программ python. На машине для разработки я использую пакет anaconda, однако версия anaconda для Linux поставляет пакеты только для 32-битной и 64-битной архитектуры x86, но не для arm64. В отчаянии я могу выбрать только инструмент python virtualenv.

Руководство по заполнению ямы:

Достаточно самого Virtualenv, но для удобства управления я все же использую обертку, которая на самом деле представляет собой слой инкапсуляции скриптов на virtualenv, которым удобно пользоваться:

sudo apt-get install virtualenvwrapper

Чтобы облегчить использование этих скриптов, я$HOME/.profileВ файл добавлена ​​строка:

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Создайте виртуальную среду с именем tensorflow-gpu:

mkvirtualenv -p /usr/bin/python3 --system-site-package tensorflow-gpu

Активировать виртуальную среду

workon tensorflow-gpu

Выйти из виртуальной среды

deactivate

Установить тензорный поток

Заводская система Jetson Nano не имеет встроенной среды TensorFlow, а официальной поддержки ранее не было, поэтому в интернете много руководств по установке Tensorflow, которые крайне сложны.К счастью, Nvidia осознала эту проблему и оказала официальную поддержку .

Руководство по заполнению ямы:

Установите зависимости:

sudo apt-get install libhdf5-serial-dev hdf5-tools
sudo apt-get install python3-pip
pip3 install -U pip
sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev
sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor

Обратите внимание, что некоторые шаги настолько медленные, что я подумал, что установочный пакет заблокирован, и я повторил попытку несколько раз, и все было по-прежнему. Позже я понял, что некоторые пакеты нужно компилировать на лету, поэтому это будет медленнее. и нужно терпеливо ждать.

Затем установите последнюю версию tensorflow-gpu:

pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu

Если вы хотите установить конкретную версию:

pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==$TF_VERSION+nv$NV_VERSION

Среди них TF_VERSION — это релизная версия TensorFlow, например 1.12.0. NV_VERSION — это контейнерная версия Tensorflow NVIDIA, например 19.01.

резюме

При использовании Jetson Nano я тоже столкнулся со многими странными проблемами.Я не могу их все здесь написать.Решение проблемы в основном зависит от Google.Конечно раздел Nano на форуме разработчиков Nvidia тоже стоит посмотреть. Его адрес:Обсуждение разработчиков.NVIDIA.com/default/boa…Выше я пробовал задавать вопросы другим разработчикам на ломаном английском и получил довольно много ответов.

Жизнь продолжается и продолжается.На самом деле самое большое удовольствие от Jetson nano это метание.Можно ожидать,что в будущем он наступит на различные ямы.Однако по сравнению с ямами софта,ямы железа даже крупнее.Ведь в это надо вкладывать реальные деньги.В этой статье я напишу о питах на железе,так что следите за обновлениями.

image