選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

建立推論最佳化任務

焦點模式
建立推論最佳化任務 - Amazon SageMaker AI

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

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

您可以使用 Studio 或 SageMaker AI Python SDK 建立推論最佳化任務。任務會透過套用您選擇的技術來最佳化模型。如需詳細資訊,請參閱最佳化技術

推論最佳化任務的執行個體定價

當您建立套用量化或編譯的推論最佳化任務時,SageMaker AI 會選擇要用來執行任務的執行個體類型。您需要根據使用的執行個體付費。

如需可能的執行個體類型及其定價詳細資訊,請參閱 Amazon SageMaker AI 定價頁面上的推論最佳化定價資訊。

對於套用投機解碼的任務,您不需要支付額外費用。

如需您可以最佳化的支援模型,請參閱 支援的模型參考

請完成下列步驟,以在 Studio 中建立推論最佳化任務。

開始建立最佳化任務
  1. 在 SageMaker AI Studio 中,透過下列任一路徑建立最佳化任務:

    • 若要建立 JumpStart 模型的任務,請執行下列動作:

      1. 在導覽功能表中,選擇 JumpStart

      2. 在所有公有模型頁面上,選擇模型提供者,然後選擇其中一個支援最佳化的模型。

      3. 在模型詳細資訊頁面上,選擇最佳化。此按鈕僅適用於支援最佳化的模型。

      4. 建立推論最佳化任務頁面上,某些 JumpStart 模型會要求您簽署最終使用者授權合約 (EULA),才能繼續。如果請求,請檢閱授權合約區段中的授權條款。如果您的使用案例可接受這些術語,請選取我接受 EULA 的核取方塊,然後閱讀條款與條件。

    • 若要為微調的 JumpStart 模型建立任務,請執行下列動作:

      1. 在導覽功能表中,於任務下,選擇訓練

      2. 訓練任務頁面上,選擇您用來微調 JumpStart 模型的任務名稱。這些任務在任務類型欄中具有類型 JumpStart 訓練

      3. 在訓練任務的詳細資訊頁面上,選擇最佳化

    • 若要建立自訂模型的任務,請執行下列動作:

      1. 在導覽功能表中,於任務下,選擇推論最佳化

      2. 選擇 Create new job (建立新任務)。

      3. 建立推論最佳化任務頁面上,選擇新增模型

      4. 新增模型視窗中,選擇自訂模型

      5. 針對自訂模型名稱,輸入名稱。

      6. 針對 S3 URI,輸入 Amazon S3 中存放模型成品之位置的 URI。

  2. 建立推論最佳化任務頁面上,針對任務名稱,您可以接受 SageMaker AI 指派的預設名稱。或者,若要輸入自訂任務名稱,請選擇任務名稱欄位,然後選擇輸入任務名稱

設定最佳化組態
  1. 針對部署執行個體類型,選擇您要最佳化模型的執行個體類型。

    執行個體類型會影響您可以選擇的最佳化技術。對於使用 GPU 硬體的大多數類型,支援的技術是量化投機式解碼。如果您選擇使用自訂矽的執行個體,例如 AWS Inferentia 執行個體 ml.inf2.8xlarge,則支援的技巧為編譯,您可以使用該技術來編譯該特定硬體類型的模型。

  2. 選取 Studio 提供的一或多個最佳化技術:

    • 如果您選擇量化,請選擇精確度資料類型的資料類型

    • 如果您選擇投機解碼,請選擇下列其中一個選項:

      • 使用 SageMaker AI 草稿模型 – 選擇使用 SageMaker AI 提供的草稿模型。

        注意

        如果您選擇使用 SageMaker AI 草稿模型,您還必須啟用網路隔離。Studio 會在安全性下提供此選項。

      • 選擇 JumpStart 草稿模型 – 選擇從 JumpStart 目錄中選取模型,以用作您的草稿模型。

      • 選擇您自己的草稿模型 – 選擇使用自己的草稿模型,並提供找到它的 S3 URI。

    • 如果您選擇快速載入模型,Studio 會顯示OPTION_TENSOR_PARALLEL_DEGREE環境變數。使用 欄位來設定張量平行處理的程度。值必須平均分配您選擇的部署執行個體類型執行個體中的 GPUs 數量。例如,若要在使用具有 8 個 GPUs 的執行個體時碎片化模型,請使用值 2、4 或 8。

    • 如果您將部署執行個體類型設定為 AWS Inferentia 或 AWS Trainium 執行個體,Studio 可能會顯示編譯是支援的選項。在這種情況下,Studio 會為您選取此選項。

  3. 針對輸出,輸入 Amazon S3 中位置的 URI。在那裡,SageMaker AI 會存放任務建立之最佳化模型的成品。

  4. (選用) 展開進階選項,對 IAM 角色、VPC 和環境變數等設定進行更精細的控制。如需詳細資訊,請參閱下方的進階選項

  5. 當您完成設定任務時,請選擇建立任務

    Studio 會顯示任務詳細資訊頁面,其中會顯示任務狀態及其所有設定。

