你們習慣使用TensorFlow進行模型的訓練、驗證和預測,但模型完善以後的生產上線流程,就變得五花八門了。針對這種狀況Google提供了TensorFlow Servering,能夠將訓練好的模型直接上線並提供服務。在2017年的TensorFlow開發者Summit上便提出了TensorFlow Serving。
傳送門:https://www.youtube.com/watch?v=q_IkJcPyNl0&list=PLOU2XLYxmsIKGc_NBoIhTn2Qhraji53cv&index=13
但那時候客戶端和服務端的通訊只支持gRPC。在實際的生產環境中比較普遍使用的C/S通訊手段是基於RESTfull API的,幸運的是從TF1.8之後,TF Serving也正式支持RESTfull API通訊方式了。python
TF Serving服務框架git
基於TF Serving的持續集成框架仍是挺簡明的,基本分三個步驟:github
TF Serving工做流程docker
TF Serving的工做流程主要分爲如下幾個步驟:api
TF Serving客戶端和服務端的通訊方式有兩種(gRPC和RESTfull API)框架
目前TF Serving有Docker、APT(二級制安裝)和源碼編譯三種方式,但考慮實際的生產環境項目部署和簡單性,推薦使用Docker方式。curl
# docker pull tensorflow/serving
示例代碼中包含已訓練好的模型和與服務端進行通訊的客戶端(RESTfull API形式不須要專門的客戶端)優化
# mkdir -p /tmp/tfserving # cd /tmp/tfserving # git clone https://github.com/tensorflow/serving
# docker run -p 8501:8501 \ --mount type=bind,\ source=/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,\ target=/models/half_plus_two \ -e MODEL_NAME=half_plus_two -t tensorflow/serving &
這裏須要注意的是,較早的docker版本沒有「--mount」選項,好比Ubuntu16.04默認安裝的docker就沒有(個人環境是Ubuntu 18.04)。url
# curl -d '{"instances": [1.0, 2.0, 5.0]}' \ -X POST http://localhost:8501/v1/models/half_plus_two:predict
返回結果,spa
# { "predictions": [2.5, 3.0, 4.5] }
目前TF Serving有Docker、APT(二級制安裝)和源碼編譯三種方式,但考慮實際的生產環境項目部署和簡單性,推薦使用Docker方式。
# docker pull tensorflow/serving
# mkdir -p /tmp/tfserving # cd /tmp/tfserving # git clone https://github.com/tensorflow/serving
# python tensorflow_serving/example/mnist_saved_model.py models/mnist
# docker run -p 8500:8500 \ --mount type=bind,source=$(pwd)/models/mnist,target=/models/mnist \ -e MODEL_NAME=mnist -t tensorflow/serving
這裏須要注意的是,較早的docker版本沒有「--mount」選項,好比Ubuntu16.04默認安裝的docker就沒有(個人環境是Ubuntu 18.04)。
# python tensorflow_serving/example/mnist_client.py --num_tests=1000 --server=127.0.0.1:8500
返回結果,
# Inference error rate: 11.13%
這裏須要注意的是,直接運行mnist_client.py會出現找不到「tensorflow_serving」的問題,須要手動安裝,
# pip install tensorflow-serving-api
TF Serving官方文檔:https://www.tensorflow.org/serving/
做者:EddyLiu2017 連接:https://www.jianshu.com/p/afe80b2ed7f0 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。