托管多个 pytorch 模型文件进行推理的最佳方法?

问题描述 投票:0回答:1

背景:

  • 我正在使用端到端深度学习 TTS 框架(你给它文本输入,它会返回一个 wav 对象)
  • 我在 Docker 容器中创建了一个 FastAPI 端点,它使用 TTS 框架进行推理
  • 我的前端客户端将访问此 FastAPI 端点以在 GPU 服务器上进行推理
  • 我将在负载均衡器(haproxy)后面有多个 docker 容器,所有容器都运行相同的 FastAPI 端点映像

我的问题:

  • 存储选择:部署多个 Docker 容器时托管模型文件的推荐方法是什么?我应该使用 Docker 卷,还是建议使用 S3 或 Digital Ocean Spaces 等云存储解决方案来进行集中模型存储?
  • 延迟问题:从云存储获取模型时如何最大限度地减少延迟?是否可以实施特定的技术或优化(缓存、部分下载等)来减少延迟的影响,特别是在不同模型之间切换进行推理时?

我仍在学习 mlops,所以我感谢任何帮助。

python deep-learning pytorch devops mlops
1个回答
0
投票

托管多个 PyTorch 模型文件以进行推理通常涉及设置可以按需加载和服务这些模型的服务器或服务。以下是实现这一目标的一些常见方法:

使用 Flask 或 FastAPI 的 RESTful API:

使用 Flask 或 FastAPI 等 Web 框架构建 RESTful API。 为每个 PyTorch 模型创建端点。 应用程序启动时将模型加载到内存中。 当向适当的端点发出请求时,加载相关模型,执行推理并返回结果。 TensorFlow 服务:

TensorFlow Serving 还可以为 PyTorch 模型提供服务。您可以将 PyTorch 模型转换为 ONNX 格式,然后使用 TensorFlow Serving 托管它们。 TensorFlow Serving 为服务机器学习模型提供了高性能、生产就绪的解决方案。 Django 与 DRF:

如果您已经在使用 Django,则可以使用 Django REST 框架 (DRF) 创建 API 来为您的 PyTorch 模型提供服务。 在 Django 视图中加载和管理模型,并通过 API 端点提供预测。 使用 Docker 和 Kubernetes 进行容器化:

使用 Docker 容器化您的模型。每个模型都可以在自己的 Docker 容器中运行。 使用 Kubernetes 进行容器编排来管理和扩展模型服务容器。 无服务器功能:

将模型部署为 AWS Lambda、Azure Functions 或 Google Cloud Functions 等平台上的无服务器函数。 当请求到来时,无服务器函数可以加载适当的模型,执行推理并返回结果。 模型部署服务:

利用 AWS SageMaker、Google AI Platform 或 Microsoft Azure 机器学习等模型部署服务来部署、管理和服务您的 PyTorch 模型。 这些服务通常提供自动扩展和监控等功能。 边缘部署:

如果您需要将模型部署到边缘设备(例如移动设备或物联网设备),您可以使用 PyTorch Mobile 或 TensorFlow Lite 等框架,它们允许您在资源受限的设备上部署和运行模型。 自定义微服务:

为每个 PyTorch 模型创建自定义微服务并将它们托管在单独的服务器上。每个微服务可以负责加载和服务其各自的模型。

© www.soinside.com 2019 - 2024. All rights reserved.