Atlas 200I DK A2开发者套件 aarch64[arm64]源码编译tensorflow2.6.5,将tf代码部署到开发板上
曾尝试build tensorflow2.2.0太多莫名其妙的错误,遂放弃arm64可直接pip install的为tensorflow>=1.10.0,似乎与tf_plugin有兼容性问题,遂放弃。
建议全程科学上网
参考文档
曾尝试build tensorflow2.2.0太多莫名其妙的错误,遂放弃
arm64可直接pip install的为tensorflow>=1.10.0,似乎与tf_plugin有兼容性问题,遂放弃
一、安装HDF5
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz
tar -zxvf hdf5-1.10.5.tar.gz
cd hdf5-1.10.5/
./configure --prefix=/usr/include/hdf5
make
make install
配置环境变量
安装H5PY,可能由于缺少模块报错,需根据报错信息安装
pip3 install Cython==0.29
pip3 install pkgconfig
pip3 install numpy==1.19.2
#不加--no-build-isolation参数似乎会默认使用最高版本cython导致编译错误
pip3 install --no-build-isolation h5py==3.1.0
二、bazel3.7.2
文档中的两种构建方式均失败(可能是内存不足导致),
最后选择直接使用Assets中的arm64的二进制文件
pip install keras_preprocessing
apt-get install build-essential zip unzip
wget https://github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-linux-arm64
chmod -x bazel-3.7.2-linux-arm64
cp bazel-3.7.2-linux-arm64 /usr/local/bin/bazel
bazel --batch version
三、tensorflow
若非必要不建议从源码编译太费时间了,可以采用如下方法,使用华为云的whl安装
pip3 install tensorflow==2.6.5 --no-index --find-links https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/MindX/OpenSource/python/index.html --trusted-host ascend-repo.obs.cn-east-2.myhuaweicloud.com
开始准备build
参考华为文档,完成准备工作
--local_ram_resources=2048指定bazel的RAM使用限制
cd tensorflow-2.6.5
bazel build --config=opt --local_ram_resources=2048 //tensorflow/tools/pip_package:build_pip_package
编译根据硬件条件不同需要2h-若干天不等,做好准备
若编译失败需在当前目录下执行 bazel clean --expunge 后再重新build
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
#whl名根据环境不同会有所不同
pip install /tmp/tensorflow_pkg/tensorflow-2.6.5-cp38-cp38m-linux_aarch64.whl
常见错误
1.文件无法下载,可能是链接失效或网络问题

解决方案:将文件事先下载到本地,如上图,箭头所指为下载地址,根据红框内确定需要修改的文件路径,这里即为/root/Dowloads/tf2.6.5t/ensorflow-2.6.5/third_party/runtime/worspace.bzl,在这个文件中找到对应包的位置,在url中间添加 "file://PATH", 不要忘记逗号,PATH为下载下来文件在本机的路径例如:/root/Dowloads/needed/***.tar.gz(可参考华为文档中对nsync源码包的修改方法)
2. Internal error thrown during build. Printing stack trace: java.lang.OutOfMemoryError: Java heap space
解决方案:内存不足,按上述命令添加参数--local_ram_resources=2048具体数值根据内存大小决定
四、安装tf_plugin
下载页面:资源下载中心-昇腾社区 (hiascend.com)
下载相应版本,我下的是Ascend-cann-tfplugin_7.0.0_linux-aarch64.run
按照参考安装完毕
验证:
import npu_device as npu
npu.open().as_default() # 初始化NPU为默认设备
可能报错缺少各种模块,按照提示信息安装即可
输出:
Npu device instance /job:localhost/replica:0/task:0/device:NPU:0 created
五、网络模型迁移
待续
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)