从零制作Jetbot镜像

喜欢折腾的小伙伴可以尝试跟着这篇帖子从零制作一个jetson镜像。玩jetson要远比小喵家产品或树莓派烧钱,大家要准备足够的预算~

以下所有文档来自于Nv官方,如有变动以官方的为准: https://github.com/NVIDIA-AI-IOT/jetbot/wiki/Create-SD-Card-Image-From-Scratch

NUMPY安装

在命令行下依次运行以下命令,除了最后numpy需要重新编译一堆东西耗时比较长外,其他应该没毛病~

sudo apt-get update
sudo apt install python3-pip python3-pil
sudo pip3 install --upgrade numpy 

SDK和tensorflow的安装

首先我们来安装Nv的SDK Manager 当前面的numpy安装完后,我们需要安装对应的sdk。jetson nano的ubuntu安装完后桌面有一个developer zone的快捷链接,在chromium打开后找到download那个按钮进入下载链接。

https://developer.nvidia.com/embedded/downloads

找到Nvidia SDK Manager并且点击下载,默认下载到 ~/Downloads 目录。

../_images/j2_1.png

下载完成后使用命令行安装:

cd ~/Downloads
sudo apt install ./sdkmanager....

第二行的….请自行用tab补完。

接下来安装各种python3依赖的库

sudo apt-get install libhdf5-serial-dev hdf5-tools

安装pip3

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

上面最后一条命令如果大家碰到跟我一样的运行pip就报错:cannot import name ‘main’,那么多半是跟系统自带的pip冲突了,这时候需要删除系统pip再重新安装pip3。运行以下命令:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

之后就漫长的升级过程 ,部分库更新需要重新编译会导致ubuntu卡顿,大家这时候可以去干点别的等大概半个小时再回来~

tensorflow安装

安装tensorflow的准备工作就结束了,下面正式安装tensorflow。注意命令中比官方教程多了–no-cache-dir,这是因为ubuntu镜像中pip配置已经过时了。

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

接下来又是漫长的下载和安装过程,大家可以去干些别的,等半个小时再回来~

安装完成后大家可以测试下tensorflow是否安装成功,注意是python3:

python3
>>>import tensorflow

../_images/j2_2.png

如果 import没报错,那么就安装ok了 ~

安装pytorch

由于大部分同学访问不了google drive,这里将官方预编译好的pytorch wheel包放到百度盘:

链接: https://pan.baidu.com/s/1wMHLauajtYvc_MBDiQwt_g 提取码: tg1i

通过u盘或其他手段考到jetson nano某个目录下,进到这个目录运行以下命令:

sudo pip3 install torch-1.0.0a0+18eef1d-cp36-cp36m-linux_aarch64.whl
sudo pip3 install torchvision

安装traitlets

sudo python3 -m pip install git+https://github.com/ipython/traitlets@master

最后我们还需要安装玩机器学习不可或缺的 jupyter 记事本,最后一行是启动jupyter服务器,一切正常的话会在浏览器弹出jupyter记事本

sudo apt install nodejs npm
sudo pip3 install jupyter jupyterlab
sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager
sudo jupyter labextension install @jupyterlab/statusbar
jupyter lab --generate-config
jupyter notebook

安装jetbot项目

弄了这么久我们只是在为jetbot项目准备开发环境,接下来才是主线任务~

cd
sudo apt install python3-smbus
git clone https://github.com/NVIDIA-AI-IOT/jetbot
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install

接下来我们将jetbot做成一系列系统服务:

cd jetbot/utils
python3 create_stats_service.py
sudo mv jetbot_stats.service /etc/systemd/system/jetbot_stats.service
sudo systemctl enable jetbot_stats
sudo systemctl start jetbot_stats
python3 create_jupyter_service.py
sudo mv jetbot_jupyter.service /etc/systemd/system/jetbot_jupyter.service
sudo systemctl enable jetbot_jupyter
sudo systemctl start jetbot_jupyter

在tf卡建立交换区 swapfile

sudo fallocate -l 4G /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'

最后将jetbot的notebook拷贝到用户根目录下就完成了

cp -r ~/jetbot/notebooks ~/Notebooks