使用 Amazon SageMaker Jobs - Amazon SageMaker

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

使用 Amazon SageMaker Jobs

本节基于 Kubernetes SageMaker 操作员的原始版本。

重要

我们将停止对 Kubernetes SageMaker 操作员的原始版本的开发和技术支持。

如果您当前正在使用适用于 Kubernetes 的 Oper SageMaker at ors 版本v1.2.2或更低版本,我们建议您将资源迁移到 Amazon 的ACK服务控制器。 SageMakerACK服务控制器是基于 Kubernetes 的新一代 SageMaker 运算符 AWS 适用于 Kubernetes 的控制器 ()。ACK

有关迁移步骤的信息,请参阅将资源迁移到最新 Operator

有关终止对 Kubernetes SageMaker 操作员原始版本支持的常见问题解答,请参阅 宣布终止对 Kubernetes SageMaker 操作员原始版本的支持

要使用适用于 Kubernetes 的运算符运行 Amazon SageMaker 作业,您可以应用YAML文件或使用提供的头盔图表。

以下教程中的所有示例操作员作业都使用来自公共数据MNIST集的示例数据。要运行这些示例,请将数据集下载到 Amazon S3 存储桶中。您可以在下载数据集中找到该MNIST数据集。

TrainingJob 操作员

培训作业操作员 SageMaker 通过在中为你启动指定的培训作业规范,使之与之保持一致 SageMaker。您可以在 SageMaker CreateTrainingJob API文档中了解有关 SageMaker 培训作业的更多信息。

TrainingJob 使用YAML文件创建

  1. 使用以下命令下载示例YAML文件进行训练:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. 编辑xgboost-mnist-trainingjob.yaml文件以将roleArn参数替换为您的<sagemaker-execution-role>和 SageMaker 执行角色outputPath具有写入权限的 Amazon S3 存储桶。roleArn必须拥有权限才能代表您访问 Amazon S3 CloudWatch、Amazon 和其他服务。 SageMaker 有关创建的更多信息 SageMaker ExecutionRole,请参阅SageMaker 角色。使用以下命令应用该YAML文件:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

TrainingJob 使用 Helm Chart 创建一个

你可以使用 Helm Charts 来运行 TrainingJobs。

  1. 使用以下命令克隆 GitHub 存储库以获取源代码:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 导航到 amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ 文件夹并编辑 values.yaml 文件,将 rolearnoutputpath 之类的值替换为与您的账户对应的值。该角色ARN必须具有权限才能代表您访问 Amazon S3 CloudWatch、Amazon 和其他服务。 SageMaker 有关创建的更多信息 SageMaker ExecutionRole,请参阅SageMaker 角色

创建 TrainingJob

将角色和 Amazon S3 存储桶替换为 values.yaml 中的相应值后,您可以使用以下命令创建训练作业:

helm install . --generate-name

您的输出应与以下内容类似:

NAME: chart-12345678 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-trainingjob.

验证您的训练 Helm 图表

要验证 Helm 图表是否已成功创建,请运行:

helm ls

您的输出应与以下内容类似:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-12345678 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-12345678 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm install 创建一个 TrainingJob Kubernetes 资源。操作员在中启动实际的训练作业, SageMaker 并更新 TrainingJob Kubernetes 资源以反映中作业的状态。 SageMaker在工作期间使用的 SageMaker资源会产生费用。作业完成或停止后,您无需支付任何费用。

注意: SageMaker 不允许您更新跑步训练作业。您不能编辑任何参数并重新应用配置文件。要么更改元数据名称,要么删除现有作业并创建新作业。与 Kubeflow TFJob 中现有的训练作业操作员类似,update不支持。

名单 TrainingJobs

使用以下命令列出使用 Kubernetes Operator 创建的所有作业:

kubectl get TrainingJob

列出所有作业的输出应与以下内容类似:

kubectl get trainingjobs NAME STATUS SECONDARY-STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-from-for-s3 InProgress Starting 2019-11-20T23:42:35Z xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f

训练作业无论是完成还是失败,都将继续列在列表中。您可以按照删除 TrainingJobs 步骤从列表中删除 TrainingJob 作业。已完成或停止的任务不会产生任何 SageMaker 资源费用。

TrainingJob 状态值

STATUS 字段可以是以下任一值:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

这些状态直接来自 SageMaker 官方API文档

除了官方 SageMaker 身份外,还有可能成STATUSSynchronizingK8sJobWithSageMaker。这意味着 Operator 尚未处理该作业。

次要状态值

次要状态直接来自 SageMaker 官方API文档。它们包含有关作业状态的更详细信息。

描述一个 TrainingJob

您可以使用 describe kubectl 命令获取有关训练作业的更多详细信息。这通常用于调试问题或检查训练作业的参数。要获取有关训练作业的信息,请使用以下命令:

