在本教程中,我们将引导您完成将ML模型打包为Docker容器并将其部署在无服务器计算服务AWSLambda上的过程。在本教程结束时,您将拥有一个可以通过API调用的工作ML模型,并且您将更好地了解如何在云上部署ML模型。无论您是机器学习工程师、数据科学家还是开发人员,本教程旨在让对ML和Docker有基本了解的任何人都可以访问。那么,让我们开始吧!什么是码头工人?Docker是一种旨在使使用容器更轻松地创建、部署和运行应用程序的工具。容器允许开发人员将应用程序及其所需的所有部分打包在一起,例如库和其他依赖项,并将其作为一个包发送出去。通过使用容器,开发人员可以确保他们的应用程序将在任何其他机器上运行,而不管机器可能具有的任何定制可能与用于编写和测试代码的机器不同。Docker提供了一种将应用程序及其依赖项打包到轻量级、可移植容器中的方法,这些容器可以轻松地从一个环境移动到另一个环境。这使得创建一致的开发、测试和生产环境以及更快、更可靠地部署应用程序变得更加容易。从这里安装Docker:https://docs.docker.com/get-docker/。什么是AWSLambda?AmazonWebServices(AWS)Lambda是一个无服务器计算平台,它运行代码以响应事件并自动为您管理底层计算资源。它是AWS提供的一项服务,允许开发人员在云中运行他们的代码,而无需担心运行代码所需的基础设施。AWSLambda会自动扩展您的应用程序以响应传入的请求流量,您只需为消耗的计算时间付费。这使其成为构建和运行微服务、实时数据处理和事件驱动应用程序的有吸引力的选择。什么是AWSECR?AmazonWebServices(AWS)ElasticContainerRegistry(ECR)是一个完全托管的Docker容器注册表,可让开发人员轻松存储、管理和部署Docker容器映像。它是一种安全且可扩展的服务,使开发人员能够在AWS云中存储和管理Docker映像,并轻松地将它们部署到AmazonElasticContainerService(ECS)或其他基于云的容器编排平台。ECR与其他AWS服务集成,例如AmazonECS和AmazonEKS,并为Docker命令行界面(CLI)提供本机支持。这使得从ECR推送和拉取Docker映像变得容易,并使用熟悉的Docker命令自动化构建、测试和部署容器化应用程序的过程。安装AWSCLI使用它在您的系统上安装AWSCLI。通过在您的AWS账户中创建IAM用户来获取AWS访问密钥ID和AWS秘密访问密钥。安装后,运行以下命令来配置您的AWSCLI并插入必填字段。awsconfigure使用Docker部署Lambda函数在本教程中,我们将部署OpenAI剪辑模型以矢量化输入文本。Lambda函数需要Docker容器中的amazonLinux2,因此我们使用public.ecr.aws/lambda/python:3.8。此外,由于Lambda具有只读文件系统,它不允许我们在内部下载模型,因此我们需要在创建图像时下载并复制它们。从这里获取工作代码并提取它。切换到Dockerfile所在的工作目录,执行以下命令:dockerbuild-tlambda_image。现在我们已经准备好在Lambda上部署的映像。要在本地检查它,运行命令:dockerrun-p9000:8080lambda_image要检查它,向它发送一个curl请求,它应该返回输入文本的向量:curl-XPOST"http://localhost:9000/2015-03-31/functions/function/invocations"-d'{"text":"Thisisatestfortextencoding"}'output先把图片部署到Lambda,我们需要push到ECR,所以登录AWSaccount,在ECR中创建仓库lambda_image。仓库创建完成后,进入创建好的仓库,会看到viewpushcommand选项,点击它,会得到推送镜像到仓库的命令。现在运行第一个命令以使用AWSCLI对您的Docker客户端进行身份验证。我们已经创建了Docker镜像,因此跳过第二步并运行第三条命令来标记创建的镜像。运行最后一条命令将镜像推送到ECR。以下是运行后您将看到的内容:推送完成后,您将在ECR的存储库中看到带有“:latest”标签的图像。复制图像的URI。我们在创建Lambda函数时需要它。现在转到Lambda函数并单击“创建函数”选项。我们正在从图像创建一个函数,因此选择容器图像选项。添加函数名称并粘贴我们从ECR复制的URI,或者您可以浏览图像。选择architecturex84_64,最后点击create_image选项。构建Lambda函数可能需要一些时间,请耐心等待。执行成功后,你会看到如下界面:Lambda函数默认有3秒的超时限制和128MB的RAM,所以我们需要增加它,否则会抛出错误。为此,请转到“配置”选项卡并单击“编辑”。现在将超时设置为5-10分钟(最大限制为15分钟),并将RAM设置为2-3GB,然后单击保存按钮。更新Lambda函数的配置需要一些时间。更新更改后,该功能就可以进行测试了。要测试lambda函数,请转到“测试”选项卡并将键值作为文本添加到事件JSON:“这是一个文本编码测试。”然后点击测试按钮。由于我们是第一次执行Lambda函数,因此可能需要一些时间才能执行。成功执行后,您将在执行日志中看到一个输入文本向量。现在我们的Lambda函数已部署并正常工作。要通过API访问它,我们需要创建一个函数URL。要为您的Lambda函数创建URL,请转到Configuration选项卡并选择FunctionURL选项。然后单击“创建函数URL”选项。现在,将AuthenticationNone保留为None并单击Save。该过程完成后,您将拥有一个URL,可通过API访问您的Lambda函数。以下是使用API访问Lambda函数的示例Python代码:GET",url,headers=headers,data=payload)print(response.text)成功执行代码后,您将获得输入文本的向量。下面是一个如何使用Docker在AWSLambda上部署ML模型的示例。假如你有任何问题请告知我们。
