墨塵的模型部署4--docker鏡像tensorflow serving的多模型多版本控制(四)

tensorflow serving部署鏡像中的模型多版本控制/指定版本預測

當模型存在多個版本時,可同時加載,並根據需要選擇合適模型預測,此時需要配置models.config文件,並指定–model_config_file參數。模型名model和model1下都有4個版本模型,如下圖所示。
在這裏插入圖片描述
配置models.config文件,json格式寫法:

  • config字段,指定具體模型
  • base_path表示容器內的模型文件路徑,不是本地路徑
  • specific指定具體要加載的版本號
# 具體的models.config文件
model_config_list: {
    config: {
        name: "model",
        base_path: "/models/model",
        model_platform: "tensorflow",
        model_version_policy: {
          specific: {
              versions:1,
              versions:2,
              versions:3,
              versions:4
          }
        }
           
    },
    config: {
        name: "model1",
        base_path: "/models/model1",
        model_platform: "tensorflow",
        model_version_policy: {
            specific: {
            versions:3,
            versions:4
            }
        },
    }
}

models.config文件準備好後,使用tensorflow servomg docker進行掛載

# 兩類模型model和model1都需要掛載,models.config也需要掛載
# 同時指定tensorflow/serving內部的tensorflow_model_server參數model_config_file
docker run --rm -p 8501:8501 \
--mount type=bind,source=$(pwd)/model/,target=/models/model \
--mount type=bind,source=$(pwd)/model1/,target=/models/model1 \
--mount type=bind,source=$(pwd)/models.config,target=/models/models.config \
-t tensorflow/serving --model_config_file=/models/models.config

根據models.config的配置,加載model/1、2、3、4,共4個模型;加載model1/3、4,共2個模型,驗證如下:

# 返回models.config中model1的所有指定的模型版本
curl http://localhost:8501/v1/models/model1
# 返回model1/3版本模型
curl http://localhost:8501/v1/models/model1/versions/3

在這裏插入圖片描述
使用models.config會使得docker run指令特別長,也可以仿照內容3.使用最簡鏡像製作本地已訓練模型的鏡像製作models.config配置的鏡像。具體如下:

# 以後臺運行方式開啓一個tensorflow/serving的守護進程
docker run -d --name serving_base tensorflow/serving
# 複製本地SavedModel到容器存放models的文件夾下
docker cp ./model serving_base:/models/model
docker cp ./model1 serving_base:/models/model1
docker cp ./models.config serving_base:/models/models.config
# docker commit提交修改製作新鏡像my_model_3,不需要設置環境變量
docker commit serving_base my_model_3
# 啓用my_model_0鏡像,此時不需要指定-v/--mount,-e等參數,需要指定model_config_file參數
docker run -it -p 8501:8501 my_model_3 --model_config_file=/models/models.config

docker cp命令注意事項(與linux cp相似):

docker cp src_path dest_path
  • dest_path不存在時,會創建dest_path目錄,並將src_path目錄下的內容拷貝進去
  • dest_path存在時
    若src_path以"/.“結尾,將src_path目錄下的內容拷貝進去
    若src_path不以”/."結尾,將src_path整個目錄拷貝進去
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章