发布时间:2023-03-26 18:30
目前使用的是jetpack4.6,通过刷机后,得到了一个运行Ubuntu18.04版本的tx1。在准备刷入官方提供的一系列组件时,遇到了空间不够的问题,参考网上教程,加入了SSD,扩展了容量,在此基础上研究了配置pytorch和tensorflow。现在总结这段时间的研究经验。
这个首先需要看你的载板接口了,之前用的RTSO-9003载板只有SD卡接口,自然不能安装SSD扩容了。后来换的载板上有m2接口,而且是key B,不过现在的m2固态接口,多数是同时兼容B key和M key的M.2(B+M)key接口。
这里参照的是一位博主的文章《Jetson TX1 加SSD固态硬盘并从硬盘启动》
在Ubuntu中搜索DISKS,可以看到一个和你的固态硬盘容量差不多大的空间区域,点+号
格式化的时候选ext4,并且命名好name,就得到了新的空间。
此时固态硬盘应该已经挂载完成。
下面是要将系统复制到固态
上一步打开磁盘图标自动挂载后,按“ctrl+L”显示挂载路径
假设satassd是你的固态名字,路径为/media/nvidia/satassd
打开终端输入:
sudo cp -ax / \'/media/nvidia/satassd\'
注意不要省略单引号
这一命令将系统复制到SSD
下一步是修改启动路径,修改前应备份配置文件
cd /boot/extlinux
sudo cp extlinux.conf extlinux.conf.original
sudo gedit /boot/extlinux/extlinux.conf
文件:
主要修改的是label那部分,将label那一段复制一遍,构造一个新的label,第一个label是针对ssd描述,第二个label是针对emmc进行描述,
同时第二行DEFAULT的位置,选择默认从ssd启动。
Linux中,一切即文件,配置也是靠修改文件来的。
swap开启时,主要是选择swapfile的位置
cd /home/nvidia
mkdir swap
然后借助git上现成到工具来产生swapfile
git clone https://github.com/jetsonhacks/postFlashTX1.git
cd postFlashTX1
如果选择的位置是/home/nvidia/swap,大小为16g
则
sudo ./createSwapfile.sh -d /home/nvidia/swap -s 16 –a
开启swap的工具
sudo swapon -a
sudo swapoff -a
on对应开启,off对应关闭
用free来看分配的空间
free -hl
安装jetpack components的时候,无论是OTA安装,还是通过电脑安装,都需要使用到网络。
最可靠的联网还是用RJ45口直接连接以太网,当然,如果载板没有有线接口,也可以考虑无线网。不过tx1自身的无线网卡信号检测不行,而且我的载板上也没有天线接口,因此我在USB HUB拓展了一下USB口,然后插了一个USB网卡,这样增强了信号接收的能力。
一个方法是,连接电脑和tx1,通过的是USB连接的方式,利用电脑Ubuntu装上的jetpack4.6安装工具,将组建刷入tx1,在这之中,需要将tx1与电脑连接到一个局域网,网上教程说要用有线连接,而我亲测,可以无线连入同一局域网。
这里的关键是要让tx1和电脑在同一局域网,且tx1能够获得外界的网络,因为安装component的时候,还有部分依赖需要联网才能安装到tx1。
记得中间安装的时候,设置电脑和tx1不要休眠,以防断开。
NVIDIA官方提供了How to Install JetPack的方法。
像TX1这样只有16G的设备,如果直接在内置的EMMC进行OTA安装的时候,应该执行所说的第二种方法。
sudo apt update
apt depends nvidia-jetpack | awk \'{print $2}\' | xargs -I {} sudo apt install -y {}
如果空间扩增后,有了SSD或者SD卡,推荐第一种
sudo apt update
sudo apt install nvidia-jetpack
不过我的TX1加完固态后,空间已经足够,直接完整安装了。
相信折腾过pytorch的知道,一般在一个隔离的环境中安装pytorch、tensorflow等,这样出现问题,或者需要安装多个版本时,就可以避免各个版本相互受到影响。由于TX1是AArch64架构,没有办法直接安装电脑上的Anaconda,而且我也不想自己去研究怎么编译,因此找了Archiconda来安装,一样可以使用conda。
首先去下载安装包,github的地址,下载后执行安装。
然后是利用它创建虚拟环境,这里我后面装的是pytorch1.6,基于python3.6,所以环境也是基于python3.6:
conda create -n xxxx python=3.6
这里下载的时候,可能会出现http 000的错误,不同的人解决方法不一样,我试过换源、https改http都没用,最后是更新了conda解决的。
conda update -n base conda
现在已经可以找到编译好的pytorch和tensorflow了
建立虚拟环境
conda create -n mtorch python=3.6
去官网论坛可以找到pytorch的下载地址。
我这里安装的是1.6版本
各位可以自行摸索最新版本的安装。
激活建立的是虚拟环境XXXX
conda activate xxxx
在虚拟环境下,依次安装库的依赖
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy
最后安装下载好的whl文件,也就是pytorch
pip install torch-1.6.0-cp36-cp36m-linux_aarch64.whl
安装完pytorch后,可以先去环境下测试下pytorch是否正常工作
像我就很不幸,执行下面命令
import torch
出现报错
Illegal instruction(core dumped)
这里查阅了很多网上的博主文章,还是这一位的方法解决了《NVIDIA JETSONTX2 安装 pytorch 出现错误:import torch 出现 Illegal instruction(core dumped)》。
这位博主的方法,主要意思是要你将export OPENBLAS_CORETYPE=ARMV8 加入环境变量里面。
\'\'\'修改环境变量\'\'\'
sudo gedit /etc/profile
把 export OPENBLAS_CORETYPE=ARMV8 加入最后面一行,然后保存
\'\'\'更新环境变量\'\'\'
source /etc/profile
解决这个问题很重要,因为torchvision需要通过pytorch编译安装。
如果没有遇到这一问题,可直接执行torchvision的安装。
首先还是安装依赖
sudo apt-get install libjpeg-dev zlib1g-dev
这里如果有安装提示缺少包的,请换回官方源安装。
然后通过git去下载torchvision的代码,注意,官方的提示,torchvision与pytorch版本是要对应的:
下载
git clone --branch v0.7.0 https://github.com/pytorch/vision torchvision
github的下载速度有时候很慢,可以自行同步到gitee上,然后再用git下载。
cd torchvision
export BUILD_VERSION=0.7.0
python3 setup.py install
不过这里安装最后也会遇到错误
/vision-0.7.0/torchvision/csrc/cpu/decoder/defs.h:12:10: fatal error: libavcodec/avcodec.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
这里参照的一篇文章《NVIDIA Jetson之刷机后配置大全》。
修改 setup.py 文件,把 if has_ffmpeg 改为 if False即可。
如果出现pillow下载失败,只需要执行
pip install \'pillow<7\' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6
至此,基本安装完成,只需要测试下
import torchvision
没有报错即可
以后每次使用的时候,先激活环境,然后再环境里面使用pytorch。我建立的环境叫mtorch,因此激活是
conda activate mtorch
要退出环境就:
conda deactivate
tensorflow的安装就方便多了,直接可以去官网找到教程和下载地址,不像pytorch是去官网的论坛里面找的下载地址。
首先是建立它使用的虚拟环境
conda create -n mtensorflow python=3.6
然后,下载的通过Jetson 下载中心就可以找到。
官网还提供了教程。
这里面下载时候,如果下载完whl文件,直接通过pip命令安装的话
pip3 install tensorflow-2.5.0+nv21.6-cp36-cp36m-linux_aarch64.whl
经过一系列安装后,h5py的安装过程会遇到错误。
因此,必须要
$ sudo apt-get update
$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
尤其是h5py必须按照官网论坛安装
sudo pip3 install -U h5py==2.10.0
不过,最好是按照官网的方法https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html,一路照做。
同样,装完后,在python里面检查一下tensorflow是否成功激活。
import tensorflow as tf
tf.__version__
以后每次使用的时候,先激活环境,然后再环境里面使用tensorflow,这里我的环境是mtensorflow:
conda activate mtensorflow
keras和tensorflow具有对应的关系,这个网上已经有许多列举,目前我从github上找到的关系表:
详细可以见keras-team/keras。
我这里用的是tensorflow2.5,只需要按照2.5版本的keras,用pip list查看后发现已经装好了。因此就不用装了。