進階選項

您可以在建立推論最佳化任務時設定下列進階選項。

組態下,您可以設定下列選項:

張量平行程度

張量平行處理程度的值。張量平行處理是模型平行處理類型,其中特定模型權重、漸層與最佳化工具狀態會跨裝置分割。值必須平均分配叢集中的 GPUs 數量。

字符長度上限

模型要產生的字符數量限制。請注意,模型不一定會產生最大數量的字符。

並行數量

能夠在相同的基礎硬體上執行模型的多個執行個體。使用並行為多個使用者提供預測,並最大化硬體使用率。

批次大小

如果您的模型執行批次推論,請使用此選項來控制模型處理的批次大小。

批次推論會在觀察批次上產生模型預測。對於大型資料集或您不需要立即回應推論請求,這是不錯的選擇。

安全性下,您可以設定下列選項:

IAM 角色

讓 SageMaker AI 代表您執行任務的 IAM 角色。在模型最佳化期間,SageMaker AI 需要您的許可才能:

  • 從 S3 儲存貯體讀取輸入資料

  • 將模型成品寫入 S3 儲存貯體

  • 將日誌寫入 Amazon CloudWatch Logs

  • 發佈指標至 Amazon CloudWatch

您可以將所有這些任務的許可授予 IAM 角色。

如需詳細資訊,請參閱如何使用 SageMaker AI 執行角色

加密 KMS 金鑰

金鑰 in AWS Key Management Service (AWS KMS)。當 SageMaker AI 將模型上傳至 Amazon S3 時,SageMaker AI 會使用它們的金鑰來加密最佳化模型的成品。

VPC

SageMaker AI 使用此資訊來建立網路介面,並將其連接至模型容器。網路介面會為模型容器提供您的 VPC 內的網路連線,而不會連線至網際網路。也可讓您的模型連線至私有 VPC 內的資源。

如需詳細資訊,請參閱讓 SageMaker AI 託管端點存取 Amazon VPC 中的資源

啟用網路隔離

如果您想要限制容器的網際網路存取,請啟用此選項。使用網路隔離執行的容器無法進行任何傳出網路呼叫。

注意

當您使用投機式解碼進行最佳化,並使用 SageMaker AI 草稿模型時,必須啟用此選項。

如需網路隔離的詳細資訊,請參閱網路隔離

進階容器定義下,您可以設定下列選項:

停止條件

指定任務可以執行的時間限制。當任務達到時間限制時,SageMaker AI 會結束任務。使用此選項來限制成本。

標籤

與最佳化任務相關聯的鍵值對。

如需標籤的詳細資訊,請參閱 中的標記您的 AWS 資源AWS 一般參考

環境變數

定義要在模型容器中設定的環境變數的鍵值對。

Amazon SageMaker Studio

請完成下列步驟,以在 Studio 中建立推論最佳化任務。

