使用 docker 安装 TensroFlowServing 并部署机器学习模型

这篇博客介绍了如何使用Docker安装TensorFlow Serving,部署机器学习模型,并提供了Python客户端调用示例。详细步骤包括环境准备、Docker安装、模型部署和客户端接口的使用。着重强调了TensorFlow Serving在生产环境中对模型更新的支持和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

官方指南:TensorFlow (google.cn)

Github:tensorflow/serving: A flexible, high-performance serving system for machine learning models (github.com)

环境准备

Linux 安装 docker 可参考:Ubuntu 安装 Docker 20.10.11-优快云博客

docker 安装

官方手册:TensorFlow Serving with Docker | TFX (google.cn)
Docker 仓库地址:tensorflow/serving - Docker Image | Docker Hub

# 拉取镜像
docker pull tensorflow/serving:2.7.0

# 创建项目文件夹并进入
mkdir tf_serving && cd $_

# 下载演示模型
git clone https://github.com/tensorflow/serving
# 定义演示模型路径
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

# 启动 TensorFlow service 容器并打开 REST API 端口
docker run -t --rm -p 8501:8501 \
  -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
  -e MODEL_NAME=half_plus_two \
  tensorflow/serving:2.7.0

# half_plus_two , which generates `0.5 * x + 2` for the values of `x` we provide for prediction.

# 使用 predict API 查询模型
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
    -X POST http://localhost:8501/v1/models/half_plus_two:predict

# Returns => { "predictions": [2.5, 3.0, 4.5] }
  • 端口
    • 端口 8500:gRPC
    • 端口 8501:REST API
  • 环境变量
    • MODEL_NAME:模型名,默认值 model
    • MODEL_BASE_PATH:模型基础路径,默认值 /models

当 docker 启动 ModelServer 时,容器内将按如下方式启动:

tensorflow_model_server --port=8500 --rest_api_port=8501 \
  --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME}

部署模型

docker 部署

docker run -p 8500:8500 -p 8501:8501 \
  --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
  --mount type=bind,source=/path/to/my/models.config,target=/models/models.config \
  -t tensorflow/serving --model_config_file=/models/models.config

TensorFlow Serving 支持热更新模型,会自动加载版本号最大的模型。
模型文件夹结构如下:

/models/my_model
    ├── 1  # 版本号
	│   ├── assets/
	│   ├── variables/
	│   └── saved_model.pb	
    ├── ...
    └── N
	    ├── assets/
		├── variables/
		└── saved_model.pb

导出模型

  • Keras Sequential 模式建立的模型使用 saved.model 导出后可以直接部署。

  • 通过继承 tf.keras.Model 类建立的模型,使用 Serving 部署时,对 saved.model 文件有更多要求:

    • 需要导出的方法,要使用 @tf.function 装饰,并指定 input_signature 参数,以显式说明输入的形状。
    • 导出时,tf.saved_model.save 需要通过 signature 参数提供待导出函数的签名。自定义的模型可能有多个方法需要导出,需要告诉 Serving 每个方法在被客户端调用时的函数名。

继承 tf.keras.Model 类建立的模型导出示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值