部署模型以進行即時推論 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

部署模型以進行即時推論

重要

允許 Amazon SageMaker 工作室或 Amazon 工作 SageMaker 室經典版創建 Amazon SageMaker 資源的自定義 IAM 政策還必須授予許可才能向這些資源添加標籤。需要向資源添加標籤的權限,因為 Studio 和 Studio 經典版會自動標記它們創建的任何資源。如果 IAM 政策允許 Studio 和 Studio 經典版建立資源,但不允許標記,則在嘗試建立資源時可能會發生 AccessDenied "" 錯誤。如需詳細資訊,請參閱 提供標記資 SageMaker源的權限

AWS Amazon 的受管政策 SageMaker授予建立 SageMaker 資源的權限,已包含在建立這些資源時新增標籤的權限。

有數個選項可以使用 SageMaker 託管服務部署模型。您可以使用 SageMaker Studio 以互動方式部署模型。或者,您可以使用 AWS SDK 以程式設計方式部署模型,例如 SageMaker Python SDK 或 Python 開發套件 (Boto3)。您也可以使用 AWS CLI.

開始之前

在部署 SageMaker 模型之前,請找出並記下以下內容:

  • 您 AWS 區域 的 Amazon S3 存儲桶所在的位置

  • 儲存模型成品的 Amazon S3 URI 路徑

  • 下列項目的 IAM 角色 SageMaker

  • 包含推論程式碼的自訂映像檔的 Docker Amazon ECR URI 登錄路徑,或支援且受支援的內建 Docker 映像的架構和版本 AWS

如需每個項目中 AWS 服務 可用的清單 AWS 區域,請參閱區域對應和邊緣網路。如需如何建立 IAM 角色的相關資訊,請參閱建立 IAM 角色

重要

存放模型成品的 Amazon S3 儲存貯體必須與您建立的模型相同 AWS 區域 。

多個模型的共用資源使用率

您可以使用 Amazon 將一個或多個模型部署到端點 SageMaker。當多個模型共用一個端點時,它們會共同利用那裡託管的資源,例如 ML 運算執行個體、CPU 和加速器。將多個模型部署到端點最靈活的方法是將每個模型定義為推論元件

推論元件

推論元件是一種 SageMaker 託管物件,您可以用來將模型部署到端點。在推論元件設定中,您可以指定模型、端點,以及模型如何利用端點託管的資源。若要指定模型,您可以指定 SageMaker Model 物件,或直接指定模型人工因素和影像。

在設定中,您可以調整所需 CPU 核心、加速器和記憶體的配置方式,以最佳化資源使用率。您可以將多個推論元件部署到端點,其中每個推論元件都包含一個模型,以及該模型的資源使用率需求。

部署推論元件之後,您可以在 SageMaker API 中使用 InvokeEndpoint 動作時直接叫用關聯的模型。

推論元件具有下列優點:

彈性

推論元件會將裝載模型與端點本身的詳細資訊分離出來。這提供了更大的靈活性和控制如何託管模型和與端點一起提供服務。您可以在相同的基礎結構上託管多個模型,並且可以視需要從端點新增或移除模型。您可以獨立更新每個模型。

可擴展性

您可以指定每個模型要做主體的複本數,並且可以設定最少複本數,以確保模型載入的數量符合您要求的數量。您可以將任何推論元件複本縮放到零,這樣可以有空間放大另一個複本。

SageMaker 當您使用下列項目部署模型時,將模型封裝為推論元件:

  • SageMaker 經典一室公寓.

  • SageMaker Python SDK 部署模型對象(您將端點類型設置為EndpointType.INFERENCE_COMPONENT_BASED)。

  • AWS SDK for Python (Boto3) 定義您部署到端點的InferenceComponent物件。

使用 SageMaker 工作室部署模型

