部署預先最佳化的模型 - Amazon SageMaker

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

部署預先最佳化的模型

中的某些模型 JumpStart 是由 預先最佳化 SageMaker,這表示您可以部署這些模型的最佳化版本,而不必先建立推論最佳化任務。如需具有預先最佳化選項的模型清單,請參閱 支援的模型參考

使用下列程序,使用 Amazon SageMaker Studio 部署預先最佳化的 JumpStart 模型。

部署預先最佳化的模型
  1. 在 Studio 的左側導覽功能表中,選擇 JumpStart

  2. 在所有公有模型頁面上,選擇預先最佳化的其中一個模型。

  3. 在模型詳細資訊頁面上,選擇部署

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

    如需詳細資訊,請參閱終端使用者授權協議

  5. 對於端點名稱初始執行個體計數 ,請接受預設值或設定自訂值。

  6. 對於執行個體類型 ,請保留預設值。否則,您無法部署預先最佳化的組態。

  7. 模型 下,展開模型組態。Studio 會顯示資料表,提供您可以選擇的預先最佳化組態。每個選項都有延遲和輸送量的指標。選擇最適合您應用程式需求的選項。

  8. 選擇部署

透過 Amazon SageMaker Python SDK,您可以部署預先最佳化的模型。首先,您可以使用 ModelBuilder類別定義模型。然後,您建立模型。最後,您可以使用 Model類別部署模型。

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

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

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

    如需使用 SchemaBuilderModelBuilder類別的詳細資訊,請參閱 在 Amazon SageMaker 中創建模型 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。下列範例會設定參數以初始化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

擷取基準指標
  1. 若要判斷您要部署的預先最佳化組態,請查詢 SageMaker 提供的選項。下列範例會顯示這些範例:

    model_builder.display_benchmark_metrics()

    display_benchmark_metrics()方法會列印如下的資料表:

    | Instance Type | Config Name | Concurrent Users | Latency, TTFT (P50 in sec) | Throughput (P50 in tokens/sec/user) | |:----------------|:--------------|-------------------:|-----------------------------:|--------------------------------------:| | ml.g5.48xlarge | lmi-optimized | 1 | 2.25 | 49.70 | | ml.g5.48xlarge | lmi-optimized | 2 | 2.28 | 21.10 | | ml.g5.48xlarge | lmi-optimized | 4 | 2.37 | 14.10 | . . . | ml.p4d.24xlarge | lmi-optimized | 1 | 0.10 | 137.40 | | ml.p4d.24xlarge | lmi-optimized | 2 | 0.11 | 109.20 | | ml.p4d.24xlarge | lmi-optimized | 4 | 0.13 | 85.00 | . . .

    在第一欄中,資料表會列出可用來託管所選 JumpStart 模型的潛在執行個體類型。對於每個執行個體類型,在 下Config Name會列出預先最佳化組態的名稱。 SageMaker 提供的組態名為 lmi-optimized。對於每個執行個體類型和組態,資料表會提供基準指標。這些指標表示您的模型將支援不同數量並行使用者的輸送量和延遲。

  2. 根據基準指標,挑選最能支援效能需求的執行個體類型和組態名稱。建立部署組態時,您會使用這些值。

部署預先最佳化的模型
  1. 建立部署組態。下列範例使用ModelBuilder執行個體。它會將執行個體類型和組態名稱傳遞至 set_deployment_config()方法:

    model_builder.set_deployment_config( config_name="config-name", instance_type="instance-type", )

    Replace (取代) config-name 具有資料表中的組態名稱,例如 lmi-optimizedinstance-type 將 取代為資料表中的執行個體類型,例如 ml.p4d.24xlarge

  2. 建置您的模型。下列範例使用ModelBuilder執行個體.build()的方法:

    optimized_model = model_builder.build()

    .build()方法會傳回可部署的Model執行個體。

  3. 將模型部署至推論端點。下列範例使用Model執行個體.deploy()的方法:

    predictor = optimized_model.deploy(accept_eula=True)

    deploy()方法會傳回執行個體,您可以使用此Predictor執行個體將推論請求傳送至模型。

使用推論請求測試模型
  • 將模型部署至推論端點後,請測試模型的預測。下列範例使用 Predictor執行個體傳送推論請求:

    predictor.predict(sample_input)

    模型會傳回其透過如下回應產生的文字:

    {'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 . . .'}