開始建立最佳化任務
  1. 在 SageMaker AI Studio 中,透過下列任一路徑建立最佳化任務:

    • 若要建立 JumpStart 模型的任務,請執行下列動作:

      1. 在導覽功能表中,選擇 JumpStart

      2. 在所有公有模型頁面上,選擇模型提供者,然後選擇其中一個支援最佳化的模型。

      3. 在模型詳細資訊頁面上,選擇最佳化。此按鈕僅適用於支援最佳化的模型。

      4. 建立推論最佳化任務頁面上,某些 JumpStart 模型會要求您簽署最終使用者授權合約 (EULA),才能繼續。如果請求,請檢閱授權合約區段中的授權條款。如果您的使用案例可接受這些術語,請選取我接受 EULA 的核取方塊,然後閱讀條款與條件。

    • 若要為微調的 JumpStart 模型建立任務,請執行下列動作:

      1. 在導覽功能表中,於任務下,選擇訓練

      2. 訓練任務頁面上,選擇您用來微調 JumpStart 模型的任務名稱。這些任務在任務類型欄中具有類型 JumpStart 訓練

      3. 在訓練任務的詳細資訊頁面上,選擇最佳化

    • 若要建立自訂模型的任務,請執行下列動作:

      1. 在導覽功能表中,於任務下,選擇推論最佳化

      2. 選擇 Create new job (建立新任務)。

      3. 建立推論最佳化任務頁面上,選擇新增模型

      4. 新增模型視窗中,選擇自訂模型

      5. 針對自訂模型名稱,輸入名稱。

      6. 針對 S3 URI,輸入 Amazon S3 中存放模型成品之位置的 URI。

  2. 建立推論最佳化任務頁面上,針對任務名稱,您可以接受 SageMaker AI 指派的預設名稱。或者,若要輸入自訂任務名稱,請選擇任務名稱欄位,然後選擇輸入任務名稱

設定最佳化組態
  1. 針對部署執行個體類型,選擇您要最佳化模型的執行個體類型。

    執行個體類型會影響您可以選擇的最佳化技術。對於使用 GPU 硬體的大多數類型,支援的技術是量化投機式解碼。如果您選擇使用自訂矽的執行個體,例如 AWS Inferentia 執行個體 ml.inf2.8xlarge,則支援的技巧為編譯,您可以使用該技術來編譯該特定硬體類型的模型。

  2. 選取 Studio 提供的一或多個最佳化技術:

    • 如果您選擇量化,請選擇精確度資料類型的資料類型

    • 如果您選擇投機解碼,請選擇下列其中一個選項:

      • 使用 SageMaker AI 草稿模型 – 選擇使用 SageMaker AI 提供的草稿模型。

        注意

        如果您選擇使用 SageMaker AI 草稿模型,您還必須啟用網路隔離。Studio 會在安全性下提供此選項。

      • 選擇 JumpStart 草稿模型 – 選擇從 JumpStart 目錄中選取模型,以用作您的草稿模型。

      • 選擇您自己的草稿模型 – 選擇使用自己的草稿模型,並提供找到它的 S3 URI。

    • 如果您選擇快速載入模型,Studio 會顯示OPTION_TENSOR_PARALLEL_DEGREE環境變數。使用 欄位來設定張量平行處理的程度。值必須平均分配您選擇的部署執行個體類型執行個體中的 GPUs 數量。例如,若要在使用具有 8 個 GPUs 的執行個體時碎片化模型,請使用值 2、4 或 8。

    • 如果您將部署執行個體類型設定為 AWS Inferentia 或 AWS Trainium 執行個體,Studio 可能會顯示編譯是支援的選項。在這種情況下,Studio 會為您選取此選項。

  3. 針對輸出,輸入 Amazon S3 中位置的 URI。在那裡,SageMaker AI 會存放任務建立之最佳化模型的成品。

  4. (選用) 展開進階選項,對 IAM 角色、VPC 和環境變數等設定進行更精細的控制。如需詳細資訊,請參閱下方的進階選項

  5. 當您完成設定任務時,請選擇建立任務

    Studio 會顯示任務詳細資訊頁面,其中會顯示任務狀態及其所有設定。

進階選項

您可以在建立推論最佳化任務時設定下列進階選項。

組態下,您可以設定下列選項:

張量平行程度

張量平行處理程度的值。張量平行處理是模型平行處理類型,其中特定模型權重、漸層與最佳化工具狀態會跨裝置分割。值必須平均分配叢集中的 GPUs 數量。

字符長度上限

模型要產生的字符數量限制。請注意,模型不一定會產生最大數量的字符。

並行數量

能夠在相同的基礎硬體上執行模型的多個執行個體。使用並行為多個使用者提供預測,並最大化硬體使用率。

批次大小

