TensorFlow Serving,GPU版安装

来源:互联网 发布:辐射4提取脸部数据 编辑:程序博客网 时间:2024/05/29 17:36

TensorFlow Serving,GPU

Tensorflow serving 是一个开源的工具,主要用来部署训练好的模型,进行Inference。
Tensorflow serving Github地址
本文主要介绍tensorflow serving的安装,支持GPU模型。

安装依赖

Bazel

TensorFlow Serving 要求0.4.5以上的Bazel。Bazel 的安装说明here

  1. 下载安装脚本here。以 bazel-0.4.5-installer-linux-x86_64.sh为例子,
chmod +x bazel-0.4.5-installer-linux-x86_64.sh./bazel-0.4.5-installer-linux-x86_64.sh --user
  1. 列表内容

    加入环境变量到 ~/.bashrc中

export PATH="$PATH:$HOME/bin"

gRPC

使用 pip 安装,很方便。

sudo pip install grpcio

Packages

其他需要的依赖包

sudo apt-get update && sudo apt-get install -y \        build-essential \        curl \        libcurl3-dev \        git \        libfreetype6-dev \        libpng12-dev \        libzmq3-dev \        pkg-config \        python-dev \        python-numpy \        python-pip \        software-properties-common \        swig \        zip \        zlib1g-dev

源码安装

git clone --recurse-submodules https://github.com/tensorflow/servingcd serving

官网的例子没有使用GPU,所以部署自己的模型的时候,速度会比较慢(InceptionV3可能要10+s)。支持GPU版本的配置。compile_tensorflow_serving.sh
请根据自己的GPU和文件路径之类的做相应的替换。
执行以下命令,就会进行编译了 server了。

./compile_tensorflow_serving.sh

编译成功的话,model server在以下路径执行。
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server

如果external/nccl_archive/src/nccl.h: No such file or directory错误,需要另外安装nccl

git clone https://github.com/NVIDIA/nccl.gitcd nccl/make CUDA_HOME=/usr/local/cudasudo make installsudo mkdir -p /usr/local/include/external/nccl_archive/srcsudo ln -s /usr/local/include/nccl.h /usr/local/include/external/nccl_archive/src/nccl.h

部署mnist模型

训练一个简单的模型,然后保存。细节可以参考Basic Serving Tutorial

rm -rf /tmp/mnist_modelbazel build //tensorflow_serving/example:mnist_saved_modelbazel-bin/tensorflow_serving/example/mnist_saved_model /tmp/mnist_modelTraining model......Done training!Exporting trained model to /tmp/mnist_modelDone exporting!

启动tensorflow model server,

bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/tmp/mnist_model/

这时候使用nvidia-smi查看显存状态,可以看到server是否已经正常使用GPU。

测试mnist的效果

bazel build //tensorflow_serving/example:mnist_clientbazel-bin/tensorflow_serving/example/mnist_client --num_tests=1000 --server=localhost:9000
原创粉丝点击