如何使用 Docker 在 AWS Lambda 上部署机器学习模型

欢迎来到我们关于使用 Docker 在 Amazon Web Services (AWS) Lambda 上部署机器学习 (ML) 模型的教程。在本教程中,我们将引导您完成将 ML 模型打包为 Docker 容器并将其部署到无服务器计算服务 AWS Lambda 上的过程。

在本教程结束时,您将拥有一个可以通过 API 调用的工作 ML 模型,并且您将更深入地了解如何在云上部署 ML 模型。无论您是机器学习工程师、数据科学家还是开发人员,本教程都旨在让任何对 ML 和 Docker 有基本了解的人都可以访问。所以,让我们开始吧!

什么是 Docker?

Docker 是一种工具,旨在更轻松地使用容器创建、部署和运行应用程序。容器允许开发人员将应用程序及其所需的所有部分(如库和其他依赖项)打包在一起,并将其作为一个包交付。通过使用容器,开发人员可以确保其应用程序将在任何其他计算机上运行,而不管计算机可能具有的任何自定义设置可能与用于编写和测试代码的计算机不同。Docker 提供了一种将应用程序及其依赖项打包到轻量级可移植容器中的方法,该容器可以轻松地从一个环境移动到另一个环境。这样可以更轻松地创建一致的开发、测试和生产环境,并更快、更可靠地部署应用程序(安装 Docker)。

什么是 AWS Lambda?

Amazon Web Services (AWS) Lambda 是一个无服务器计算平台,可运行代码以响应事件并自动为您管理底层计算资源。它是 AWS 提供的一项服务,允许开发人员在云中运行代码,而不必担心运行它所需的基础设施。AWS Lambda 会自动扩展您的应用程序以响应传入的请求流量,您只需为消耗的计算时间付费。这使其成为构建和运行微服务、实时数据处理和事件驱动应用程序的有吸引力的选择。

什么是 AWS ECR?

Amazon Web Services (AWS) Elastic Container Registry (ECR) 是一个完全托管的 Docker 容器注册表,使开发人员可以轻松存储、管理和部署 Docker 容器映像。这是一项安全且可扩展的服务,使开发人员能够在 AWS 云中存储和管理 Docker 映像,并轻松地将其部署到 Amazon Elastic Container Service (ECS) 或其他基于云的容器编排平台。ECR 与其他 AWS 服务(如 Amazon ECS 和 Amazon EKS)集成,并为 Docker 命令行界面 (CLI) 提供本机支持。这使得使用熟悉的 Docker 命令从 ECR 推送和拉取 Docker 映像变得容易,并自动执行容器化应用程序的构建、测试和部署过程。

安装 AWS CLI

使用此功能在您的系统上安装 AWS CLI。通过在您的 AWS 账户中创建 IAM 用户来获取 AWS 访问密钥 ID 和 AWS 秘密访问密钥。安装后,运行以下命令以配置 AWS CLI 并插入必填字段。

aws  configure

使用 Docker 部署 Lambda 函数

我们将在本教程中部署 OpenAI 剪辑模型来矢量化输入文本。Lambda 函数需要在 Docker 容器中使用 amazon Linux 2,因此我们使用 public.ecr.aws/lambda/python:3.8。此外,由于 Lambda 具有只读文件系统,因此它不允许我们在内部下载模型,因此我们需要在创建映像时下载并复制它们。

这里获取工作代码并提取它。

更改 Dockerfile 所在的工作目录,然后运行以下命令:

docker build -t lambda_image .

现在我们已经准备好了一个映像,我们将在 Lambda 上部署。若要在本地进行检查,请运行以下命令:

docker run -p 9000:8080  lambda_image

要检查它,请向它发送一个 curl 请求,它应该返回输入文本的向量:

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"text": "This is a test for text encoding"}'

输出

 要首先在 Lambda 上部署映像,我们需要将其推送到 ECR 上,因此请登录 AWS 账户并在 ECR 中创建存储库lambda_image。创建存储库后,转到创建的存储库,您将看到查看推送命令选项单击它,您将获得将映像推送到存储库的命令。

 

现在运行第一个命令以使用 AWS CLI 对您的 Docker 客户端进行身份验证。

我们已经创建了 Docker 镜像,所以跳过第二步,运行第三个命令来标记创建的镜像。

运行最后一个命令以在 ECR 中推送映像。运行后,您将看到界面如下所示:

 推送完成后,您将在 ECR 的存储库中看到标记为“:latest”标签的映像。

 

复制映像的 URI。我们在创建 Lambda 函数时需要它。

现在转到 Lambda 函数并单击“创建函数”选项。我们正在从映像创建一个函数,因此请选择容器映像的选项。添加函数的名称并粘贴我们从 ECR 复制的 URI,或者您也可以浏览图像。选择架构x84_64,最后单击create_image选项。

构建 Lambda 函数可能需要一些时间,因此请耐心等待。成功执行后,您将看到如下所示的界面:

 默认情况下,Lambda 函数的超时限制为 3 秒,RAM 为 128 MB,因此我们需要增加它,否则它会给我们抛出错误。为此,请转到配置选项卡,然后单击“编辑”。

现在将超时设置为 5-10 分钟(最大限制为 15 分钟),将 RAM 设置为 2-3 GB,然后单击保存按钮。更新 Lambda 函数的配置需要一些时间。

 更新更改后,函数已准备好进行测试。要测试 lambda 函数,请转到测试选项卡并将事件 JSON 中的键值添加为文本:“这是文本编码测试。然后单击测试按钮。

 由于我们第一次执行 Lambda 函数,因此可能需要一些时间来执行。成功执行后,您将在执行日志中看到输入文本的向量。

 

现在,我们的 Lambda 函数已部署并正常工作。要通过 API 访问它,我们需要创建一个函数 URL。

要为 Lambda 函数创建 URL,请转到配置选项卡,然后选择函数 URL 选项。然后单击创建函数 URL 选项。

现在,保持身份验证无,然后单击保存。

 完成此过程后,您将获得用于通过 API 访问 Lambda 函数的 URL。以下是使用 API 访问 Lambda 函数的示例 Python 代码:

import requests
 
function_url = ""
url = f"{function_url}?text=this is test text"
 
payload={}
headers = {}
 
response = requests.request("GET", url, headers=headers, data=payload)
 
print(response.text)

成功执行代码后,您将获得输入文本的向量。

 因此,这是如何使用 Docker 在 AWS Lambda 上部署 ML 模型的示例。如果您有任何疑问,请告诉我们。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值