如果您的模型執行批次推論,請使用此選項來控制模型處理的批次大小。

批次推論會在觀察批次上產生模型預測。對於大型資料集或您不需要立即回應推論請求,這是不錯的選擇。

安全性下,您可以設定下列選項:

IAM 角色

讓 SageMaker AI 代表您執行任務的 IAM 角色。在模型最佳化期間,SageMaker AI 需要您的許可才能:

  • 從 S3 儲存貯體讀取輸入資料

  • 將模型成品寫入 S3 儲存貯體

  • 將日誌寫入 Amazon CloudWatch Logs

  • 發佈指標至 Amazon CloudWatch

您可以將所有這些任務的許可授予 IAM 角色。

如需詳細資訊,請參閱如何使用 SageMaker AI 執行角色

加密 KMS 金鑰

金鑰 in AWS Key Management Service (AWS KMS)。當 SageMaker AI 將模型上傳至 Amazon S3 時,SageMaker AI 會使用它們的金鑰來加密最佳化模型的成品。

VPC

SageMaker AI 使用此資訊來建立網路介面,並將其連接至模型容器。網路介面會為模型容器提供您的 VPC 內的網路連線,而不會連線至網際網路。也可讓您的模型連線至私有 VPC 內的資源。

如需詳細資訊,請參閱讓 SageMaker AI 託管端點存取 Amazon VPC 中的資源

啟用網路隔離

如果您想要限制容器的網際網路存取,請啟用此選項。使用網路隔離執行的容器無法進行任何傳出網路呼叫。

注意

當您使用投機式解碼進行最佳化,並使用 SageMaker AI 草稿模型時,必須啟用此選項。

如需網路隔離的詳細資訊,請參閱網路隔離

進階容器定義下,您可以設定下列選項:

停止條件

指定任務可以執行的時間限制。當任務達到時間限制時,SageMaker AI 會結束任務。使用此選項來限制成本。

標籤

與最佳化任務相關聯的鍵值對。

如需標籤的詳細資訊,請參閱 中的標記您的 AWS 資源AWS 一般參考

環境變數

定義要在模型容器中設定的環境變數的鍵值對。

您可以在專案中使用 SageMaker AI Python SDK 來建立推論最佳化任務。首先,您可以使用 ModelBuilder類別定義Model執行個體。然後,您可以使用 optimize()方法執行任務,透過量化、投機式解碼或編譯來最佳化模型。當任務完成時,您可以使用 deploy()方法,將模型部署到推論端點。

如需下列範例中使用的類別和方法的詳細資訊,請參閱 SageMaker AI Python SDK 文件中的 APIs

設定您的專案
  1. 在您的應用程式程式碼中,匯入必要的程式庫。下列範例會匯入適用於 Python 的 SDK (Boto3)。它也會從您用來定義和使用模型的 SageMaker AI Python SDK 匯入類別:

    import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session from pathlib import Path
  2. 初始化 SageMaker AI 工作階段。下列範例使用 Session()類別:

    sagemaker_session = Session()
定義模型
  1. 建立SchemaBuilder執行個體,並提供輸入和輸出範例。當您定義模型時,您會將此執行個體提供給 ModelBuilder類別。使用它,SageMaker AI 會自動產生串列和還原序列化輸入和輸出的調度函數。

    如需使用 SchemaBuilderModelBuilder類別的詳細資訊,請參閱 使用 ModelBuilder 在 Amazon SageMaker AI 中建立模型 ModelBuilder

    下列範例提供 SchemaBuilder類別的範例輸入和輸出字串:

    response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
  2. 將模型定義為 SageMaker AI。下列範例會設定參數來初始化ModelBuilder執行個體:

    model_builder = ModelBuilder( model="jumpstart-model-id", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )

    此範例使用 JumpStart 模型。jumpstart-model-id 將 取代為 JumpStart 模型的 ID,例如 meta-textgeneration-llama-3-70b

    注意

    如果您想要使用投機式解碼進行最佳化,且想要使用 SageMaker AI 草稿,則必須啟用網路隔離。若要啟用它,請在初始化ModelBuilder執行個體時包含下列引數:

    enable_network_isolation=True,

    如需網路隔離的詳細資訊,請參閱網路隔離