kubectl describe trainingjob xgboost-mnist-from-for-s3

训练作业的输出应与以下内容类似:

Name: xgboost-mnist-from-for-s3 Namespace: default Labels: <none> Annotations: <none> API Version: sagemaker.aws.amazon.com/v1 Kind: TrainingJob Metadata: Creation Timestamp: 2019-11-20T23:42:35Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 23119 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3 UID: 6d7uiui-0bef-11ea-b94e-0ed467example Spec: Algorithm Specification: Training Image: 8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Hyper Parameters: Name: eta Value: 0.2 Name: gamma Value: 4 Name: max_depth Value: 5 Name: min_child_weight Value: 6 Name: num_class Value: 10 Name: num_round Value: 10 Name: objective Value: multi:softmax Name: silent Value: 0 Input Data Config: Channel Name: train Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/ Region: us-east-2 Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole Stopping Condition: Max Runtime In Seconds: 86400 Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example Status: Cloud Watch Log URL: https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix Last Check Time: 2019-11-20T23:44:29Z Sage Maker Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample Secondary Status: Downloading Training Job Status: InProgress Events: <none>

查看来自的日志 TrainingJobs

使用以下命令查看 kmeans-mnist 训练作业的日志:

kubectl smlogs trainingjob xgboost-mnist-from-for-s3

您的输出应类似于以下内容。实例日志按时间顺序排列。

"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting" xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training. xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ',' xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated

删除 TrainingJobs

使用以下命令停止 Amazon 上的训练作业 SageMaker:

kubectl delete trainingjob xgboost-mnist-from-for-s3

此命令从 Kubernetes 中移除 SageMaker 训练作业。此命令将返回以下输出:

trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted

如果作业仍在进行中 SageMaker,则该作业将停止。任务停止或完成后,您无需支付任何 SageMaker 资源费用。

注意: SageMaker 不会删除训练作业。已停止的任务继续显示在 SageMaker 控制台上。该delete命令大约需要 2 分钟才能从中清理资源 SageMaker。

HyperParameterTuningJob操作员

超参数调整作业操作员通过在中启动您指定的超参数调整作业规范,使其与 SageMaker 之保持一致。 SageMaker您可以在 SageMaker CreateHyperParameterTuningJob API文档中了解有关 SageMaker 超参数调整任务的更多信息。

HyperparameterTuningJob 使用YAML文件创建

  1. 使用以下命令下载超参数调整作业的示例YAML文件:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. 编辑 xgboost-mnist-hpo.yaml 文件以将 roleArn 参数替换为您的 sagemaker-execution-role。要成功运行超参数优化作业,您还必须将 s3InputPaths3OutputPath 更改为与您的账户对应的值。使用以下命令应用更新YAML文件:

    kubectl apply -f xgboost-mnist-hpo.yaml

HyperparameterTuningJob 使用 Helm Chart 创建

您可以使用 Helm 图表运行超参数优化作业。

  1. 使用以下命令克隆 GitHub 存储库以获取源代码:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 导航到 amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/文件夹。

  3. 编辑 values.yaml 文件以将 roleArn 参数替换为您的 sagemaker-execution-role。要成功运行超参数优化作业,您还必须将 s3InputPaths3OutputPath 更改为与您的账户对应的值。

创建 HyperparameterTuningJob

将角色和 Amazon S3 路径替换为 values.yaml 中的相应值后,您可以使用以下命令创建超参数优化作业:

helm install . --generate-name

您的输出应类似于以下内容:

NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-hyperparametertuningjob.

验证图表安装

要验证是否已成功创建 Helm 图表,请运行以下命令:

helm ls

您的输出应与以下内容类似:

NAME NAMESPACE REVISION UPDATED chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 STATUS CHART APP VERSION chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm install 创建一个 HyperParameterTuningJob Kubernetes 资源。操作员在中启动实际的超参数优化作业, SageMaker 并更新 HyperParameterTuningJob Kubernetes 资源以反映中作业的状态。 SageMaker在工作期间使用的 SageMaker 资源会产生费用。作业完成或停止后,您无需支付任何费用。

注意: SageMaker 不允许您更新正在运行的超参数调整作业。您不能编辑任何参数并重新应用配置文件。您必须更改元数据名称,或删除现有作业并创建新作业。与 Kubeflow 中的 TFJob 等现有训练作业 Operator 类似,update 不受支持。

名单 HyperparameterTuningJobs

使用以下命令列出使用 Kubernetes Operator 创建的所有作业:

kubectl get hyperparametertuningjob

您的输出应与以下内容类似:

NAME STATUS CREATION-TIME COMPLETED INPROGRESS ERRORS STOPPED BEST-TRAINING-JOB SAGEMAKER-JOB-NAME xgboost-mnist-hpo Completed 2019-10-17T01:15:52Z 10 0 0 0 xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123 xgboostha92f5e3cf07b11e9bf6c123

