选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

创建推理优化作业

聚焦模式
创建推理优化作业 - Amazon SageMaker

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

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

你可以使用 Studio 或 SageMaker Python SDK 创建推理优化作业。

推理优化任务的实例定价

当您创建应用量化或编译的推理优化作业时,请 SageMaker 选择要使用的实例类型来运行该作业。根据使用的实例向您收费。

有关可能的实例类型及其定价详情,请参阅 Amazon 定价页面上的推理优化 SageMaker 定价信息。

使用投机性解码的工作不会产生任何额外费用。

完成以下步骤,在 Studio 中创建推理优化作业。

开始创建优化作业
  1. 在 SageMaker Studio 中,通过以下任一路径创建优化作业:

    • 要为 JumpStart 模型创建作业,请执行以下操作:

      1. 在导航菜单中,选择 JumpStart

      2. 所有公共模型页面上,选择一个模型提供者,然后选择一个支持优化的模型。

      3. 在模型详细信息页面上,选择优化。此按钮仅对支持优化的模型启用。

      4. 创建推理优化作业页面上,某些 JumpStart 模型要求您签署最终用户许可协议 (EULA),然后才能继续。如果需要,请查看 “许可协议” 部分中的许可条款。如果您的用例可以接受这些条款,请选中 “我接受” 复选框EULA,然后阅读条款和条件。

    • 要为经过微调的 JumpStart 模型创建作业,请执行以下操作:

      1. 在导航菜单中的 “作业” 下,选择 “培训”。

      2. 在 “训练作业” 页面上,选择用于微调 JumpStart 模型的作业名称。这些作业的 Jo b 类型列中包含类型JumpStart 训练

      3. 在训练作业的详细信息页面上,选择优化

    • 要为自定义模型创建作业,请执行以下操作:

      1. 在导航菜单中的作业下,选择推理优化

      2. 选择 Create new job (创建新任务)。

      3. 创建推理优化作业页面上,选择添加模型

      4. 添加模型窗口中,选择自定义模型

      5. 自定义模型名称中,输入一个名称。

      6. 对于 S3 URI,请输入您在 Amazon S3 中存储模型工件的位置。URI

  2. 创建推理优化作业页面上,对于作业名称,您可以接受 SageMaker 分配的默认名称。或者,要输入自定义作业名称,请选择作业名称字段,然后选择输入作业名称

设置优化配置
  1. 于 Dep loyment 实例类型,选择要优化模型的实例类型。

    实例类型会影响您可以选择的优化技术。对于大多数使用GPU硬件的类型,支持的技术是量化和推测性解码。如果您选择使用自定义芯片的实例,例如 AWS Inferentia 实例 ml.inf2.8xlarge,则支持的技术是编译,您可以使用它来编译该特定硬件类型的模型。

  2. 选择 Studio 提供的一种或多种优化技术:

    • 如果选择 “量化”,请为 “精度” 数据类型选择一种数据类型

    • 如果选择推测性解码,则如果要使用提供的SageMaker 草稿模型, SageMaker 请选择草稿模型。或者,如果您想使用自己的草稿模型,请选择使用自己的草稿模型,然后提供定位URI该模型的 S3。

    • 如果您选择使用自定义芯片的实例,Studio 可能会显示编译是唯一支持的选项。在这种情况下,Studio 会为您选择此选项。

  3. 输出中,输入 Amazon S3 中某个位置的。URI在那里, SageMaker 存储你的任务创建的优化模型的工件。

  4. (可选)展开 “高级” 选项,以便对IAM角色VPC、和环境变量等设置进行更精细的控制。有关更多信息,请参阅下面的高级选项

  5. 配置完作业后,选择创建作业

    Studio 显示作业详细信息页面,其中显示了作业状态及其所有设置。

高级选项

在创建推理优化作业时,您可以设置以下高级选项。

在 “配置” 下,您可以设置以下选项:

张量并行度

张量并行度值。张量并行性是模型并行性的一种,它在设备之间拆分特定的模型权重、梯度和优化器状态。该值必须平均除以集群GPUs中的数量。

最大代币长度

模型生成的代币数量限制。请注意,模型可能并不总是生成最大数量的代币。

并发

能够在同一个底层硬件上运行模型的多个实例。使用并发向多个用户提供预测并最大限度地提高硬件利用率。

批次大小

如果您的模型进行批量推理,请使用此选项来控制模型处理的批次的大小。

Batch 推理会根据一批观测值生成模型预测。对于大型数据集或您不需要立即响应推理请求时,这是一个不错的选择。

在 “安全” 下,您可以设置以下选项:

IAM角色

SageMaker 能够代表您执行任务的IAM角色。在模型优化期间, SageMaker 需要获得您的许可才能执行以下操作:

  • 从 S3 存储桶读取输入数据

  • 将模型项目写入 S3 存储桶

  • 将日志写入 Amazon CloudWatch 日志

  • 向 Amazon 发布指标 CloudWatch

您可以向IAM角色授予所有这些任务的权限。

有关更多信息,请参阅 如何使用 SageMaker 执行角色