完成下列步驟,透過 SageMaker Studio 以互動方式建立和部署模型。如需有關 Studio 的詳細資訊,請參閱 Studio 文件。有關各種部署案例的更多逐步解說,請參閱使用 Amazon 輕鬆 Package 和部署傳統機器學習模型和 LLM SageMaker — 第 2 部分。

準備您的成品和權限

在 SageMaker Studio 中建立模型之前,請先完成本節。

您有兩個選項可讓您的工件和在 Studio 中建立模型:

  1. 您可以使用預先封裝的tar.gz歸檔,其中應包含您的模型加工品、任何自訂推論程式碼,以及檔案中列出的任何相依性。requirements.txt

  2. SageMaker 可以為您打包您的工件。您只需要將原始模型加工品和任何相依性放在requirements.txt檔案中,而且 SageMaker 可以為您提供預設的推論程式碼 (或者您可以使用您自己的自訂推論程式碼覆寫預設程式碼)。 SageMaker在下列架構中支援此選項: PyTorch、XGBoost。

除了使用模型、 AWS Identity and Access Management (IAM) 角色和 Docker 容器 (或 SageMaker 具有預先建置容器的所需架構和版本) 之外,您還必須授予透過 SageMaker Studio 建立和部署模型的權限。

您應該將AmazonSageMakerFull存取政策附加到 IAM 角色,以便存取 SageMaker 和其他相關服務。若要查看 Studio 中執行個體類型的價格,您也必須附加AWS PriceListServiceFull存取政策 (或者,如果您不想附加整個政策,更具體地說是pricing:GetProducts動作)。

如果您選擇在建立模型時上傳模型成品 (或上傳用於推論建議的範例承載檔案),則必須建立 Amazon S3 儲存貯體。值區名稱必須加上字SageMaker首。也可以接受的 SageMaker 替代資本化:Sagemakersagemaker

建議您使用值區命名慣例sagemaker-{Region}-{accountID}。此值區是用來儲存您上傳的成品。

建立值區之後,將下列 CORS (跨來源資源共用) 政策附加至值區:

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

您可以使用下列任何一種方法將 CORS 政策附加到 Amazon S3 儲存貯體:

建立可部署模型

在此步驟中,您可以在中建立模型的可部署版本,方 SageMaker 法是提供成品以及其他規格,例如所需的容器和架構、任何自訂推論程式碼以及網路設定。

通過執行以下操 SageMaker 作在 Studio 中創建可部署的模型:

  1. 開啟 SageMaker 工作室應用程式。

  2. 在左側導覽窗格中選擇 Models (模型)

  3. 選擇「可部署的模型」標籤。

  4. 在「可部署的模型」頁面上,選擇「建立」。

  5. 在「建立可部署模型」頁面的「模型名稱」欄位中,輸入模型的名稱。

可以在「建立可建置的模型」頁面上填寫其他幾個段落。

容器定義部分看起來像下面的屏幕截圖:

用於在 Studio 中創建模型的容器定義部分的屏幕截圖。
針對 [容器定義] 區段,執行下列動作:
  1. 如果您想要使用 SageMaker 受管理容器,請選取 [容器類型],請選取 [預先建立容器],或選取 [攜帶自己的容器] (如果您有自己的容器)。

  2. 如果您選取預先建置的容器,請選取您要使用的架構、架構版本硬體類型

  3. 如果您選取「攜帶自己的容器」,請輸入容器映像的 ECR 路徑的 Amazon ECR 路徑

然後,填寫「件」部分,該部分看起來像以下屏幕截圖:

用於在 Studio 中創建模型的「工件」部分的屏幕截圖。
針對「人工因素」段落,執行下列動作:
  1. 如果您使用其中一個 SageMaker 支援封裝模型成品 (PyTorch 或 XGBoost) 的架構,則您可以選擇「上傳」選項。使用此選項,您可以簡單地指定原始模型加工品、您擁有的任何自訂推論程式碼以及 requirements.txt 檔案,並為您 SageMaker 處理封裝歸檔。請執行下列操作:

    1. 對於人工因素,選取「上載人工因素」以繼續提供檔案。否則,如果您已有包含模型檔案、推論程式碼和requirements.txt檔案的tar.gz存檔,請選取將 S3 URI 輸入至預先封裝的成品。

    2. 如果您選擇上傳成品,則對於 S3 儲存貯體,請在為您封裝成品後,輸入 SageMaker 要存放成品的儲存貯體的 Amazon S3 路徑。然後,完成以下步驟。

    3. 對於「上載模型加工品」,請上載模型檔案。

    4. 對於推論程式碼,如果您想要使用 SageMaker 提供提供推論的預設程式碼,請選取 [使用預設推論程式碼]。否則,請選取 [上傳自訂的推論程式碼],以使用您自己的推論程式碼。

    5. 針對「上載 requirements.txt」,請上傳文字檔案,其中列出您要在執行階段安裝的任何相依性。

  2. 如果您不使用 SageMaker 支持打包模型工件的框架,則 Studio 會向您顯示預先打包的工件選項,並且您必須提供已打包為tar.gz存檔的所有成品。請執行下列操作:

    1. 對於預先封裝的成品,如果您已將tar.gz存檔上傳到 Amazon S3,請為預先封裝的模型成品選取輸入 S3 URI。如果您要將存檔直接上傳至,請選取「上載預先封裝的模型人工因素」。 SageMaker

    2. 如果您為預先封裝的模型成品選取了輸入 S3 URI,請輸入 S3 URI 存檔的 Amazon S3 路徑。否則,請從本機電腦選取並上傳歸檔。

下一部分是安全性,它看起來像下面的屏幕截圖:

用於在 Studio 中創建模型的安全部分的屏幕截圖。
在「安全性」段落中,執行下列動作:
  1. 對於 IAM 角色,請輸入 IAM 角色的 ARN。

  2. (選用) 對於 V irtual Private Cloud (VPC) (VPC),您可以選取 Amazon VPC 來儲存模型組態和成品。

  3. (選擇性) 如果您要限制容器的網際網路存取,請開啟 [網路隔離] 切換開關。

最後,您可以選擇填寫「高級選項」部分,該部分看起來像以下屏幕截圖:

用於在 Studio 中創建模型的高級選項部分的屏幕截圖。
(選擇性) 對於「進階選項」區段,請執行下列動作:
  1. 如果您想在建立模型後在模型上執行 Amazon SageMaker 推論推薦程式任務,請開啟自訂執行個體建議切換。推論建議程式是一項功能,可為您提供建議的執行個體類型,以最佳化推論效能和成本。您可以在準備部署模型時檢視這些執行個體建議。

  2. 新增環境變數中,輸入容器的環境變數做為鍵值配對。

  3. 在「標籤」中,輸入任何標籤作為鍵值配對。

  4. 完成模型和容器設定後,請選擇 [建立可部署模型]。

現在,您應該在 SageMaker Studio 中有一個已準備好部署的模型。

部署模型

最後,您將在上一個步驟中設定的模型部署到 HTTPS 端點。您可以將單一模型或多個模型部署到端點。

模型和端點相容性

在您可以將模型部署到端點之前,模型和端點必須具有相同的下列設定值來相容:

  • 存取權管理角色

  • Amazon VPC (包括其子網路和安全群組)

  • 網路隔離 (啟用或停用)

Studio 可防止您以下列方式將模型部署到不相容的端點:

  • 如果您嘗試將模型部署到新端點,請使用相容 SageMaker 的初始設定來設定端點。如果您透過變更這些設定中斷相容性,Studio 會顯示警示並防止您的部署。

  • 如果您嘗試部署到現有端點,且該端點不相容,Studio 會顯示警示並阻止您的部署。

  • 如果您嘗試將多個模型新增至部署,Studio 會阻止您部署彼此不相容的模型。

當 Studio 顯示有關模型和端點不兼容的警報時,您可以選擇警報中的「查看詳細信息」以查看哪些設置不兼容。

