在本教學中,我們將引導您完成將 ML 模型打包為 Docker 容器並將其部署在無伺服器運算服務 AWS Lambda 上的程序。
在本教學結束時,您將擁有一個可以透過 API 呼叫的工作 ML 模型,並且您將對如何在雲端上部署 ML 模型有更深入的了解。無論您是機器學習工程師、資料科學家還是開發人員,本教學旨在讓對 ML 和 Docker 有基本了解的任何人都可以存取。那麼,就讓我們開始吧!
碼頭工人是一種旨在使使用容器更輕鬆地創建、部署和運行應用程式的工具。容器允許開發人員將應用程式及其所需的所有部分打包在一起,例如庫和其他依賴項,並將其作為一個套件發送出去。透過使用容器,開發人員可以確保他們的應用程式將在任何其他機器上運行,而不管機器可能具有的任何自訂設定可能與用於編寫和測試程式碼的機器不同。 Docker 提供了一種將應用程式及其相依性打包到輕量級、可移植容器中的方法,該容器可以輕鬆地從一個環境移動到另一個環境。這使得創建一致的開發、測試和生產環境以及更快速、更可靠地部署應用程式變得更加容易。從這裡安裝 Docker:https://docs.docker.com/get-docker/。
Amazon Web Services (AWS) Lambda是一個無伺服器運算平台,它會執行程式碼以回應事件並自動為您管理底層運算資源。它是 AWS 提供的一項服務,允許開發人員在雲端中運行他們的程式碼,而不必擔心運行程式碼所需的基礎設施。 AWS Lambda 會自動擴展您的應用程式以回應傳入的請求流量,您只需為消耗的運算時間付費。這使其成為建立和運行微服務、即時數據處理和事件驅動應用程式的有吸引力的選擇。
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 帳戶中建立 IAM 使用者來取得 AWS 存取金鑰 ID 和 AWS 秘密存取金鑰。安裝後,執行以下命令配置您的 AWS CLI 並插入必填欄位。
aws configure
我們將在本教程中部署 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,或者您也可以浏览图像。选择architecture x84_64,最后点击create_image选项。
构建 Lambda 函数可能需要一些时间,请耐心等待。执行成功后,你会看到如下界面:
Lambda 函数默认有 3 秒的超时限制和 128 MB 的 RAM,所以我们需要增加它,否则它会抛出错误。为此,请转到配置选项卡并单击“编辑”。
现在将超时设置为 5-10 分钟(最大限制为 15 分钟)并将 RAM 设置为 2-3 GB,然后单击保存按钮。更新 Lambda 函数的配置需要一些时间。
更新更改后,该功能就可以进行测试了。要测试 lambda 函数,请转到“测试”选项卡并将键值添加到事件 JSON 中作为文本:“这是文本编码测试。” 然后点击测试按钮。
由于我们是第一次执行 Lambda 函数,因此执行可能需要一些时间。成功执行后,您将在执行日志中看到输入文本的向量。
现在我们的 Lambda 函数已部署并正常工作。要通过 API 访问它,我们需要创建一个函数 URL。
要为 Lambda 函数创建 URL,请转到 Configuration 选项卡并选择 Function URL 选项。然后单击创建函数 URL 选项。
现在,保留身份验证 None 并单击 Save。
该过程完成后,您将获得用于通过 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 模型的示例。如果您有任何疑问,请告诉我们。
以上是如何使用 Docker 在 AWS Lambda 上部署機器學習模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!