加密密KMS钥

AWS Key Management Service (AWS KMS) 中的一个密钥。 SageMaker 在将模型 SageMaker 上传到 Amazon S3 时,使用它们的密钥来加密优化模型的工件。

VPC

SageMaker 使用此信息创建网络接口并将其连接到您的模型容器。网络接口为您的模型容器提供了一个未连接VPC到 Internet 的网络连接。它们还使您的模型能够连接到您的私有资源VPC。

有关更多信息,请参阅 允许 SageMaker 托管终端节点访问您的 Amazon 中的资源 VPC

启用网络隔离

如果您想限制集装箱的互联网访问,请激活此选项。在网络隔离下运行的容器无法进行任何出站网络呼叫。

在 “高级容器定义” 下,您可以设置以下选项:

停止条件

指定作业可以运行多长时间的限制。当作业达到时间限制时, SageMaker 结束作业。使用此选项来限制成本。

标签

与优化作业关联的键值对。

有关标签的更多信息,请参阅中的为AWS 资源添加标签AWS 一般参考

环境变量

键值对,用于定义要在模型容器中设置的环境变量。

亚马逊 SageMaker Studio

完成以下步骤,在 Studio 中创建推理优化作业。

开始创建优化作业
  1. 在 SageMaker Studio 中,通过以下任一路径创建优化作业:

    • 要为 JumpStart 模型创建作业,请执行以下操作:

      1. 在导航菜单中,选择 JumpStart

      2. 所有公共模型页面上,选择一个模型提供者,然后选择一个支持优化的模型。

      3. 在模型详细信息页面上,选择优化。此按钮仅对支持优化的模型启用。

      4. 创建推理优化作业页面上,某些 JumpStart 模型要求您签署最终用户许可协议 (EULA),然后才能继续。如果需要,请查看 “许可协议” 部分中的许可条款。如果您的用例可以接受这些条款,请选中 “我接受” 复选框EULA,然后阅读条款和条件。

    • 要为经过微调的 JumpStart 模型创建作业,请执行以下操作:

      1. 在导航菜单中的 “作业” 下,选择 “培训”。

      2. 在 “训练作业” 页面上,选择用于微调 JumpStart 模型的作业名称。这些作业的 Jo b 类型列中包含类型JumpStart 训练

      3. 在训练作业的详细信息页面上,选择优化

    • 要为自定义模型创建作业,请执行以下操作:

      1. 在导航菜单中的作业下,选择推理优化

      2. 选择 Create new job (创建新任务)。

      3. 创建推理优化作业页面上,选择添加模型

      4. 添加模型窗口中,选择自定义模型

      5. 自定义模型名称中,输入一个名称。

      6. 对于 S3 URI,请输入您在 Amazon S3 中存储模型工件的位置。URI

  2. 创建推理优化作业页面上,对于作业名称,您可以接受 SageMaker 分配的默认名称。或者,要输入自定义作业名称,请选择作业名称字段,然后选择输入作业名称

设置优化配置
  1. 于 Dep loyment 实例类型,选择要优化模型的实例类型。

    实例类型会影响您可以选择的优化技术。对于大多数使用GPU硬件的类型,支持的技术是量化和推测性解码。如果您选择使用自定义芯片的实例,例如 AWS Inferentia 实例 ml.inf2.8xlarge,则支持的技术是编译,您可以使用它来编译该特定硬件类型的模型。

  2. 选择 Studio 提供的一种或多种优化技术:

    • 如果选择 “量化”,请为 “精度” 数据类型选择一种数据类型

    • 如果选择推测性解码,则如果要使用提供的SageMaker 草稿模型, SageMaker 请选择草稿模型。或者,如果您想使用自己的草稿模型,请选择使用自己的草稿模型,然后提供定位URI该模型的 S3。

    • 如果您选择使用自定义芯片的实例,Studio 可能会显示编译是唯一支持的选项。在这种情况下,Studio 会为您选择此选项。

  3. 输出中,输入 Amazon S3 中某个位置的。URI在那里, SageMaker 存储你的任务创建的优化模型的工件。

  4. (可选)展开 “高级” 选项,以便对IAM角色VPC、和环境变量等设置进行更精细的控制。有关更多信息,请参阅下面的高级选项

  5. 配置完作业后,选择创建作业

    Studio 显示作业详细信息页面,其中显示了作业状态及其所有设置。

高级选项

在创建推理优化作业时,您可以设置以下高级选项。

在 “配置” 下,您可以设置以下选项:

张量并行度

张量并行度值。张量并行性是模型并行性的一种,它在设备之间拆分特定的模型权重、梯度和优化器状态。该值必须平均除以集群GPUs中的数量。

最大代币长度

模型生成的代币数量限制。请注意,模型可能并不总是生成最大数量的代币。

并发

能够在同一个底层硬件上运行模型的多个实例。使用并发向多个用户提供预测并最大限度地提高硬件利用率。

批次大小

如果您的模型进行批量推理,请使用此选项来控制模型处理的批次的大小。