部署模型的一種方法是在 Studio 中執行以下操作:

  1. 開啟 SageMaker 工作室應用程式。

  2. 在左側導覽窗格中選擇 Models (模型)

  3. 在「模型」頁面上,從模型清單中選取一或多個 SageMaker 模型。

  4. 選擇部署

  5. 針對端點名稱,開啟下拉式功能表。您可以選取現有端點,也可以建立部署模型的新端點。

  6. 針對執行個體類型,選取要用於端點的執行個體類型。如果您之前已針對模型執行推論建議工作,建議的執行個體類型會顯示在「建議」標題下方的清單中。否則,您會看到一些可能適合您模型的潛在執行個體。

    執行個體類型相容性 JumpStart

    如果您要部署 JumpStart 模型,Studio 只會顯示模型支援的執行個體類型。

  7. 針對初始執行個體計數,輸入您要為端點佈建的初始執行個體數目。

  8. 針對執行個體計數上限,指定端點在擴展以適應流量增加時可佈建的執行個體數目上限。

  9. 如果您要部署的模型是模型中樞最常用的 JumpStart LLM 之一,則 [替代組態] 選項會出現在執行個體類型和執行個體計數欄位之後。

    對於最受歡迎的 JumpStart LLM, AWS 具有預先基準化的執行個體類型,可針對成本或效能進行最佳化。此數據可以幫助您決定用於部署 LLM 的實例類型。選擇替代組態以開啟包含預先基準測試資料的對話方塊。面板看起來像下面的屏幕截圖:

    替代組態方塊的螢幕擷取畫面

    替代組態方塊中,執行下列操作:

    1. 選取執行個體類型。您可以選擇 [每小時成本] 或 [最佳效能],查看針對指定模型最佳化成本或效能的執行個體類型。您也可以選擇「其他支援的執行個體」,查看與模型相容的其他執行個體類 JumpStart 型清單。請注意,在此選取例證類型會覆寫在步驟 6 中指定的任何先前執行個體選取。

    2. (選擇性) 開啟 [自訂選取的組態] 切換以指定 [最大記號總數] (您要允許的最大記號數目,也就是輸入 Tok en 與模型產生的輸出總和)、輸入 Token 長度上限 (您要允許輸入每個要求的最大記號數) 和最大並行要求 (模型一次可以處理要求的最大處理數)。

    3. 選擇 [選取] 以確認您的執行個體類型和組態設定。

  10. 模型」欄位應該已填入您要部署的模型名稱。您可以選擇 [新增模型],將更多模型加入至部署。針對您新增的每個模型,填寫下列欄位:

    1. 在「CPU 核心數目」中,輸入您要專用於模型使用的 CPU 核心。

    2. 對於「最小複本數」,請輸入您希望在任何指定時間在端點上託管的模型複本的最小數目。

    3. 對於最小 CPU 記憶體 (MB),輸入模型所需的最小記憶體容量 (以 MB 為單位)。

    4. 在最大 CPU 記憶體 (MB) 中,輸入您要允許模型使用的最大記憶體容量 (以 MB 為單位)。

  11. (選擇性) 對於「進階」選項,請執行下列操作:

    1. 對於 IAM 角色,請使用預設 SageMaker IAM 執行角色,或指定具有所需許可的自己角色。請注意,此 IAM 角色必須與您在建立可部署模型時指定的角色相同。

    2. 對於 V irtual Private Cloud (VPC) (VPC),您可以指定要在其中託管端點的 VPC。

    3. 對於加密 KMS 金鑰,請選取金 AWS KMS 鑰,以加密連接至託管端點之 ML 計算執行個體的儲存磁碟區上的資料。

    4. 啟啟用網路隔離切換,以限制容器的網際網路存取。

    5. 在 [逾時] 組態中,輸入 [模型資料下載逾時 (秒)] 和 [容器啟動健全狀況檢查逾時 (秒)] 欄位的值。這些值分別決定了 SageMaker 允許將模型下載到容器和啟動容器的時間上限。

    6. 在「標籤」中,輸入任何標籤作為鍵值配對。

    注意

    SageMaker 使用與您正在部署的模型相容的初始值來設定 IAM 角色、VPC 和網路隔離設定。如果您透過變更這些設定中斷相容性,Studio 會顯示警示並防止您的部署。

