このチュートリアルでは、ML モデルを Docker コンテナとしてパッケージ化し、サーバーレス コンピューティング サービス AWS Lambda にデプロイするプロセスについて説明します。
このチュートリアルの最後には、API を通じて呼び出すことができる機能する ML モデルが作成され、クラウド上に ML モデルをデプロイする方法についてより深く理解できるようになります。機械学習エンジニア、データ サイエンティスト、開発者を問わず、このチュートリアルは、ML と Docker の基本を理解している人であれば誰でもアクセスできるように設計されています。それでは、始めましょう!
Docker は、コンテナーを使用してアプリケーションを簡単に作成、デプロイ、実行できるように設計されたツールです。コンテナを使用すると、開発者はアプリケーションを、ライブラリやその他の依存関係など、必要なすべての部分とともにパッケージ化し、1 つのパッケージとして送信できます。コンテナーを使用すると、開発者は、コードの作成とテストに使用したマシンとは異なるカスタム設定がマシンに存在するかどうかに関係なく、アプリケーションが他のマシン上で実行されることを保証できます。 Docker は、アプリケーションとその依存関係を、ある環境から別の環境に簡単に移動できる軽量でポータブルなコンテナにパッケージ化する方法を提供します。これにより、一貫した開発、テスト、運用環境の作成が容易になり、アプリケーションをより迅速かつ確実にデプロイできるようになります。ここから Docker をインストールします: https://docs.docker.com/get-docker/。
アマゾン ウェブ サービス (AWS) Lambda は、イベントに応じてコードを実行し、基盤となるコンピューティング リソースを自動的に管理するサーバーレス コンピューティング プラットフォームです。これは AWS が提供するサービスで、開発者はコードの実行に必要なインフラストラクチャを気にすることなく、クラウドでコードを実行できます。 AWS Lambda は、受信リクエスト トラフィックに応じてアプリケーションを自動的にスケールし、消費したコンピューティング時間に対してのみ料金を支払います。このため、マイクロサービス、リアルタイム データ処理、イベント駆動型アプリケーションの構築と実行にとって魅力的な選択肢となります。
アマゾン ウェブ サービス (AWS) Elastic Container Registry (ECR) は、開発者が Docker コンテナ イメージを簡単に保存、管理、デプロイできるようにするフルマネージドの Docker コンテナ レジストリです。これは、開発者が AWS クラウドに Docker イメージを保存および管理し、それらを Amazon Elastic Container Service (ECS) またはその他のクラウドベースのコンテナ オーケストレーション プラットフォームに簡単にデプロイできる、安全でスケーラブルなサービスです。 ECR は、Amazon ECS や Amazon EKS などの他の AWS サービスと統合し、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 イメージはすでに作成しているので、2 番目の手順をスキップし、3 番目のコマンドを実行して、作成したイメージをマークします。
运行最后一条命令将镜像推送到 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 中国語 Web サイトの他の関連記事を参照してください。