深度学习_模型导出与部署(8)

5.6 Web与模型服务对接逻辑

学习目标

  • 目标
    • 了解线上使用、部署模型的完整流程
    • 掌握深度学习模型的部署架构
  • 应用

完整过程为:

用到的技术:

  • Tensorflow serving
  • grpc+protobuf
  • Flask

5.5 模型导出

学习目标

  • 目标
  • 应用
    • 应用tf.saved_model.simple_save完成模型导出

5.4.1 keras 模型进行TensorFlow导出

Tensorflow Serving 使用的模型必须已固定格式导出

from nets.ssd_net import SSD300
from keras import backend as K
import tensorflow as tf
import os
  • 使用tf.saved_model.simple_save工具进行导出
def save_model_for_serving(verion=1, path="./serving_model/commodity/"):
    # 2、导出模型过程
    # 路径+模型名字:"./model/commodity/"
    export_path = os.path.join(
        tf.compat.as_bytes(path),
        tf.compat.as_bytes(str(verion)))

    print("正在导出模型到 %s" % export_path)

    # 模型获取
    model = SSD300((300, 300, 3), num_classes=9)
    model.load_weights("./ckpt/fine_tuning/weights.13-5.18.hdf5")

    with K.get_session() as sess:
        tf.saved_model.simple_save(
            sess,
            export_path,
            inputs={'images': model.input},
            outputs={t.name: t for t in model.outputs}
        )


if __name__ == '__main__':
    save_model_for_serving(verion=1, path="./serving_model/commodity/")

Docker部署环境使用介绍

5.7 TF Serving 与 Web开启服务

学习目标

  • 目标
  • 应用
    • 应用TensorFlow Serving完成模型服务运行

4.8.1 TensorFlow Serving

TensorFlow Serving是一种灵活的高性能服务系统,适用于机器学习模型,专为生产环境而设计。TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API。TensorFlow Serving提供与TensorFlow模型的开箱即用集成,但可以轻松扩展以提供其他类型的模型和数据。

4.8.2 安装Tensorflow Serving

安装过程详细参考官网

https://www.tensorflow.org/serving/setup

5.7.1 TensorFlow Serving Docker

  1. 获取最新TF Serving docker镜像

    docker pull tensorflow/serving
    
  2. 查看docker镜像

    docker images
    
  3. 运行tf serving(即创建一个docker容器来运行)

    docker run -p 8501:8501 -p 8500:8500 --mount type=bind,source=/home/ubuntu/detectedmodel/commodity,target=/models/commodity -e MODEL_NAME=commodity -t tensorflow/serving
    

    说明:

    • -p 8501:8501 为端口映射,-p 主机端口:docker容器程序(tf serving)使用端口,访问主机8501端口就相当于访问了tf serving程序的8501端口
    • tf serving 使用8501端口对外提供HTTP服务,使用8500对外提供gRPC服务,这里同时开放了两个端口的使用
    • --mount type=bind,source=/home/ubuntu/detectedmodel/commodity,target=/models/commodity 为文件映射,将主机(source)的模型文件映射到docker容器程序(target)的位置,以便tf serving使用模型,target参数为/models/我的模型
    • -e MODEL_NAME=commodity设置了一个环境变量,名为MODEL_NAME,此变量被tf serving读取,用来按名字寻找模型,与上面target参数中我的模型对应
    • -t 为tf serving创建一个伪终端,供程序运行
    • tensorflow/serving为镜像名
  4. 查看serving是否运行

    docker ps   # 查看正在运行的docker
    docker ps --all  # 查看所有运行的docker,包括停止和未启动异常退出的
    docker stop 容器ID(CONTAINER ID)或容器名称(NAMES) # 停止运行中的docker,CONTAINER ID可以只输入前几位,能区分开不同的容器即可
    docker start 容器ID(CONTAINER ID)或容器名称(NAMES) # 启动停止的docker
    

5.7.2 案例操作:commodity模型服务运行

  • 1、运行命令
docker run -p 8501:8501 -p 8500:8500 --mount type=bind,source=/Users/huxinghui/workspace/ml/detection/ssd_detection/ssd/serving_model/commodity,target=/models/commodity -e MODEL_NAME=commodity -t tensorflow/serving
  • 2.查看是否运行
itcast:~$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED              STATUS              PORTS                              NAMES
ed3a36a07ba8        tensorflow/serving   "/usr/bin/tf_serving…"   About a minute ago   Up About a minute   0.0.0.0:8500-8501->8500-8501/tcp   vigorous_goodall

TensorFlow Client对接模型服务

Web Server开启

猜你喜欢

转载自blog.csdn.net/qq_31784189/article/details/112723987