使用量化進行最佳化
  1. 若要執行量化任務,請使用 optimize()方法,並設定 quantization_config 引數。下列範例會在最佳化容器中將 OPTION_QUANTIZE設定為環境變數:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path", )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarges3://output-path 將 取代為您存放任務建立之最佳化模型的 S3 位置路徑。

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy( instance_type="instance-type", accept_eula=True, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用 SageMaker AI 草擬模型透過投機解碼進行最佳化

當您使用投機式解碼來最佳化模型時,您可以選擇使用 SageMaker AI 提供的草擬模型,也可以使用自己的模型。下列範例使用 SageMaker AI 草稿模型。

先決條件

若要使用投機式解碼和 SageMaker AI 草稿模型進行最佳化,您必須在定義模型時啟用網路隔離。

  1. 若要執行投機式解碼任務,請使用 optimize()方法,並設定 speculative_decoding_config 引數。下列範例會將ModelProvider金鑰設定為 SAGEMAKER,以使用 SageMaker AI 提供的草擬模型。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用自訂草稿模型,透過投機式解碼進行最佳化

您必須先將模型成品上傳到 Amazon S3,才能將自訂草稿模型提供給 SageMaker AI。

下列範例示範提供自訂草稿模型的一種可能方式。這些範例會從 Hugging Face Hub 下載草擬模型,將其上傳至 Amazon S3,並將 S3 URI 提供給speculative_decoding_config引數。

  1. 如果您想要從 Hugging Face Hub 下載模型,請將huggingface_hub程式庫新增至您的專案,並使用 snapshot_download()方法下載模型。下列範例會將模型下載至本機目錄:

    import huggingface_hub huggingface_hub.snapshot_download( repo_id="model-id", revision="main", local_dir=download-dir, token=hf-access-token, )

    在此範例中,將 model-id取代為 Hugging Face Hub 模型的 ID,例如 meta-llama/Meta-Llama-3-8Bdownload-dir 將 取代為本機目錄。hf-access-token 以您的使用者存取權杖取代 。若要了解如何取得您的存取權杖,請參閱 Hugging Face 文件中的使用者存取權杖

    如需huggingface_hub程式庫的詳細資訊,請參閱 Hugging Face 文件中的 Hub 用戶端程式庫

  2. 若要讓下載的模型可供 SageMaker AI 使用,請將其上傳至 Amazon S3。下列範例會使用 sagemaker_session 物件上傳模型:

    custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="prefix", )

    在此範例中,prefix將 取代為限定詞,協助您區分 S3 中的草稿模型,例如 spec-dec-custom-draft-model

    upload_data() 方法會傳回模型成品的 S3 URI。

  3. 若要執行投機式解碼任務,請使用 optimize()方法,並設定 speculative_decoding_config 引數。下列範例會將ModelSource金鑰設定為自訂草稿模型的 S3 URI:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  4. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用編譯最佳化
  1. 若要執行編譯任務,請使用 optimize()方法,並設定 compilation_config 引數。下列範例使用 OverrideEnvironment金鑰在最佳化容器中設定必要的環境變數:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path", )

    在此範例中,將 instance-type設定為具有加速硬體的 ML 執行個體類型。例如,對於使用 AWS Inferentia 的加速推論,您可以將 類型設定為 Inf2 執行個體,例如 ml.inf2.48xlarges3://output-path 將 取代為您存放任務建立之最佳化模型的 S3 位置路徑。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用推論請求測試模型
  • 若要將測試推論請求傳送至部署的模型,請使用預測器物件predict()的方法。下列範例會傳遞 變數,該sample_input變數也會傳遞給範例中的 SchemaBuilder類別,以定義您的模型:

    predictor.predict(sample_input)

    範例輸入具有提示 "What is the largest planet in the solar system?"predict() 方法會傳回模型產生的回應,如下列範例所示:

    {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}

您可以在專案中使用 SageMaker AI Python SDK 來建立推論最佳化任務。首先,您可以使用 ModelBuilder類別定義Model執行個體。然後,您可以使用 optimize()方法執行任務,透過量化、投機式解碼或編譯來最佳化模型。當任務完成時,您可以使用 deploy()方法,將模型部署到推論端點。

如需下列範例中使用的類別和方法的詳細資訊,請參閱 SageMaker AI Python SDK 文件中的 APIs

