Заглавное фото: Снято у ворот Вуда Линбо.
Как системный инженер, который каждый день сталкивается с различными голыми досками, я полностью готов к тому, чтобы 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 это метание.Можно ожидать,что в будущем он наступит на различные ямы.Однако по сравнению с ямами софта,ямы железа даже крупнее.Ведь в это надо вкладывать реальные деньги.В этой статье я напишу о питах на железе,так что следите за обновлениями.