TensorFlow Serving,GPU版安装

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/serving
cd 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.git
cd nccl/
make CUDA_HOME=/usr/local/cuda

sudo make install
sudo mkdir -p /usr/local/include/external/nccl_archive/src
sudo ln -s /usr/local/include/nccl.h /usr/local/include/external/nccl_archive/src/nccl.h

部署mnist模型

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

rm -rf /tmp/mnist_model
bazel build //tensorflow_serving/example:mnist_saved_model
bazel-bin/tensorflow_serving/example/mnist_saved_model /tmp/mnist_model
Training model...

...

Done training!
Exporting trained model to /tmp/mnist_model
Done 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_client
bazel-bin/tensorflow_serving/example/mnist_client --num_tests=1000 --server=localhost:9000

你可能感兴趣的:(Tensorflow)