配置選項後,頁面應該看起來像下面的屏幕截圖。

Studio 中部署模型頁面的螢幕擷取畫面。

設定部署後,選擇「部」以建立端點並部署模型。

使用 Python 開發套件部署模型

使用 SageMaker Python SDK,您可以通過兩種方式構建模型。首先是從ModelModelBuilder類建立模型物件。如果您使用Model類別建立Model物件,則需要指定模型套件或推論程式碼 (視您的模型伺服器而定)、用來處理用戶端和伺服器之間資料序列化和還原序列化的指令碼,以及任何要上傳到 Amazon S3 以供使用的相依性。建置模型的第二種方法是使ModelBuilder用您提供模型加工品或推論程式碼的方式。 ModelBuilder自動捕獲您的依賴關係,推斷所需的序列化和反序列化功能,並打包您的依賴關係以創建對象。Model如需 ModelBuilder 的相關資訊,請參閱 在 Amazon SageMaker 中創建一個模型 ModelBuilder

下一節說明建立模型和部署模型物件的兩種方法。

設定

下列範例會為模型部署程序做好準備。他們會匯入必要的程式庫,並定義用於尋找模型成品的 S3 URL。

SageMaker Python SDK
範例 匯入陳述式

下列範例會從 Python SDK、 SageMaker Python 開發套件 (Boto3) 和 Python 標準程式庫匯入模組。這些模組提供有用的方法,可協助您部署模型,接下來的其餘範例會使用這些方法。

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
範例 匯入陳述式

下列範例會從適用於 Python 的 SDK 和 Python 標準程式庫匯入模組。這些模組提供有用的方法,可協助您部署模型,接下來的其餘範例會使用這些方法。

import boto3 import botocore import sys import time
boto3 models (without inference components)
範例 匯入陳述式

下列範例會從適用於 Python 的 SDK 和 Python 標準程式庫匯入模組。這些模組提供有用的方法,可協助您部署模型,接下來的其餘範例會使用這些方法。

import boto3 import botocore import datetime from time import gmtime, strftime
範例 模型人工因素 URL

下列程式碼會建立範例 Amazon S3 URL。該 URL 會在 Amazon S3 儲存貯體中尋找預先訓練模型的模型成品。

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "DOC-EXAMPLE-BUCKET" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

完整的 Amazon S3 URL 存放在變數中model_url,該變數會用於以下範例中。

概觀

您可以透過多種方式使用 SageMaker Python SDK 或開發套 SDK for Python (Boto3) 來部署模型。以下幾節概述了您針對數種可能方法所完成的步驟。以下範例會示範這些步驟。

SageMaker Python SDK

使用 SageMaker Python SDK,您可以使用下列其中一種方式來建立模型:

  • Model類別建立模型物件 — 您必須指定模型套件或推論程式碼 (視您的模型伺服器而定)、用來處理用戶端和伺服器之間資料序列化和還原序列化的指令碼,以及任何要上傳到 Amazon S3 以供使用的相依性。

  • ModelBuilder類別建立模型物件 — 您提供模型成品或推論程式碼,並ModelBuilder自動擷取相依性、推斷所需的序列化和還原序列化函數,並封裝相依性以建立物件。Model

    如需 ModelBuilder 的相關資訊,請參閱 在 Amazon SageMaker 中創建一個模型 ModelBuilder。您還可以查看博客 P ackage 和部署經典 ML 模型和 LLM 輕鬆 SageMaker — 第 1 部分以獲取更多信息。

下列範例說明建立模型和部署模型物件的兩種方法。若要以這些方式部署模型,請完成下列步驟:

  1. 使用ResourceRequirements物件定義要配置給模型的端點資源。

  2. ModelModelBuilder類別建立模型物件。ResourceRequirements物件在模型設定中指定。

  3. 使用物件的deploy方法將模型部署到端Model點。

boto3 inference components

以下範例示範如何將模型指派給推論元件,然後將推論元件部署到端點。若要以這種方式部署模型,請完成下列步驟:

  1. (選擇性) 使用create_model方法建立 SageMaker 模型物件。

  2. 透過建立端點組態物件來指定端點的設定。要創建一個,您可以使用該create_endpoint_config方法。

  3. 使用create_endpoint方法建立端點,然後在要求中提供您建立的端點設定。

  4. 使用create_inference_component方法建立推論元件。在設定中,您可以執行下列任一項作業來指定模型:

    • 指定模 SageMaker 型物件

    • 指定模型映像檔 URI 和 S3 網址

    您也可以將端點資源分配給模型。藉由建立推論元件,您可以將模型部署到端點。您可以建立多個推論元件 (每個模型一個),將多個模型部署到端點。

boto3 models (without inference components)

以下範例示範如何建立模型物件,然後將模型部署到端點。若要以這種方式部署模型,請完成下列步驟:

  1. 使用create_model方法建立 SageMaker 模型。

  2. 透過建立端點組態物件來指定端點的設定。要創建一個,您可以使用該create_endpoint_config方法。在端點組態中,您可以將模型物件指派給生產變體。

  3. 使用create_endpoint方法建立您的端點。在您的要求中,提供您建立的端點設定。

    當您建立端點時,請 SageMaker 佈建端點資源,並將模型部署到端點。

設定

下列範例會設定將模型部署到端點所需的資源。

SageMaker Python SDK

下列範例會將端點資源指派給具有ResourceRequirements物件的模型。這些資源包括 CPU 核心、加速器和記憶體。然後,範例會從Model類別建立模型物件。或者,您可以通過實例化ModelBuilder類並運行創建一個模型對象 build-這個方法也顯示在例子中。 ModelBuilder提供用於模型封裝的統一介面,在本例中,會為大型模型部署準備模型。此範例利用ModelBuilder來建構「Hugging Face」模型。(您也可以傳遞一個 JumpStart 模型)。建立模型之後,您可以在模型物件中指定資源需求。在下一個步驟中,您可以使用此物件將模型部署到端點。

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

下列範例會使用方create_endpoint_config法設定端點。您可以在建立端點時將此組態指派給端點。在組態中,您可以定義一或多個生產變體。對於每個變體,您可以選擇希望 Amazon SageMaker 佈建的執行個體類型,並且可以啟用受管執行個體擴展。

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
範例 模型定義

下列範例會定義具有中create_model方法的 SageMaker 模型 AWS SDK for Python (Boto3)。

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

此範例會指定下列項目:

  • ModelName:模型的名稱 (在這個範例中,它的儲存名稱是名為 model_name 的字串變數)。

  • ExecutionRoleArn:Amazon SageMaker 可假設存取模型成品和 Docker 映像,以便在 ML 運算執行個體上部署或批次轉換任務時使用的 IAM 角色的 Amazon 資源名稱 (ARN)。

  • PrimaryContainer:主要 Docker 映像檔的位置,包含推論程式碼、關聯成品,以及推論程式碼在部署模型以進行預測時使用的自訂環境地圖。

範例 端點組態

下列範例會使用方create_endpoint_config法設定端點。Amazon SageMaker 使用此配置來部署模型。在組態中,您可以識別使用該create_model方法建立的一或多個模型,以部署您希望 Amazon 佈建 SageMaker 的資源。

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

此範例會指定ProductionVariants欄位的下列索引鍵:

部署

下列範例會將模型部署到端點。

SageMaker Python SDK

