阿里云国际服务代理商:阿里云人工智能PAI-通过镜像使用TensorFlow Serving部署模型服务

ensorFlow Serving是深度学习模型的推理服务引擎,支持将TensorFlow SavedModel格式的模型部署为在线服务,并支持模型热更新与版本管理。通过PAI-EAS的镜像部署方式,您可以快速上线TensorFlow Serving模型服务。

前提准备

模型文件

使用TensorFlow Serving镜像部署要求模型文件存储在OSS,且模型文件的存储目录需满足以下要求:

  • 模型版本目录:每个模型至少包含一个模型版本目录,且必须以数字命名,作为模型版本号,数字越大版本号越新。

  • 模型文件:模型版本目录下存放导出的SavedModel格式的模型文件,服务会自动加载最大模型版本号目录下的模型文件。

准备步骤如下:

  1. 在OSS存储空间中创建模型存储目录(例:oss://examplebucket/models/tf_serving/),详情请参见管理目录。

  2. 将模型文件上传到步骤1创建的目录(您可以下载本文案例TensorFlowServing模型文件使用),得到模型存储目录格式如下:

    tf_serving 
    ├── modelA
    │   └── 1
    │       ├── saved_model.pb
    │       └── variables
    │           ├── variables.data-00000-of-00001
    │           └── variables.index
    │
    ├── modelB
    │   ├── 1
    │   │   └── ...
    │   └── 2
    │       └── ...
    │
    └── modelC
        ├── 1
        │   └── ...
        ├── 2
        │   └── ...
        └── 3
            └── ...

模型配置文件

通过配置文件可以让一个服务同时运行多个模型。如果只需部署单模型服务,可跳过本小节。

请根据如下说明创建配置文件并上传到OSS(模型文件准备小节中给出的案例文件里已有一个模型配置文件model_config.pbtxt,您可直接使用或按需修改)。本案例中将模型配置文件上传到目录oss://examplebucket/models/tf_serving/

其中关键配置说明如下:

参数

是否必选

描述

name

自定义模型名称。建议配置该参数,如果不配置,model_name为空,后续无法调用该模型服务。

base_path

模型存储目录在实例中的路径,部署服务时用于读取模型文件。例如:挂载目录为/models,要加载的模型目录为/models/modelA,则该参数配置为/models/modelA

model_version_policy

表示模型版本加载策略。

  • 不配置该参数:表示默认加载模型最新版本。

  • all{}:表示加载该模型所有版本。示例中modelA模型加载所有版本。

  • latest{}:示例中modelC配置为num_versions: 2,表示加载最新的2个版本,即版本2和3。

  • specific{}:表示加载指定版本。示例中modelB模型加载版本1和2。

version_labels

为模型版本配置自定义标签。如果没有配置version_labels,那么就只能通过版本号来区分模型版本,请求路径为:/v1/models/<model name>/versions/<version number>:predict

如果设置了version_labels,那么就可以请求version label来指向指定的版本号/v1/models/<model name>/labels/<version label>:predict

说明

标签默认只能分配给已成功加载并启动为服务的模型版本。若想要预先为尚未加载的模型版本分配标签,需要在运行命令中设置启动参数--allow_version_labels_for_unavailable_models=true。当前场景化模型部署不支持设置运行命令,请选择自定义模型部署。

部署服务

可以通过以下两种方式部署TensorFlow Serving镜像。

  • 场景化模型部署:适用于基本场景部署。您只需配置几个参数,即可一键部署TensorFlow Serving模型服务。

  • 自定义模型部署:支持灵活调整更多配置选项,比如修改端口、配置模型文件轮询周期等。

重要

TensorFlow Serving模型服务支持配置8501和8500两种端口。

  • 8501:支持HTTP请求,在8501端口启动HTTP或REST服务。

  • 8500:支持gRPC请求,在8500端口启动gRPC服务。

场景化模型部署默认使用8501端口,无法修改。如果您需要使用8500端口,请选择自定义模型部署。

场景化模型部署:

操作步骤如下:

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务。然后在场景化模型部署区域,单击TFServing部署

  3. TFServing部署页面配置参数。关键参数说明如下,其他参数配置说明,请参见自定义部署。

    参数

    描述

    部署方式

    支持以下两种部署方式:

    • 标准模型部署:用于部署单模型服务。

    • 配置文件部署:用于部署多模型服务。

    模型配置

    部署方式选择标准模型部署时,您需要配置模型文件所在的OSS路径。

    部署方式选择配置文件部署时,您需要配置以下参数:

    • OSS:选择模型文件所在的OSS路径。

    • 挂载路径:挂载服务实例中的目标路径,用来读取模型文件。

    • 配置文件:选择模型配置文件所在的OSS路径。

    参数配置示例:

    参数

    单模型示例(部署modelA)

    多模型示例

    服务名称

    modela_scene

    multi_scene

    部署方式

    选择标准模型部署

    选择配置文件部署

    模型配置

    OSSoss://examplebucket/models/tf_serving/modelA/

    • OSSoss://examplebucket/models/tf_serving/

    • 挂载路径:/models

    • 配置文件oss://examplebucket/models/tf_serving/model_config.pbtxt

  4. 参数配置完成后,单击部署

自定义模型部署:

操作步骤如下:

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 推理服务页签,单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 自定义部署页面配置参数,关键参数说明如下,其他参数配置说明,请参见自定义部署。

    参数

    描述

    镜像配置

    官方镜像列表中选择tensorflow-serving和对应的镜像名称。建议选择最新版本。

    说明

    如果服务需要使用GPU,则镜像版本必须选择x.xx.x-gpu

    模型配置

    支持多种方式配置模型文件,这里采用OSS类型。

    • Uri:选择模型文件所在的OSS路径。

    • 挂载路径:挂载服务实例中的目标路径,用来读取模型文件。

    运行命令

    tensorflow-serving的启动参数,选择tensorflow-serving镜像会自动加载命令:/usr/bin/tf_serving_entrypoint.sh,还需设置的参数说明如下。

    单模型部署启动参数:

    • --model_name:模型名称,用于服务请求中的URL。如果不配置,默认名称为model。

    • --model_base_path:用于指定模型存储目录在实例中的路径。如果不配置,默认路径为/models/model

    多模型部署启动参数:

    • --model_config_file:必选。用来指定模型配置文件。

    • --model_config_file_poll_wait_seconds:选填。如果您希望在服务启动后修改模型配置文件的内容,需要配置轮询模型文件的周期,单位为秒。服务会按照配置的时间定期读取模型配置文件的内容。例如--model_config_file_poll_wait_seconds=30表示服务每隔30秒读取一次模型配置文件内容。

      说明

      当模型服务读取新的模型配置文件时,只会执行新配置文件中的内容。例如:旧配置文件中包含模型A,而新配置文件将模型A删除并增加了模型B的配置,那么服务会卸载模型A并加载模型B。

    • --allow_version_labels_for_unavailable_models:选填。默认为false,如果您想预先为尚未加载的模型版本分配标签,需要将该参数配置为true。例如--allow_version_labels_for_unavailable_models=true

    参数配置示例:

    参数

    单模型示例(部署modelA)

    多模型示例

    部署方式

    选择镜像部署

    镜像配置

    选择官方镜像tensorflow-serving > tensorflow-serving:2.14.1

    模型配置

    模型类型选择OSS。

    • Urioss://examplebucket/models/tf_serving/

    • 挂载路径:配置为/models

    运行命令

    /usr/bin/tf_serving_entrypoint.sh --model_name=modelA --model_base_path=/models/modelA

    /usr/bin/tf_serving_entrypoint.sh --model_config_file=/models/model_config.pbtxt --model_config_file_poll_wait_seconds=30 --allow_version_labels_for_unavailable_models=true

    端口号默认为8501,服务将在8501端口启动HTTP或REST服务,支持HTTP请求。若您需要该服务支持gRPC请求,需要执行以下操作:

    • 环境信息端口号修改为8500。

    • 环境信息中打开启用GRPC开关。

    • 服务配置中添加以下配置

      "networking": {
          "path": "/"
      }
  4. 单击部署

相关新闻

联系我们

联系我们

电报:@yunshuguoji

邮件:yunshuguoji@outlook.com

工作时间:早上8:00-晚上11:00

认准电报
认准电报
分享本页
返回顶部