設定您的專案
  1. 在您的應用程式程式碼中,匯入必要的程式庫。下列範例會匯入適用於 Python 的 SDK (Boto3)。它也會從您用來定義和使用模型的 SageMaker AI Python SDK 匯入類別:

    import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session from pathlib import Path
  2. 初始化 SageMaker AI 工作階段。下列範例使用 Session()類別:

    sagemaker_session = Session()
定義模型
  1. 建立SchemaBuilder執行個體,並提供輸入和輸出範例。當您定義模型時,您會將此執行個體提供給 ModelBuilder類別。使用它,SageMaker AI 會自動產生串列和還原序列化輸入和輸出的調度函數。

    如需使用 SchemaBuilderModelBuilder類別的詳細資訊,請參閱 使用 ModelBuilder 在 Amazon SageMaker AI 中建立模型 ModelBuilder

    下列範例提供 SchemaBuilder類別的範例輸入和輸出字串:

    response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
  2. 將模型定義為 SageMaker AI。下列範例會設定參數來初始化ModelBuilder執行個體:

    model_builder = ModelBuilder( model="jumpstart-model-id", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )

    此範例使用 JumpStart 模型。jumpstart-model-id 將 取代為 JumpStart 模型的 ID,例如 meta-textgeneration-llama-3-70b

    注意

    如果您想要使用投機式解碼進行最佳化,且想要使用 SageMaker AI 草稿,則必須啟用網路隔離。若要啟用它,請在初始化ModelBuilder執行個體時包含下列引數:

    enable_network_isolation=True,

    如需網路隔離的詳細資訊,請參閱網路隔離

使用量化進行最佳化
  1. 若要執行量化任務,請使用 optimize()方法,並設定 quantization_config 引數。下列範例會在最佳化容器中將 OPTION_QUANTIZE設定為環境變數:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path", )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarges3://output-path 將 取代為您存放任務建立之最佳化模型的 S3 位置路徑。

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy( instance_type="instance-type", accept_eula=True, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用 SageMaker AI 草擬模型透過投機解碼進行最佳化

當您使用投機式解碼來最佳化模型時,您可以選擇使用 SageMaker AI 提供的草擬模型,也可以使用自己的模型。下列範例使用 SageMaker AI 草稿模型。

先決條件

若要使用投機式解碼和 SageMaker AI 草稿模型進行最佳化,您必須在定義模型時啟用網路隔離。

  1. 若要執行投機式解碼任務,請使用 optimize()方法,並設定 speculative_decoding_config 引數。下列範例會將ModelProvider金鑰設定為 SAGEMAKER,以使用 SageMaker AI 提供的草擬模型。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用自訂草稿模型,透過投機式解碼進行最佳化

您必須先將模型成品上傳到 Amazon S3,才能將自訂草稿模型提供給 SageMaker AI。

下列範例示範提供自訂草稿模型的一種可能方式。這些範例會從 Hugging Face Hub 下載草擬模型,將其上傳至 Amazon S3,並將 S3 URI 提供給speculative_decoding_config引數。

  1. 如果您想要從 Hugging Face Hub 下載模型,請將huggingface_hub程式庫新增至您的專案,並使用 snapshot_download()方法下載模型。下列範例會將模型下載至本機目錄:

    import huggingface_hub huggingface_hub.snapshot_download( repo_id="model-id", revision="main", local_dir=download-dir, token=hf-access-token, )

    在此範例中,將 model-id取代為 Hugging Face Hub 模型的 ID,例如 meta-llama/Meta-Llama-3-8Bdownload-dir 將 取代為本機目錄。hf-access-token 以您的使用者存取權杖取代 。若要了解如何取得您的存取權杖,請參閱 Hugging Face 文件中的使用者存取權杖

    如需huggingface_hub程式庫的詳細資訊,請參閱 Hugging Face 文件中的 Hub 用戶端程式庫

  2. 若要讓下載的模型可供 SageMaker AI 使用,請將其上傳至 Amazon S3。下列範例會使用 sagemaker_session 物件上傳模型:

    custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="prefix", )

    在此範例中,prefix將 取代為限定詞,協助您區分 S3 中的草稿模型,例如 spec-dec-custom-draft-model

    upload_data() 方法會傳回模型成品的 S3 URI。

  3. 若要執行投機式解碼任務,請使用 optimize()方法,並設定 speculative_decoding_config 引數。下列範例會將ModelSource金鑰設定為自訂草稿模型的 S3 URI:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )

    在此範例中,instance-type將 取代為 ML 執行個體,例如 ml.p4d.24xlarge

    optimize() 方法會傳回物件,您可以使用該Model物件將模型部署至端點。

  4. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用編譯最佳化
  1. 若要執行編譯任務,請使用 optimize()方法,並設定 compilation_config 引數。下列範例使用 OverrideEnvironment金鑰在最佳化容器中設定必要的環境變數:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path", )

    在此範例中,將 instance-type設定為具有加速硬體的 ML 執行個體類型。例如,對於使用 AWS Inferentia 的加速推論,您可以將 類型設定為 Inf2 執行個體,例如 ml.inf2.48xlarges3://output-path 將 取代為您存放任務建立之最佳化模型的 S3 位置路徑。

  2. 當任務完成時,部署模型。下列範例使用 deploy()方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() 方法會傳回預測器物件,您可以使用此物件將推論請求傳送至託管模型的端點。