超参数优化作业无论是完成还是失败,都将继续列在列表中。您可以按照删除一个 HyperparameterTuningJob 中的步骤从列表中删除 hyperparametertuningjob。已完成或停止的任务不会产生任何 SageMaker 资源费用。

超参数优化作业状态值

STATUS 字段可以是以下任一值:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

这些状态直接来自 SageMaker 官方API文档

除了官方 SageMaker 身份外,还有可能成STATUSSynchronizingK8sJobWithSageMaker。这意味着 Operator 尚未处理该作业。

状态计数器

输出有几个计数器,如 COMPLETEDINPROGRESS。它们分别表示已完成和正在进行的训练作业的数量。有关如何确定这些值的更多信息,请参阅 SageMaker API文档TrainingJobStatusCounters中的。

最佳 TrainingJob

此列包含对所选指标进行了最佳优化的 TrainingJob 的名称。

要查看已优化超参数的摘要,请运行:

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

要查看有关 TrainingJob 的详细信息,请运行:

kubectl describe trainingjobs <job name>

已生成 TrainingJobs

您还可以运行以下命令,跟踪 HyperparameterTuningJob 在 Kubernetes 中启动的所有 10 个训练作业:

kubectl get trainingjobs

描述一个 HyperparameterTuningJob

您可以使用 describe kubectl 命令获取调试详细信息。

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

除了有关调优作业的信息外,Kubernetes 的 Operator 还会在输出中显示超参数调优作业找到的最佳训练作业,如下所示: SageMaker describe

Name: xgboost-mnist-hpo Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":... API Version: sagemaker.aws.amazon.com/v1 Kind: HyperparameterTuningJob Metadata: Creation Timestamp: 2019-10-17T01:15:52Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 8167 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo UID: a92f5e3c-f07b-11e9-bf6c-06d6f303uidu Spec: Hyper Parameter Tuning Job Config: Hyper Parameter Tuning Job Objective: Metric Name: validation:error Type: Minimize Parameter Ranges: Integer Parameter Ranges: Max Value: 20 Min Value: 10 Name: num_round Scaling Type: Linear Resource Limits: Max Number Of Training Jobs: 10 Max Parallel Training Jobs: 10 Strategy: Bayesian Training Job Early Stopping Type: Off Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Region: us-east-2 Training Job Definition: Algorithm Specification: Training Image: 12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Input Data Config: Channel Name: train Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Static Hyper Parameters: Name: base_score Value: 0.5 Name: booster Value: gbtree Name: csv_weights Value: 0 Name: dsplit Value: row Name: grow_policy Value: depthwise Name: lambda_bias Value: 0.0 Name: max_bin Value: 256 Name: max_leaves Value: 0 Name: normalize_type Value: tree Name: objective Value: reg:linear Name: one_drop Value: 0 Name: prob_buffer_row Value: 1.0 Name: process_type Value: default Name: rate_drop Value: 0.0 Name: refresh_leaf Value: 1 Name: sample_type Value: uniform Name: scale_pos_weight Value: 1.0 Name: silent Value: 0 Name: sketch_eps Value: 0.03 Name: skip_drop Value: 0.0 Name: tree_method Value: auto Name: tweedie_variance_power Value: 1.5 Stopping Condition: Max Runtime In Seconds: 86400 Status: Best Training Job: Creation Time: 2019-10-17T01:16:14Z Final Hyper Parameter Tuning Job Objective Metric: Metric Name: validation:error Value: Objective Status: Succeeded Training End Time: 2019-10-17T01:20:24Z Training Job Arn: arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample Training Job Name: xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059 Training Job Status: Completed Training Start Time: 2019-10-17T01:18:35Z Tuned Hyper Parameters: Name: num_round Value: 18 Hyper Parameter Tuning Job Status: Completed Last Check Time: 2019-10-17T01:21:01Z Sage Maker Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Training Job Status Counters: Completed: 10 In Progress: 0 Non Retryable Error: 0 Retryable Error: 0 Stopped: 0 Total Error: 0 Events: <none>

查看来自的日志 HyperparameterTuningJobs

超参数优化作业没有日志,但它们启动的所有训练作业都有日志。可以像访问普通的训练作业一样访问这些日志。有关更多信息,请参阅 查看来自的日志 TrainingJobs

删除一个 HyperparameterTuningJob

使用以下命令停止中的超参数作业。 SageMaker

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

此命令从您的 Kubernetes 集群中移除超参数调整任务和相关的训练作业,并将其停止。 SageMaker已停止或已完成的任务不会产生任何 SageMaker 资源费用。 SageMaker 不会删除超参数调整作业。已停止的任务继续显示在 SageMaker 控制台上。

