繁体   English   中英

如何使用 AWS 部署多个 TensorFlow 模型?

[英]How to deploy multiple TensorFlow models using AWS?

我已经训练了 10 个不同的 TensorFlow 模型来进行样式转换,基本上,每个模型都负责根据样式图像将过滤器应用于图像。 因此,每个模型都独立运行,我想将其集成到应用程序中。 有没有办法使用 AWS 部署这些模型?

我尝试使用 AWS SageMaker 部署这些模型,然后将端点与 AWS Lambda 结合使用,最后使用 API Gateway 创建 API。 但这里的问题是我们只能在 SageMaker 上部署一个模型,但在我的情况下,我想部署 10 个不同的模型。

我希望在我的应用程序中提供指向每个模型的链接,因此所选过滤器将在 AWS 上触发模型并应用过滤器。

我为类似的事情所做的是,我使用能够加载和预测多个模型的 api 代码创建了自己的 docker 容器。 api,当它启动时,它从 S3 存储桶复制一个model.tar.gz ,在tar.gz是我所有模型的权重,然后我的代码扫描内容并加载所有模型。 如果您的模型太大(RAM 消耗),您可能需要以不同的方式处理这个问题,正如这里所说的那样,它仅在您调用 predict 时加载模型。 我在开始时加载所有模型以进行更快的预测。 这实际上并不是代码的重大变化。

我现在正在尝试的另一种方法是让 API 网关调用多个 Sagemaker 端点,尽管我没有找到好的文档。

有多种选择,最终选择取决于您在成本、延迟、可靠性和简单性方面的优先级。

  1. 每个模型有不同的 SageMaker 端点- 这样做的一个好处是它可以带来更好的稳健性,因为模型彼此隔离。 如果一个模型被多次调用,它不会让整个车队失望。 它们各自过着自己的生活,也可以托管在不同类型的机器上,以实现更好的经济效益。 请注意,为了实现高可用性,甚至建议将硬件后端加倍(每个 SageMaker 端点 2 个以上服务器),以便端点是多区域的,因为如果端点有两个,SageMaker 会尽力将端点后端托管在不同的可用区域上或更多实例。
  2. 一个 SageMaker TFServing 多模型端点- 如果您的所有模型都是 TensorFlow 模型并且它们的工件与 TFServing 兼容,则您可以在单个SageMaker TFServing端点中托管所有这些模型 请参阅文档的这一部分:将多个模型部署到您的端点
  3. 一个SageMaker Multi-Model Endpoint ,该功能于 2019 年底发布,支持在同一容器中托管多个模型。
  4. AWS Lambda 中的无服务器部署- 这可能具有成本效益:模型仅在调用时产生费用。 这仅限于成对的 {DL 模型; 符合 Lambda 内存和存储限制且不需要 GPU 的深度学习框架}。 过去已经记录了几次,特别是TensorflowMXNet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM