在ARM64平台下Anaconda虚拟环境安装TensorFlow和tensorflow-serving

环境:python : 3.7.1 (root)

​ tensorflow : 2.0.0 (tf2)

​ pandas : 1.3.5 (tf2)

​ numpy : 1.21.6 (tf2)

使用虚拟环境背景:

docker 容器安装证书出现问题 导致无法进行镜像拉取,后面使用docker安装tensorflow-serving 时已解决docker问题。

1.安装Anaconda

1、查看linux的硬件设施:在终端下输入

uname -a

输出结果:

Linux kylin …….kylin.server-generic #kylin SMP …… aarch64 aarch64 aarch64 GNU/Linux

从结果可以看出它的硬件设施为aarch64,这个硬件也是属于ARM的。

关于如何在arm架构下安装anaconda

一个是miniconda3(https://repo.anaconda.com/miniconda/),

二是Archiconda3((https://github.com/Archiconda/build-tools/releases/download/0.2.2/Archiconda3-0.2.2-Linux-aarch64.sh))

这里采用第二种archiconda3。

2.下载archiconda到linux,并且运行

bash Archiconda3-0.2.2-Linux-aarch64.sh

3、运行完后,在终端输入python / conda,可以验证是否安装成功.

  1. conda 创建环境 略
  2. 进入conda 环境 略

2.安装前环境配置(后续也可以使用docker直接搭建)

由于安装tensorflow 依赖 h5py ,而 h5py 依赖 HDF5 ,需要先编译安装HDF5 ,否则使用 pip 安装 h5py 会报错
1.1安装HDF5
我们从源码进行安装,对于源码安装都可以参考下面步骤。

  • 从官网下载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

这里需要注意执行配置的时候最好指定安装目录,方便管理。

  • 配置环境变量

打开./bashrc文件内容命令如下

vim ~/.bashrc

在./bashrc内容的最末尾加上下面两行。如果–prefix路径和我不一样,需要改成你安装的hdf5路径

export PATH=$PATH:/usr/include/hdf5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/include/hdf5/lib

最后source一下使其生效

source ~/.bashrc

需要注意的是在./bashrc添加环境变量。我们遇到的大部分下面ImpoerError找不到文件的问题都可能是没用添加到环境变量。可以先查看下对应的包有没安装,如果安装了还报下面的错误应该把环境变量添加上。

ImportError: hdf5.so.40: cannot open shared object file: No such file or directory

1.2 安装h5py

安装h5py直接使用pip安装即可,也可以用源码安装

安装h5py依赖包,安装h5py

pip install Cython
 
pip install h5py==2.8.0

2.安装TensorFlow
安装Tensorflow由于经常断连,直接先下载编译好的whl包安装

git上有现在做好的aarch64,tensorflow的包:地址如下

tensorflow-on-arm (https://github.com/lhelontra/tensorflow-on-arm/releases)

找到对应的release下载安装,这里我选了tensorflow2.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b41R9yXA-1652063695776)(/Users/xuyefang/Library/Application Support/typora-user-images/image-20220427170333235.png)]

用pip安装whl文件

pip install tensorflow-2.0.0-cp37-none-linux_aarch64.whl

解决docker无法拉取问题,待整理

2. 基于docker 安装 tensorflow-serving

原因:arm架构采用普通部署比较麻烦,加上服务器上依赖不全,加上官方推荐使用docker部署,遂尝试多次选择放弃。

2.1 拉取镜像

​ > 服务器采用的是Arm64架构,使用docker直接pull 将会存在运行报错 ,tensorflow/servinghub.docker.com中找只有Linux/amd64的,这里使用 来自linux amd64(x86_64)主机通用的arm内核上针对liunx交叉编译的项目。

  • 拉取镜像

    docker pull emacski/tensorflow-serving:latest
    

2.2 启动测试

  • 创建文件夹用于拉取测试模型

    # 创建 /home/conda/tensorflowDemo
    git clone https://github.com/tensorflow/serving
    
  • 启动

    TESTDATA="${pwd}/serving/tensorflow_serving/servables/tensorflow/testdata"
    
    docker run -t --rm -p 8051:8051 -v     "$TESTDATA"/saved_model_half_plus_two_cpu:/models/half_plus_two" -e     MODEL_NAME=half_plus_two emacski/tensorflow-serving:latest
    
  • 测试

    curl -d '{"instances":[1.0,2.0,5.0]}' -X POST   http://localhost:8051/v1/models/half_plus_two:predict
    
  • 正常输出

    {
    	"predictions":{[2.5,3.0,4.5]}
    }
    
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