部署预先优化的模型 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

部署预先优化的模型

JumpStart 中的某些模型已由 SageMaker AI 预先优化,这意味着您可以部署这些模型的优化版本,而无需首先创建推理优化作业。

有关带有预优化选项的模型列表,请参阅 预先优化的 JumpStart 模型

按照以下步骤,使用 Amazon SageMaker Studio 部署预先优化的 JumpStart 模型。

部署预优化模型
  1. 在 Studio 中,在左侧导航菜单中选择 JumpStart

  2. 全部公共模型页面上,选择一个已预优化的模型。

  3. 在模型详细信息页面,选择部署

  4. 在部署页面,某些 JumpStart 模型要求您签署最终用户许可协议 (EULA),然后才能继续。如果需要,请查看许可协议部分中的许可条款。如果您可以接受使用条款,请选择我接受 EULA 并阅读条款和条件的复选框。

    有关更多信息,请参阅 最终用户许可协议

  5. 对于端点名称初始实例数,接受默认值或设置自定义值。

  6. 对于实例类型,保留默认值。否则,您就无法部署预先优化的配置。

  7. 模型下,展开模型配置。Studio 显示了一个表格,其中提供了可供您选择的预优化配置。每个选项都有延迟和吞吐量指标。选择最适合您应用需求的选项。

  8. 选择部署

您可以在项目中使用 SageMaker AI Python SDK 部署预优化模型。首先,使用 ModelBuilder 类来定义 Model 实例。然后,使用 set_deployment_config() 方法设置要部署的预优化配置。然后,使用 build() 方法来构建模型。最后,您可以使用 deploy() 方法将其部署到推理端点。

有关以下示例中使用的类和方法的更多信息,请参阅 SageMaker AI Python SDK 文档中的 API

设置项目
  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
  2. 初始化 SageMaker AI 会话。以下示例使用 Session() 类。

    sagemaker_session = Session()
定义模型
  1. 创建 SchemaBuilder 实例,并提供输入和输出样本。在定义模型时,您需要向 ModelBuilder 类提供该实例。利用它,SageMaker AI 会自动生成用于序列化和反序列化输入和输出的 marshalling 函数。

    有关使用 SchemaBuilderModelBuilder 类的更多信息,请参阅 使用 ModelBuilder 在 Amazon SageMaker AI 中创建模型

    下面的示例提供了 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

检索基准指标
  1. 要确定要部署哪种预优化配置,请查找 SageMaker AI 提供的选项。下面的示例显示了它们:

    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 AI 提供的配置名为 lmi-optimized。表格中提供了每种实例类型和配置的基准指标。这些指标显示了模型在不同并发用户数量下支持的吞吐量和延迟。

  2. 根据基准指标,选择最能满足性能需求的实例类型和配置名称。您在创建部署配置时将使用这些值。

部署预优化模型
  1. 创建部署配置。下面的示例使用了 ModelBuilder 实例。它将实例类型和配置名称传递给 set_deployment_config() 方法:

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

    config-name 替换为表格中的配置名称,如 lmi-optimized。将 instance-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 . . .'}

预先优化的 JumpStart 模型

以下是具有预优化配置的 JumpStart 模型。

Meta
  • Llama 3.1 70B Instruct

  • Llama 3.1 70B

  • Llama 3.1 405B Instruct FP8

  • Llama 3.1 405B FP8

  • Llama 3 8B Instruct

  • Llama 3 8B

  • Llama 3 70B Instruct

  • Llama 3 70B

  • Llama 2 70B Chat

  • Llama 2 7B Chat

  • Llama 2 13B Chat

HuggingFace
  • Mixtral 8x7B Instruct

  • Mixtral 8x7B

  • Mistral 7B Instruct

  • Mistral 7B

预编译的 JumpStart 模型

对于某些模型和配置,SageMaker AI 提供了针对特定 Amazon Inferentia 和 Amazon Trainium 实例预先编译的模型。为此,如果您创建了编译优化作业,并选择 ml.inf2.48xlarge 或 ml.trn1.32xlarge 作为部署实例类型,SageMaker AI 就会获取编译后的构件。由于作业使用的是已经编译的模型,因此无需从头开始编译就能快速完成。

以下是 SageMaker AI 已预先编译好模型的 JumpStart 模型:

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • Code Llama 7B

  • Code Llama 70B

HuggingFace
  • Mistral 7B