您的输出应与以下内容类似:

hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted

注意:删除命令大约需要 2 分钟才能从中清理资源 SageMaker。

BatchTransformJob 操作员

Batch transform 作业操作员 SageMaker 通过在中启动指定的批处理转换作业规范,使其与之保持一致 SageMaker。您可以在 SageMaker CreateTransformJob API文档中了解有关 SageMaker 批处理转换作业的更多信息。

BatchTransformJob 使用YAML文件创建

  1. 使用以下命令下载批处理转换作业的示例YAML文件:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. 编辑文件xgboost-mnist-batchtransform.yaml以更改必要的参数,将替换为您的输入数据和 SageMaker 执行角色s3OutputPath具有写入权限的 Amazon S3 存储桶。inputdataconfig

  3. 使用以下命令应用该YAML文件:

    kubectl apply -f xgboost-mnist-batchtransform.yaml

BatchTransformJob使用 Helm Chart 创建

您可以使用 Helm 图表来运行批量转换作业。

获取 Helm 安装程序目录

使用以下命令克隆 GitHub 存储库以获取源代码:

git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git

配置 Helm 图表

导航到 amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/文件夹。

编辑该values.yaml文件,将替换为您的输入数据和 outputPath SageMaker 执行角色具有写入权限的 S3 存储桶。inputdataconfig

创建一个 BatchTransformJob

  1. 使用以下命令创建批量转换作业:

    helm install . --generate-name

    您的输出应与以下内容类似:

    NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
  2. 要验证是否已成功创建 Helm 图表,请运行以下命令:

    helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-batchtransformjob-0.1.0 chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

    此命令创建一个 BatchTransformJob Kubernetes 资源。操作员在中启动实际的转换作业, SageMaker 并更新 BatchTransformJob Kubernetes 资源以反映中作业的状态。 SageMaker在工作期间使用的 SageMaker 资源会产生费用。作业完成或停止后,您无需支付任何费用。

注意: SageMaker 不允许您更新正在运行的批处理转换作业。您不能编辑任何参数并重新应用配置文件。您必须更改元数据名称,或删除现有作业并创建新作业。与 Kubeflow 中的 TFJob 等现有训练作业 Operator 类似,update 不受支持。

名单 BatchTransformJobs

使用以下命令列出使用 Kubernetes Operator 创建的所有作业:

kubectl get batchtransformjob

您的输出应与以下内容类似:

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-batch-transform Completed 2019-11-18T03:44:00Z xgboost-mnist-a88fb19809b511eaac440aa8axgboost

批量转换作业无论是完成还是失败,都将继续列在列表中。您可以按照 删除一个 BatchTransformJob 步骤从列表中删除 hyperparametertuningjob。已完成或停止的任务不会产生任何 SageMaker 资源费用。

批量转换状态值

STATUS 字段可以是以下任一值:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

这些状态直接来自 SageMaker 官方API文档

除了官方 SageMaker 身份外,还有可能成STATUSSynchronizingK8sJobWithSageMaker。这意味着 Operator 尚未处理该作业。

描述一个 BatchTransformJob

您可以使用 describe kubectl 命令获取调试详细信息。

kubectl describe batchtransformjob xgboost-mnist-batch-transform

您的输出应与以下内容类似:

Name: xgboost-mnist-batch-transform Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"... API Version: sagemaker.aws.amazon.com/v1 Kind: BatchTransformJob Metadata: Creation Timestamp: 2019-11-18T03:44:00Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21990924 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist UID: a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM Spec: Model Name: TrainingJob-20190814SMJOb-IKEB Region: us-east-1 Transform Input: Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Type: S3Prefix S 3 Uri: s3://amzn-s3-demo-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://amzn-s3-demo-bucket/mnist_kmeans_example/output Transform Resources: Instance Count: 1 Instance Type: ml.m4.xlarge Status: Last Check Time: 2019-11-19T22:50:40Z Sage Maker Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aaSMJOB Transform Job Status: Completed Events: <none>

查看来自的日志 BatchTransformJobs

使用以下命令查看 xgboost-mnist 批量转换作业的日志:

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

删除一个 BatchTransformJob

使用以下命令停止中的批处理转换作业 SageMaker。

kubectl delete batchTransformJob xgboost-mnist-batch-transform

您的输出应与以下内容类似:

batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted

此命令将批处理转换任务从 Kubernetes 集群中移除,并将其停止。 SageMaker已停止或已完成的任务不会产生任何 SageMaker资源费用。删除大约需要 2 分钟才能从中清理资源 SageMaker。

注意: SageMaker 不会删除批量转换作业。已停止的任务继续显示在 SageMaker 控制台上。

HostingDeployment 操作员