下列範例會使用模型物件的deploy方法將模型部署到即時的 HTTPS 端點。如果您為模型建立和部署的resources引數指定值,則您為部署指定的資源優先。

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

對於instance_type欄位,此範例會指定模型的 Amazon EC2 執行個體類型名稱。對於該initial_instance_count欄位,它會指定要在其上執行端點的初始執行個體數目。

下列程式碼範例示範另一個案例:您將模型部署到端點,然後將另一個模型部署到相同的端點。在這種情況下,您必須為兩個模型的deploy方法提供相同的端點名稱。

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

一旦您有端點設定,請使用 create_end 方法來建立您的端點。端點名稱 AWS 區域 在您的 AWS 帳戶中必須是唯一的。

下列範例會使用要求中指定的端點組態建立端點。Amazon SageMaker 使用端點來佈建資源。

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

建立端點之後,您可以透過建立推論元件來部署一個或多個模型。下面的示例創建一個與方create_inference_component法。

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
範例 部署

將端點組態提供給 SageMaker。此服務便會啟動組態所指定的機器學習 (ML) 運算執行個體,接著進行模型部署。

一旦您有了模型和端點配置,請使用 create_endpoint 方法來創建您的端點。端點名稱 AWS 區域 在您的 AWS 帳戶中必須是唯一的。

下列範例會使用要求中指定的端點組態建立端點。Amazon SageMaker 使用端點佈建資源和部署模型。

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

使用部署模型 AWS CLI

您可以使用將模型部署到端點 AWS CLI。

概觀

使用部署模型時 AWS CLI,您可以使用或不使用推論元件來部署模型。下列各節摘要說明您針對這兩種方法執行的命令。以下範例會示範這些指令。

With inference components

若要部署含有推論元件的模型,請執行下列動作:

  1. (選擇性) 使用create-model指令建立模型。

  2. 透過建立端點組態來指定端點的設定。要創建一個,請運行create-endpoint-config命令。

  3. 使用create-endpoint指令建立端點。在指令主體中,指定您建立的端點組態。

  4. 使用create-inference-component指令建立推論元件。在設定中,您可以執行下列任一項作業來指定模型:

    • 指定模 SageMaker 型物件

    • 指定模型映像檔 URI 和 S3 網址

    您也可以將端點資源分配給模型。藉由建立推論元件,您可以將模型部署到端點。您可以建立多個推論元件 (每個模型一個),將多個模型部署到端點。

Without inference components

若要在不使用推論元件的情況下部署模型,請執行下列動作:

  1. 使用create-model指令建立 SageMaker 模型。

  2. 透過建立端點組態物件來指定端點的設定。若要建立一個,請使用create-endpoint-config指令。在端點組態中,您可以將模型物件指派給生產變體。

  3. 使用create-endpoint指令建立端點。在指令主體中,指定您建立的端點組態。

    當您建立端點時,請 SageMaker 佈建端點資源,並將模型部署到端點。

設定

下列範例會設定將模型部署到端點所需的資源。

With inference components
範例 create-endpoint-config 命令

下列範例會使用建立端點組態指令建端點組態。

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

在此範例中,檔案會使用下列 JSON production-variants.json 定義生產變體:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
範例 建立模型指令

下列範例會使用「建立模型」指令建立模型

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
範例 create-endpoint-config 命令

下列範例會使用建立端點組態指令建端點組態。

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

在此範例中,檔案會使用下列 JSON production-variants.json 定義生產變體:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

部署

下列範例會將模型部署到端點。

With inference components
範例 建立端點指令

下列範例會使用「建立端點」指令建立端點。

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
範例 create-inference-component 命令

下列範例會使用 create-inference-component 指令建立推論元件。

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

在此範例中,檔案使用下列 JSON specification.json 定義容器和計算資源:

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
範例 建立端點指令

下列範例會使用「建立端點」指令建立端點。

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

如果命令成功,則會以您建立的資源的 ARN AWS CLI 回應。

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }