實操將TensorFlow模型部署成Docker服務化

背景

深度學習模型如何服務化是一個機器學習領域工程方面的熱點,如今業內一個比較主流的作法是將模型和模型的服務環境作成docker image。這樣作的一個好處是屏蔽了模型對環境的依賴,由於深度學習模型在服務的時候可能對各類框架版本和依賴庫有要求,解決運行環境問題一直是個使人頭痛的事情。git

將模型經過docker服務化後意味着深度學習模型能夠在各類環境使用,好比雲端直接經過k8s調度拉起,或者在一些IOT領域,比方說一些智能攝像頭也能夠經過拉起鏡像服務的方式使用模型。github

 

看來一些網上的資料,發現大部分資料沒有講得很清楚如何容器化部署TF模型,今天把我本身的學習筆記分享下。docker

詳細流程

模型部署分4步,首先要準備一個TensorFlow模型,還要準備一個docker環境,接着構建本身的docker服務,而後發送請求給docker服務作測試。api

1.準備TensorFlow模型

能夠直接clone這個項目:https://github.com/tensorflow/servingrestful

而後找到如下這個路徑下的叫「saved_model_half_plus_two_cpu」這個模型,這個模型比較簡單,就是將預測數據除以2再加2。舉個例子,假設預測數據是5,那麼預測結果是5/2+2=4.5框架

/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu

2.準備Docker環境

直接在這個地址下載:https://docs.docker.com/get-docker/curl

安裝完成後能夠在Terminal中輸入docker -v,返回版本號信息說明安裝完成:機器學習

 

3.構建TensorFlow模型服務

(1)首先要從docker倉庫拉取TensorFlow Serving學習

docker pull tensorflow/serving

(2)構建模型服務測試

命令以下:

docker run -t --rm -p 8501:8501 -v "{model_path}:/models/half_plus_two"  -e MODEL_NAME=half_plus_two tensorflow/serving &
  • 其中{model_path}須要替換成步驟一中下載好的模型

  • -p表示端口號,8500是grpc通訊端口,8501是restful_api通訊端口

  • /models/half_plus_two表示把本地模型放到了docker中的/models/half_plus_two路徑下

若是不報錯,這個服務就順利拉起來了。

4.測試docker服務

能夠經過curl命令發送預測樣本給已經部署好的docker服務,具體命令以下:

curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://localhost:8501/v1/models/half_plus_two:predict

預測樣本是「instances": [1.0, 2.0, 5.0],預測結果以下,結果是正確的,每一個輸入值都被除以2再加上2:

"predictions": [2.5, 3.0, 4.5]
相關文章
相關標籤/搜索