HostingDeployment 操作员支持创建和删除终端节点,以及更新现有端点,以便进行实时推理。托管部署操作员通过在中创建模型、端点配置和端点 SageMaker 来协调您指定的托管部署任务规范。 SageMaker您可以在 SageMaker CreateEndpointAPI文档中了解有关 SageMaker 推理的更多信息。

配置 HostingDeployment资源

使用以下命令下载托管部署任务的示例YAML文件:

wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml

xgboost-mnist-hostingdeployment.yaml 文件包含以下组件,可根据需要进行编辑:

  • ProductionVariants。生产变体是为单个模型提供服务的一组实例。 SageMaker 根据设定的重量在所有生产变体之间进行负载平衡。

  • 模型。模型是为模型提供服务所ARN必需的容器和执行角色。它至少需要一个容器。

  • 容器。容器用于指定数据集和处理映像。如果您使用的是自己的自定义算法而不是提供的算法 SageMaker,则推理代码必须满足 SageMaker 要求。有关更多信息,请参阅使用自己的算法 SageMaker

创建一个 HostingDeployment

要创建 HostingDeployment,kubectl请使用以下命令应用该文件hosting.yaml

kubectl apply -f hosting.yaml

SageMaker 使用指定配置创建终端节点。您需要为终端节点生命周期内使用的 SageMaker资源付费。一旦端点删除,您就无需支付任何费用。

创建过程大约需要 10 分钟。

名单 HostingDeployments

要验证是否 HostingDeployment 已创建,请使用以下命令:

kubectl get hostingdeployments

您的输出应与以下内容类似:

NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Creating host-xgboost-def0e83e0d5f11eaaa450aSMLOGS

HostingDeployment 状态值

状态字段可以是以下值之一:

  • SynchronizingK8sJobWithSageMaker:Operator 正准备创建端点。

  • ReconcilingEndpoint:Operator 正在创建、更新或删除端点资源。如果 HostingDeployment 仍处于此状态,kubectl describe请使用在Additional字段中查看原因。

  • OutOfService:端点无法接受传入的请求。

  • Creating: CreateEndpoint正在运行。

  • Updating: UpdateEndpoint或者UpdateEndpointWeightsAndCapacities正在运行。

  • SystemUpdating:端点正在进行维护,维护完成之前无法更新、删除或重新扩缩。此维护操作不会更改任何客户指定的值,例如VPC配置、 AWS KMS 加密、模型、实例类型或实例数量。

  • RollingBack:端点无法扩展或缩减,也无法更改其变体权重,并且正在回滚到其先前的配置。回滚完成后,端点将返回 InService 状态。此过渡状态仅适用于已开启自动缩放功能且在调用过程中或显式UpdateEndpointWeightsAndCapacities调用UpdateEndpointWeightsAndCapacities操作时正在发生变体权重或容量变化的端点。

  • InService:该端点可用于处理传入的请求。

  • Deleting: DeleteEndpoint正在运行。

  • Failed:无法创建、更新或重新扩缩该端点。使用 DescribeEndpoint:FailureReason获取有关故障的信息。DeleteEndpoint是唯一可以在故障端点上执行的操作。

描述一个 HostingDeployment

您可以使用 describe kubectl 命令获取调试详细信息。

kubectl describe hostingdeployment

您的输出应与以下内容类似:

Name: host-xgboost Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..." API Version: sagemaker.aws.amazon.com/v1 Kind: HostingDeployment Metadata: Creation Timestamp: 2019-11-22T19:40:00Z Finalizers: sagemaker-operator-finalizer Generation: 1 Resource Version: 4258134 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost UID: def0e83e-0d5f-11ea-aa45-0a3507uiduid Spec: Containers: Container Hostname: xgboost Image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest Model Data URL: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz Models: Containers: xgboost Execution Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Name: xgboost-model Primary Container: xgboost Production Variants: Initial Instance Count: 1 Instance Type: ml.c5.large Model Name: xgboost-model Variant Name: all-traffic Region: us-east-2 Status: Creation Time: 2019-11-22T19:40:04Z Endpoint Arn: arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample Endpoint Config Name: host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample Endpoint Name: host-xgboost-def0e83e0d5f11eaaa450a350733ba06 Endpoint Status: Creating Endpoint URL: https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations Last Check Time: 2019-11-22T19:43:57Z Last Modified Time: 2019-11-22T19:40:04Z Model Names: Name: xgboost-model Value: xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample Events: <none>

