Win11 + docker + tensorflow serving 完成模型部署

花了半天的时间调通了在Win11 系统下,如何利用docker + tensorflow serving 实现模型部署。记录一下。 

1. 安装docker 

桌面版网址:Docker Desktop - Docker 

安装过程中可能会出现一些问题,我这里参考了 Docker 简介和安装 - Docker 快速入门

2. 利用Docker 安装 tensorflow serving 

docker pull tensorflow/serving

3. 这里是准备模型有两种方法 

先说第一种方法 

(1)直接官网拉取 tensorflow serving 给的例子 ,代码如下 

mkdir -p \tmp\tfserving
cd /tmp/tfserving
git clone https://github.com/tensorflow/serving

第一行  这里建立一个 tem的文件 下面的子文件夹是 tfserving , 注意这里我用的windows 系统 ,所以是斜杠 \ 。

第二行 找到建立的文件路径 

第三行 下载官方的 tensorflow/serving 注意这里面如果没有 git 工具 可以自己下载一个 并且设置好环境变量 网上资料很多 我这里就不写了 

(2) 

docker run -p 8501:8501 --mount type=bind,source=C:/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 '&'

这步输入后得到了 

这时候再打开一个cmd 命令窗口,输入 下面的代码  

(3)

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

结果为 : 

 

这是官方的方法。

第二种 自己建立了一个模型 。

(1)自己训练一个简单的模型 

import pathlib

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

xn = np.array([-1, 0, 1, 2, 3, 4, 5, 6])
yn = np.array([-3, -1, 1, 3, 5, 7, 9, 11])

# single neuron
models = tf.keras.models.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
models.compile(optimizer='sgd', loss='mean_squared_error')
models.fit(xn, yn, epochs=500)
export_dir = 'DL_Model_Save'
tf.saved_model.save(models, export_dir)      # 存放了一个原始训练的 DL 模型

 这时候DL_Model_Save 文件下面是这样的 

Win11 + docker + tensorflow serving 完成模型部署_第1张图片

但是这里面没有版本信息, 所以需要改一下 在  DL_Model_Save 文件下面 建立一个文件下 叫做 

我 assets variables saved_model.pb 放到0001文件夹下面 

Win11 + docker + tensorflow serving 完成模型部署_第2张图片

这里面之所以这样做是因为一定要一个类似版本信息,否则会报错 :

Did you forget to name your leaf directory as a number (eg. '/1/')?

 (2) 剩下的基本和方法1 一样但是需要改一些路径 

docker run -p 8501:8501 --mount type=bind,source=C:/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/DL_Model_Save,target=/models/DL_Model_Save -e MODEL_NAME=DL_Model_Save -t tensorflow/serving '&'

红色地方是与上面第一种方法不同的地方,可以看到就是改了一些路径。 

(3)再打开一个cmd 文件 输入 

curl -XPOST http://localhost:8501/v1/models/DL_Model_Save:predict -d "{\"instances\":[[1],[2]]}"

注意这里面json 数据的格式稍微有点不同 因为是训练模型时候不太一样。 

最终得到结果 : 

 

 

 

你可能感兴趣的:(MLOps,docker,tensorflow,MLOps)