站点图标 AI技术聚合

在 Docker 上使用 TF Serving 托管模型

在 Docker 上使用 TF Serving 托管模型

原文标题Hosting Models with TF Serving on Docker

在 Docker 上使用 TF Serving 托管模型

将 TensorFlow 模型部署为 REST 端点

训练机器学习 (ML) 模型只是 ML 生命周期中的一步。如果您无法从模型中获得响应,那么 ML 就没有任何意义。您必须能够托管经过训练的模型以进行推理。有多种托管/部署选项可用于 ML,其中最受欢迎的一种是 TensorFlow Serving。[0][1]

TensorFlow Serving 有助于获取经过训练的模型的工件并将其托管以进行推理。使用 TensorFlow Serving 进行推理的最简单方法是 Docker。在本文中,我们将举一个训练模型的示例,然后使用 TensorFlow Serving 和 Docker 托管它,以提供 REST API 进行推理。如果您想直接跳转到代码,请查看此存储库。[0][1]

Table of Contents

  1. Prerequisites/Setup
  2. TensorFlow Serving Architecture
  3. 训练和保存模型
  4. 使用 TensorFlow Serving 和 Docker 托管您的模型
  5. 学分+其他资源和结论

Prerequisites/Setup

对于本文,我们不会深入研究任何实际的模型构建。我们将采用流行的波士顿数据集并训练一个简单的人工神经网络。本文更侧重于托管 ML 模型的基础架构,而不是优化模型性能本身。[0][1]

确保已安装并启动并运行 Docker。要完全阅读本文,请确保对 Docker 命令和 Python 有基本的了解。[0][1]

注意:数据集最初由 Harrison, D. 和 Rubinfeld, D.L. 发布和许可。 “享乐价格和对清洁空气的需求”,J. Environ。经济与管理。[0]

TensorFlow Serving Architecture

TensorFlow Serving 背后的主要理解点是客户端用来执行推理的 Servable 对象。通常,此 Servable 是您将在训练模型后创建的 SavedModelBundle。每个 Servable 都有一个关联的版本,可以在保存模型时指定。如果您愿意,您还可以使用它一次提供多个不同的模型。[0][1]

流程大致如下——

要全面深入了解 TensorFlow Serving 架构,请务必阅读此处的官方文档。[0]

训练和保存模型

我们将首先在波士顿住房数据集上训练一个简单的模型。我们在 train.py 脚本中提供所有这些,确保安装了以下导入。

我们可以直接从 Sklearn 加载波士顿数据集,然后拆分数据集进行训练。

然后我们创建我们的神经网络并训练我们的模型。

脚本的最后一行是正确服务模型的关键。

“boston_model”将是模型名称和目录,我们将在其中指向我们训练的模型工件。创建的子目录“0000001”是包含模型元数据的目录:资产、变量、keras_metadata.pb 和 saved_model.pb。确保运行此脚本并确保在执行后创建以下目录,如下所示。

使用 TensorFlow Serving 和 Docker 托管您的模型

确保 Docker 启动并运行。我们要做的第一件事是使用以下命令拉取 TensorFlow Serving Docker 映像。

拉取镜像后,我们需要启动容器,对于 REST API,我们需要公开端口 8501。请注意,还支持 gRPC,为此公开端口 8500。[0]

如果您运行以下 Docker 命令,您应该会看到您添加的容器名称。

确保在 source 命令中添加项目所在位置的路径。 “MODEL_NAME” 环境变量是您保存模型的目录,这是保存模型的最新版本的位置。请注意,您还可以在运行容器时在此处注入您的容器可能正在使用的其他环境变量。

现在我们有了一个 REST 端点,我们可以使用 Curl 命令发送一个示例调用。对于单个数据点,运行以下命令。[0]

如果您想发送多个调用,您还可以制作一个示例 shell 脚本来迭代有效负载。我们可以将示例数据点打包在 JSON 中,并将其提供给我们的端点。

您可以使用以下命令执行 shell 脚本并查看返回的 10 个结果。

要获得更多创意或进行更大规模的负载测试,您还可以使用 Python requests 库等包。[0]

Conclusion

有关此示例的完整代码,请访问上面的链接。我希望这篇文章是对 TensorFlow Serving 的一个很好的介绍。对于数据科学家来说,了解机器学习的基础设施和托管方面变得比以往任何时候都更加重要。那里有许多托管选项,我在下面附上了我一直在研究的 SageMaker 系列以及其他一些资源,这些资源在我开始使用模型托管和推理时也帮助了我。

Credits/Additional Resources

使用 TF Serving 和 Docker 服务模型[0]

SageMaker Series[0]

使用 Amazon SageMaker 进行 TF 服务[0]

如果您喜欢这篇文章,请随时在 LinkedIn 上与我联系并订阅我的 Medium 时事通讯。如果您是 Medium 新手,请使用我的会员推荐信注册。[0][1][2]

文章出处登录后可见!

已经登录?立即刷新
退出移动版