状态字段使用以下字段提供更多信息:

  • Additional:有关托管部署状态的其他消息。此字段为可选字段,只有在出错时才会填入。

  • Creation Time: 终端节点是在中创建的 SageMaker。

  • Endpoint ARN: SageMaker 终端节点ARN。

  • Endpoint Config Name: 端点配置的 SageMaker 名称。

  • Endpoint Name: 端点的 SageMaker 名称。

  • Endpoint Status:端点的状态。

  • Endpoint URL:HTTPSURL可用于访问端点的。有关更多信息,请参阅在 SageMaker 托管服务上部署模型

  • FailureReason:如果创建、更新或删除命令失败,则在此处显示原因。

  • Last Check Time:Operator 上次检查端点状态的时间。

  • Last Modified Time:上次修改端点的时间。

  • Model Names:模型名称与 HostingDeployment 模型名称的键值对。 SageMaker

调用端点

终端节点状态变为后InService,您可以通过两种方式调用终端节点:使用 AWS CLI,它进行身份验证和URL请求签名,或者使用像 c 这样的HTTP客户端URL。如果您使用自己的客户端,则需要这样做 AWS v4 自行URL签名和身份验证。

使用调用终端节点 AWS CLI,运行以下命令。请务必将区域和终端节点名称替换为终端节点的区域和 SageMaker 终端节点名称。可以从 kubectl describe 的输出中获取此信息。

# Invoke the endpoint with mock input data. aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name <endpoint name> \ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null

例如,如果您的区域为 us-east-2,而您的端点配置名称为 host-xgboost-f56b6b280d7511ea824b129926example,则以下命令将调用端点:

aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null 4.95847082138

此处,4.95847082138 是模型对模拟数据的预测值。

更新 HostingDeployment

  1. 一旦状态 HostingDeployment 为InService,就可以对其进行更新。可能需要大约 10 分钟 HostingDeployment 才能投入使用。要验证状态是否为 InService,请使用以下命令:

    kubectl get hostingdeployments
  2. HostingDeployment 可以在状态变为之前进行更新InService。操作员会等到 SageMaker 终端节点到达InService后再应用更新。

    要应用更新,请修改 hosting.yaml 文件。例如,将 initialInstanceCount 字段从 1 更改为 2,如下所示:

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. 保存文件,然后使用 kubectl 应用更新,如下所示。您应该会看到状态从 InService 变为 ReconcilingEndpoint,然后变为 Updating

    $ kubectl apply -f hosting.yaml hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost ReconcilingEndpoint host-xgboost-def0e83e0d5f11eaaa450a350abcdef $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Updating host-xgboost-def0e83e0d5f11eaaa450a3507abcdef

SageMaker 使用您的模型部署一组新实例,将流量切换为使用新实例,并耗尽旧实例。此过程一旦开始,状态就会变为 Updating。更新完成后,您的端点变为 InService。此过程大约需要 10 分钟。

删除 HostingDeployment

  1. kubectl使用以下命令删除 a HostingDeployment :

    kubectl delete hostingdeployments host-xgboost

    您的输出应与以下内容类似:

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. 要验证是否已删除托管部署,请使用以下命令:

    kubectl get hostingdeployments No resources found.

已删除的终端节点不会产生任何 SageMaker 资源费用。

ProcessingJob 操作员

ProcessingJob 操作员用于启动 Amazon SageMaker 处理任务。有关 SageMaker 处理作业的更多信息,请参阅CreateProcessingJob

ProcessingJob 使用YAML文件创建

按照以下步骤使用YAML文件创建 Amazon SageMaker 处理任务:

  1. 下载 kmeans_preprocessing.py 预处理脚本。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. 在 Amazon Simple Storage Service (Amazon S3) 存储桶中,创建 mnist_kmeans_example/processing_code 文件夹,然后将脚本上传到该文件夹。

  3. 下载 kmeans-mnist-processingjob.yaml 文件。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. 编辑YAML文件以指定您的,sagemaker-execution-role并将的所有实例替换为您的 S3 存储桶。amzn-s3-demo-bucket

    ... metadata: name: kmeans-mnist-processing ... roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role> ... processingOutputConfig: outputs: ... s3Output: s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py

    sagemaker-execution-role必须拥有权限才能代表您访问您的 S3 存储桶 CloudWatch、Amazon 和其他服务。 SageMaker 有关创建执行角色的更多信息,请参阅SageMaker角色

  5. 使用以下命令之一应用该YAML文件。

    对于集群范围的安装:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    对于命名空间范围的安装:

    kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>

名单 ProcessingJobs

使用以下命令之一列出使用该 ProcessingJob 运算符创建的所有作业。 SAGEMAKER-JOB-NAME 来自YAML文件的metadata部分。

对于集群范围的安装:

kubectl get ProcessingJob kmeans-mnist-processing

对于命名空间范围的安装:

kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing

您的输出应类似于以下内容:

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385

输出将列出所有作业,而不管其状态如何。要从列表中删除作业,请参阅删除处理作业

