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

背景

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

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

 

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

詳細流程

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

1.準備TensorFlow模型

可以直接clone這個項目:https://github.com/tensorflow/serving

然後找到以下這個路徑下的叫“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/

安裝完成後可以在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]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章