Nvidia Jetson AGX Orin 初体验(四)安装MindSpore
把一切边缘设备都装上MindSpore可能是张小白的梦想。
打开MindSpore官网:
一如既往地没有aarch64 Linux的版本。
1、安装Anaconda
首先登陆orin:
去Anaconda官网下载aarch64的安装包:
将其传到orin:
安装: bash ./Anaconda3-2021.11-Linux-aarch64.sh
..
回答yes:
回车继续:
耐心等待安装结束:
yes初始化一下吧:
source ~/.bashrc
这就已经进入了conda环境了。
2、创建python 3.7.5的conda环境
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
conda create -n py375 python=3.7.5
按Y继续:
进入Python 3.7.5环境:
对比 https://zhuanlan.zhihu.com/p/473273579 Nvidia Jetson Nano B01初体验 一文,张小白居然安装成功了Anaconda环境,深感欣慰!
3、安装gmp 6.1.2
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
xz -d gmp-6.1.2.tar.xz
tar -xvf gmp-6.1.2.tar
cd gmp-6.1.2
./configure
make -j8
sudo make install
4、升级pip
python -m pip install --upgrade pip
5、安装系统依赖包:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl
...
6、安装cmake 3.23
打开 https://github.com/Kitware/CMake/releases/
wget https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-aarch64.sh
试着装一下:
bash ./cmake-3.23.1-linux-aarch64.sh
。。
回答Y
再回答y
好像只是解压了一下。。
export PATH=~/cmake-3.23.1-linux-aarch64/bin:$PATH
并将其加入到.bashrc中。
cmake --version
7、patch 2.5.4
wget http://ftp.gnu.org/gnu/patch/patch-2.5.4.tar.gz
tar zxvf patch-2.5.4.tar.gz
cd patch-2.5.4
./configure
make -j8
sudo make install -j8
patch --version
8、Flex 2.6.4
sudo apt-get install flex
flex --version
已经装好了。
9、wheel 0.37.1
pip install wheel
也已经有了。
10、openssl 1.1.1
wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.tar.gz
tar -zxvf OpenSSL_1_1_1g.tar.gz
cd openssl-OpenSSL_1_1_1g/
./config --prefix=/usr/local/openssl
make -j8
sudo make install -j8
执行:
export OPENSSL_ROOT_DIR=/usr/local/openssl
并将其加入~/.bashrc
11、NUMA 2.0.12-1
sudo apt-get install libnuma-dev
12、gcc 7.3.0
sudo apt-get install -y build-essential m4 libgmp-dev libmpfr-dev libmpc-dev
wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
tar -xzf gcc-7.3.0.tar.gz
cd gcc-7.3.0
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j8
报错了!
查询解决方案:https://blog.csdn.net/weixin_46584887/article/details/122538399
根据解决方案来处理一下:
修改 libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
157行注释掉:
250行左右修改如下:
重新make -j8
编译成功。
sudo make install -j8
编译后的处理:
cd /usr/bin
sudo mv gcc gcc9.4
sudo mv g++ g++9.4
sudo ln -s /usr/local/bin/gcc gcc
sudo ln -s /usr/local/bin/g++ g++
gcc --version
g++ --version
13、安装autoconf、libtool、automake
检查autoconf:
已有。
wget https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
cd libtool-2.4.6/
tar -xzf libtool-2.4.6.tar.gz
make -j8
sudo make install
libtool --version
检查automake
没有。
wget http://ftp.gnu.org/gnu/automake/automake-1.16.tar.gz
tar -xzf automake-1.16.tar.gz
cd automake-1.16
./configure
make -j8
sudo make install
automake --version
14、源码编译mindspore 1.6.1
git clone https://gitee.com/mindspore/mindspore.git -b r1.6
cd mindspore
照例修改 scripts/build/build_mindspore.sh
将第111行改为:
开始编译:
cd mindspore
./build.sh -e gpu -j8
耐心等待编译结束:
。。。
。。。
检查build/package下的编译结果:
可见:
mindspore_gpu-1.6.1-cp37-cp37m-linux_aarch64.whl 已生成。
15、安装mindspore 1.6.1 aarch64 GPU版
pip install ./mindspore_gpu-1.6.1-cp37-cp37m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
16、验证mindspore 1.6.1 aarch64 GPU版
python -c "import mindspore;mindspore.run_check()"
结果能出来,但是时间比较长。看输出好像是orin的CUDA版本为11.4,而MindSpore建议的CUDA版本是11.1。
编辑文件 test.py:
import numpy as np
from mindspore import Tensor
import mindspore.ops as ops
import mindspore.context as context
context.set_context(device_target="GPU")
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))
python test.py
这个倒是验证得很快,几乎一秒钟就出来了。。
终于,MindSpore漫游世界,又多了一环。
17、使用MindSpore自制版跑通LeNet网络
张小白本来想结束本文,后来想一想,前面刚试完 MindSpore for Atlas 200DK,虽然跑应用比较折腾(需要在开发环境训练,再到运行环境推理),但是至少能试出来结果。那么,MindSpore aarch64 的GPU版本能否顺利完成呢?
(1)下载MindSpore的models代码仓:
(2)下载MNIST数据集
cd models/official/cv/lenet
mkdir MNIST
mkdir ckpt
cd MNIST
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
gzip -d *.gz
mkdir train
mkdir test
mv train*ubyte train/
mv t10k* test/
sudo apt install tree
tree
cd ..
(3)安装必要的依赖包
pip install pyyaml
sudo apt install python*-decorator
pip install decorator -i https://pypi.tuna.tsinghua.edu.cn/simple
(4)训练
python train.py --data_path=./MNIST/ --device_target="GPU" --ckpt_path=./ckpt
成功完成训练,貌似速度还挺快的。是不是真像说的那样赶上了3050卡的速度?
ckpt下生成了ckpt文件:
(5)评估
下面开始评估:
cd ~/models/official/cv/lenet$
python eval.py --data_path ./MNIST --ckpt_path ./ckpt/checkpoint_lenet-1_1875.ckpt --device_target="GPU"
精度为 0.97,还挺高的。
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)