ProcessingJob 状态
  • SynchronizingK8sJobWithSageMaker - 作业首先提交到集群。Operator 已收到请求,正准备创建处理作业。

  • Reconciling - Operator 正在初始化或从暂时性错误中恢复,以及出现其他错误。如果处理作业仍处于此状态,请使用 kubectl describe 命令在 Additional 字段中查看原因。

  • InProgress | Completed | Failed | Stopping | Stopped— SageMaker 处理作业的状态。有关更多信息,请参阅DescribeProcessingJob

  • Error - Operator 无法通过协调进行恢复。

已完成、停止或失败的任务不会产生额外的 SageMaker资源费用。

描述一个 ProcessingJob

使用以下命令之一获取有关处理作业的更多详细信息。这些命令通常用于调试问题或检查处理作业的参数。

对于集群范围的安装:

kubectl describe processingjob kmeans-mnist-processing

对于命名空间范围的安装:

kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>

处理作业的输出应类似于以下内容。

$ kubectl describe ProcessingJob kmeans-mnist-processing Name: kmeans-mnist-processing Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",... API Version: sagemaker.aws.amazon.com/v1 Kind: ProcessingJob Metadata: Creation Timestamp: 2020-09-22T21:13:25Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21746658 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing UID: 7410ed52-fd18-11ea-b19a-165ae9f9e385 Spec: App Specification: Container Entrypoint: python /opt/ml/processing/code/kmeans_preprocessing.py Image Uri: 763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04 Environment: Name: MYVAR Value: my_value Name: MYVAR2 Value: my_value2 Network Config: Processing Inputs: Input Name: mnist_tar s3Input: Local Path: /opt/ml/processing/input s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz Input Name: source_code s3Input: Local Path: /opt/ml/processing/code s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py Processing Output Config: Outputs: Output Name: train_data s3Output: Local Path: /opt/ml/processing/output_train/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: test_data s3Output: Local Path: /opt/ml/processing/output_test/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: valid_data s3Output: Local Path: /opt/ml/processing/output_valid/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Processing Resources: Cluster Config: Instance Count: 1 Instance Type: ml.m5.xlarge Volume Size In GB: 20 Region: us-west-2 Role Arn: arn:aws:iam::<acct-id>:role/m-sagemaker-role Stopping Condition: Max Runtime In Seconds: 1800 Tags: Key: tagKey Value: tagValue Status: Cloud Watch Log URL: https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix Last Check Time: 2020-09-22T21:14:29Z Processing Job Status: InProgress Sage Maker Processing Job Name: kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385 Events: <none>

删除一个 ProcessingJob

删除处理任务时,该 SageMaker 处理任务将从 Kubernetes 中移除,但不会从中删除该作业。 SageMaker如果中的作业状态为 SageMaker ,InProgress则作业已停止。处理已停止的任务不会产生任何 SageMaker资源费用。使用以下命令之一删除处理作业。

对于集群范围的安装:

kubectl delete processingjob kmeans-mnist-processing

对于命名空间范围的安装:

kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>

处理作业的输出应类似于以下内容。

processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted

注意

SageMaker 不会删除处理作业。已停止的作业继续显示在 SageMaker 控制台中。该delete命令需要几分钟才能从中清理资源 SageMaker。

HostingAutoscalingPolicy (HAP) 运算符

HostingAutoscalingPolicy (HAP) 运算符将资源列表IDs作为输入,并对每个资源应用相同的策略。每个资源 ID 都是端点名称和变体名称的组合。HAP操作员执行两个步骤:注册资源,IDs然后将扩展策略应用于每个资源 ID。 Delete撤消这两个操作。您可以将应用HAP于现有 SageMaker终端节点,也可以使用HostingDeployment 运算符创建新的 SageMaker 终端节点。您可以在应用程序自动缩放策略文档中阅读有关 SageMaker 自动缩放的更多信息。

注意

kubectl 命令中,您可以使用简写形式 hap 代替 hostingautoscalingpolicy

HostingAutoscalingPolicy 使用YAML文件创建

使用YAML文件创建 HostingAutoscalingPolicy (HAP),将预定义或自定义指标应用于一个或多个 SageMaker 终端节点。

Amazon SageMaker 需要特定的值才能对您的变体应用自动缩放。如果YAML规范中未指定这些值,则HAP运算符将应用以下默认值。

# Do not change Namespace = "sagemaker" # Do not change ScalableDimension = "sagemaker:variant:DesiredInstanceCount" # Only one supported PolicyType = "TargetTrackingScaling" # This is the default policy name but can be changed to apply a custom policy DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"

使用以下示例创建一个HAP,将预定义或自定义指标应用于一个或多个终端节点。