Batch 推理会根据一批观测值生成模型预测。对于大型数据集或您不需要立即响应推理请求时,这是一个不错的选择。

在 “安全” 下,您可以设置以下选项:

IAM角色

SageMaker 能够代表您执行任务的IAM角色。在模型优化期间, SageMaker 需要获得您的许可才能执行以下操作:

  • 从 S3 存储桶读取输入数据

  • 将模型项目写入 S3 存储桶

  • 将日志写入 Amazon CloudWatch 日志

  • 向 Amazon 发布指标 CloudWatch

您可以向IAM角色授予所有这些任务的权限。

有关更多信息,请参阅 如何使用 SageMaker 执行角色

加密密KMS钥

AWS Key Management Service (AWS KMS) 中的一个密钥。 SageMaker 在将模型 SageMaker 上传到 Amazon S3 时,使用它们的密钥来加密优化模型的工件。

VPC

SageMaker 使用此信息创建网络接口并将其连接到您的模型容器。网络接口为您的模型容器提供了一个未连接VPC到 Internet 的网络连接。它们还使您的模型能够连接到您的私有资源VPC。

有关更多信息,请参阅 允许 SageMaker 托管终端节点访问您的 Amazon 中的资源 VPC

启用网络隔离

如果您想限制集装箱的互联网访问,请激活此选项。在网络隔离下运行的容器无法进行任何出站网络呼叫。

在 “高级容器定义” 下,您可以设置以下选项:

停止条件

指定作业可以运行多长时间的限制。当作业达到时间限制时, SageMaker 结束作业。使用此选项来限制成本。

标签

与优化作业关联的键值对。

有关标签的更多信息,请参阅中的为AWS 资源添加标签AWS 一般参考

环境变量

键值对,用于定义要在模型容器中设置的环境变量。

以下代码示例演示了如何使用 Amaz SageMaker on 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
sagemaker_session = Session() artifacts_bucket_name = sagemaker_session.default_bucket() execution_role_arn = sagemaker_session.get_caller_identity_arn() js_model_id = "meta-textgeneration-llama-3-70b" instance_type = "ml.p4d.24xlarge"
例 模型定义
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)
model_builder = ModelBuilder( model=js_model_id, schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=execution_role_arn, )
例 量化优化作业
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output_path", )
predictor = optimized_model.deploy( instance_type="ml.g5.12xlarge", accept_eula=True, )
例 使用草稿模型进行推测性解码的 SageMaker 优化工作
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )
predictor = optimized_model.deploy(accept_eula=True)
例 使用自定义草稿模型进行推测性解码的优化工作
import huggingface_hub custom_draft_model_id="meta-llama/Meta-Llama-3-8B" hf_local_download_dir = download_dir huggingface_hub.snapshot_download( repo_id=custom_draft_model_id, revision="main", local_dir=hf_local_download_dir, token=hf_access_token, )
custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=artifacts_bucket_name, key_prefix="spec-dec-custom-draft-model", )
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )
predictor = optimized_model.deploy(accept_eula=True)
例 用于编译的优化作业
optimized_model = model_builder.optimize( instance_type="ml.inf2.48xlarge", 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", )
predictor = optimized_model.deploy(accept_eula=True)
例 推理请求
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 . . .'}
例 清理
predictor.delete_model() predictor.delete_endpoint(delete_endpoint_config=True)

以下代码示例演示了如何使用 Amaz SageMaker on 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
sagemaker_session = Session() artifacts_bucket_name = sagemaker_session.default_bucket() execution_role_arn = sagemaker_session.get_caller_identity_arn() js_model_id = "meta-textgeneration-llama-3-70b" instance_type = "ml.p4d.24xlarge"
例 模型定义
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)
model_builder = ModelBuilder( model=js_model_id, schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=execution_role_arn, )
例 量化优化作业
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output_path", )
predictor = optimized_model.deploy( instance_type="ml.g5.12xlarge", accept_eula=True, )
例 使用草稿模型进行推测性解码的 SageMaker 优化工作
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )
predictor = optimized_model.deploy(accept_eula=True)
例 使用自定义草稿模型进行推测性解码的优化工作
import huggingface_hub custom_draft_model_id="meta-llama/Meta-Llama-3-8B" hf_local_download_dir = download_dir huggingface_hub.snapshot_download( repo_id=custom_draft_model_id, revision="main", local_dir=hf_local_download_dir, token=hf_access_token, )
custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=artifacts_bucket_name, key_prefix="spec-dec-custom-draft-model", )
optimized_model = model_builder.optimize( instance_type=instance_type, accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )
predictor = optimized_model.deploy(accept_eula=True)
例 用于编译的优化作业
optimized_model = model_builder.optimize( instance_type="ml.inf2.48xlarge", 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", )
predictor = optimized_model.deploy(accept_eula=True)
例 推理请求
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 . . .'}
例 清理
predictor.delete_model() predictor.delete_endpoint(delete_endpoint_config=True)
隐私网站条款Cookie 首选项
© 2024, Amazon Web Services, Inc. 或其附属公司。保留所有权利。