使用推論請求測試模型
  • 若要將測試推論請求傳送至部署的模型,請使用預測器物件predict()的方法。下列範例會傳遞 變數,該sample_input變數也會傳遞給範例中的 SchemaBuilder類別,以定義您的模型:

    predictor.predict(sample_input)

    範例輸入具有提示 "What is the largest planet in the solar system?"predict() 方法會傳回模型產生的回應,如下列範例所示:

    {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}

SageMaker AI 草稿模型的限制

對於您使用 SageMaker AI 草稿模型最佳化的任何模型,請注意需求、限制和支援的環境變數。

要求

您必須執行下列動作:

  • 使用 SageMaker AI JumpStart 提供的模型。

  • 啟用模型部署的網路隔離。

  • 如果您將模型部署到大型模型推論 (LMI) 容器,請使用 0.28.0 版或更新版本的 DJLServing 容器。

    如需可用的容器,請參閱深度學習容器 GitHub 儲存庫中的大型模型推論容器。

  • 如果您微調 JumpStart 模型,請針對模型權重使用安全張量格式。

    如需此格式的詳細資訊,請參閱 Hugging Face 文件中的 Safetensors

限制

您無法執行下列:

  • 在您透過本機模式建立的本機測試環境中使用模型。

    如需本機模式的詳細資訊,請參閱 SageMaker AI Python SDK 文件中的本機模式

  • 透過 AWS Systems Manager Agent (SSM Agent) 存取模型容器。SSM Agent 提供模型容器的殼層存取,以便您可以使用 Amazon CloudWatch 對程序和日誌命令進行偵錯。

    如需使用此功能的詳細資訊,請參閱「透過 SSM 存取容器」。

  • 設定在程序當機時所發生之核心傾印的模型容器。

    如需模型容器核心傾印的詳細資訊,請參閱 ProductionVariantCoreDumpConfig

  • 將模型部署到多模型端點、多容器端點或託管推論元件的端點。

    如需這些端點類型的詳細資訊,請參閱 多模型端點多容器端點推論元件

  • 建立模型的模型套件。您可以使用模型套件來建立發佈的可部署模型 AWS Marketplace。

    如需使用此功能的詳細資訊,請參閱「建立模型套件資源」。

  • 在模型容器中使用您自己的推論程式碼。

  • 在模型容器中使用 requirements.txt 檔案。這種類型的檔案會列出套件相依性。

  • 啟用 Hugging Face 參數 trust_remote_code

支援的環境變數

您只能使用下列環境變數來設定容器:

  • 大型模型推論 (LMI) 容器的常見環境變數。

    如需這些變數的詳細資訊,請參閱 LMI 容器文件中的環境變數組態

  • Hugging Face Hub 在其 Git 儲存庫中提供之套件的常見環境變數。

    如需 儲存庫,請參閱 GitHub 上的 Hugging Face

  • 常見的 PyTorch & CUDA 環境變數。

    如需這些變數的詳細資訊,請參閱 PyTorch 文件中的 Torch 環境變數

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。