示例 1:将预定义指标应用于单个端点变体

  1. 使用以下命令下载预定义指标的示例YAML文件:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. 编辑YAML文件以指定您的endpointNamevariantName、和Region

  3. 使用以下命令之一将预定义指标应用于单个资源 ID(端点名称和变体名称组合)。

    对于集群范围的安装:

    kubectl apply -f hap-predefined-metric.yaml

    对于命名空间范围的安装:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

示例 2:将自定义指标应用于单个端点变体

  1. 使用以下命令下载自定义指标的示例YAML文件:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. 编辑YAML文件以指定您的endpointNamevariantName、和Region

  3. 使用以下命令之一将自定义指标应用于单个资源 ID(端点名称和变体名称组合),以代替推荐的 SageMakerVariantInvocationsPerInstance

    注意

    Amazon SageMaker 不会检查您的YAML规格是否有效。

    对于集群范围的安装:

    kubectl apply -f hap-custom-metric.yaml

    对于命名空间范围的安装:

    kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>

示例 3:将扩缩策略应用于多个端点和变体

您可以使用HAP运算符将相同的扩展策略应用于多个资源IDs。将为每个资源 ID(端点名称和变体名称组合)创建单独的 scaling_policy 请求。

  1. 使用以下命令下载预定义指标的示例YAML文件:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. 编辑YAML文件以指定您的Region和倍variantNameendpointName和值。

  3. 使用以下命令之一将预定义的指标应用于多个资源IDs(端点名称和变体名称组合)。

    对于集群范围的安装:

    kubectl apply -f hap-predefined-metric.yaml

    对于命名空间范围的安装:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

多个端点和变体的注意事项 HostingAutoscalingPolicies

当您使用多个资源时,需要考虑以下注意事项IDs:

  • 如果您对多个资源应用单个策略IDs,则会ARN为每个资源 ID 创建一个策略。五个端点有五个 P olicyARNs。当您在策略上运行 describe 命令时,响应将显示为一项作业并包含单个作业状态。

  • 如果您将自定义指标应用于多个资源IDs,则所有资源 ID(变体)值将使用相同的维度或值。例如,如果您对实例 1-5 应用客户指标,并且端点变体维度映射到变体 1,则当变体 1 超过指标时,所有端点都会扩展或缩减。

  • HAP操作员支持更新资源列表IDs。如果您在规范中修改、添加或删除资源IDs,则自动缩放策略将从之前的变体列表中删除,并应用于新指定的资源 ID 组合。使用describe命令列出当前应用策略的资源IDs。

名单 HostingAutoscalingPolicies

使用以下命令之一列出使用HAP运算符创建的所有 HostingAutoscalingPolicies (HAPs)。

对于集群范围的安装:

kubectl get hap

对于命名空间范围的安装:

kubectl get hap -n <NAMESPACE>

您的输出应类似于以下内容:

NAME STATUS CREATION-TIME hap-predefined Created 2021-07-13T21:32:21Z

使用以下命令检查 HostingAutoscalingPolicy (HAP) 的状态。

kubectl get hap <job-name>

返回以下值之一:

  • Reconciling - 某些类型的错误将状态显示为 Reconciling 而不是 Error。一些示例包括服务器端错误和处于 CreatingUpdating 状态的端点。请查看状态中的 Additional 字段或 Operator 日志以了解更多详细信息。

  • Created

  • Error

查看您应用策略的自动扩缩端点
  1. 打开亚马逊 SageMaker 控制台,网址为https://console.aws.amazon.com/sagemaker/

  2. 在左侧面板中,展开推理

  3. 选择端点

  4. 选择相关端点的名称。

  5. 滚动到端点运行时设置部分。

描述一个 HostingAutoscalingPolicy

使用以下命令获取有关 a HostingAutoscalingPolicy (HAP) 的更多详细信息。这些命令通常用于调试问题或检查的资源IDs(端点名称和变体名称组合)HAP。

kubectl describe hap <job-name>

更新一个 HostingAutoscalingPolicy

HostingAutoscalingPolicy (HAP) 运算符支持更新。您可以编辑您的YAML规范以更改值,然后重新应用该政策。HAP操作员删除现有策略并应用新策略。

删除一个 HostingAutoscalingPolicy

使用以下命令之一删除 HostingAutoscalingPolicy (HAP) 策略。

对于集群范围的安装:

kubectl delete hap hap-predefined

对于命名空间范围的安装:

kubectl delete hap hap-predefined -n <NAMESPACE>

此命令会删除扩缩策略并从 Kubernetes 中取消注册扩缩目标。此命令将返回以下输出:

hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted

使用以下命令更新或删除终端节点 HostingAutoscalingPolicy

要更新具有 HostingAutoscalingPolicy (HAP) 的终端节点,请使用kubectldelete命令删除HAP,更新端点,然后重新应用。HAP

要删除具有的终端节点HAP,请在删除终端节点HAP之前使用kubectldelete命令将其删除。