本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon SageMaker Jobs
本节基于 Kubernetes SageMaker 操作
重要
我们将停止对 Kubernetes SageMaker 操作
如果您当前正在使用适用于 Kubernetes 的 Oper SageMaker atv1.2.2
或更低版本,我们建议您将资源迁移到 Amazon 的ACK服务控制
有关迁移步骤的信息,请参阅将资源迁移到最新 Operator。
有关终止对 Kubernetes SageMaker 操作员原始版本支持的常见问题解答,请参阅 宣布终止对 Kubernetes SageMaker 操作员原始版本的支持
要使用适用于 Kubernetes 的运算符运行 Amazon SageMaker 作业,您可以应用YAML文件或使用提供的头盔图表。
以下教程中的所有示例操作员作业都使用来自公共数据MNIST集的示例数据。要运行这些示例,请将数据集下载到 Amazon S3 存储桶中。您可以在下载数据集中找到该MNIST数据集。
内容
TrainingJob 操作员
培训作业操作员 SageMaker 通过在中为你启动指定的培训作业规范,使之与之保持一致 SageMaker。您可以在 SageMaker CreateTrainingJob API文档中了解有关 SageMaker 培训作业的更多信息。
主题
TrainingJob 使用YAML文件创建
-
使用以下命令下载示例YAML文件进行训练:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
-
编辑
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。
-
使用以下命令克隆 GitHub 存储库以获取源代码:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
导航到
amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/
文件夹并编辑values.yaml
文件,将rolearn
和outputpath
之类的值替换为与您的账户对应的值。该角色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 身份外,还有可能成STATUS
为SynchronizingK8sJobWithSageMaker
。这意味着 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文件创建
-
使用以下命令下载超参数调整作业的示例YAML文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
-
编辑
xgboost-mnist-hpo.yaml
文件以将roleArn
参数替换为您的sagemaker-execution-role
。要成功运行超参数优化作业,您还必须将s3InputPath
和s3OutputPath
更改为与您的账户对应的值。使用以下命令应用更新YAML文件:kubectl apply -f xgboost-mnist-hpo.yaml
HyperparameterTuningJob 使用 Helm Chart 创建
您可以使用 Helm 图表运行超参数优化作业。
-
使用以下命令克隆 GitHub 存储库以获取源代码:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
导航到
amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/
文件夹。 -
编辑
values.yaml
文件以将roleArn
参数替换为您的sagemaker-execution-role
。要成功运行超参数优化作业,您还必须将s3InputPath
和s3OutputPath
更改为与您的账户对应的值。
创建 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 身份外,还有可能成STATUS
为SynchronizingK8sJobWithSageMaker
。这意味着 Operator 尚未处理该作业。
状态计数器
输出有几个计数器,如 COMPLETED
和 INPROGRESS
。它们分别表示已完成和正在进行的训练作业的数量。有关如何确定这些值的更多信息,请参阅 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文件创建
使用以下命令下载批处理转换作业的示例YAML文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
-
编辑文件
xgboost-mnist-batchtransform.yaml
以更改必要的参数,将替换为您的输入数据和 SageMaker 执行角色s3OutputPath
具有写入权限的 Amazon S3 存储桶。inputdataconfig
-
使用以下命令应用该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
-
使用以下命令创建批量转换作业:
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.
-
要验证是否已成功创建 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 身份外,还有可能成STATUS
为SynchronizingK8sJobWithSageMaker
。这意味着 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
-
一旦状态 HostingDeployment 为
InService
,就可以对其进行更新。可能需要大约 10 分钟 HostingDeployment 才能投入使用。要验证状态是否为InService
,请使用以下命令:kubectl get hostingdeployments
-
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
-
保存文件,然后使用
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
kubectl
使用以下命令删除 a HostingDeployment :kubectl delete hostingdeployments host-xgboost
您的输出应与以下内容类似:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
-
要验证是否已删除托管部署,请使用以下命令:
kubectl get hostingdeployments No resources found.
已删除的终端节点不会产生任何 SageMaker 资源费用。
ProcessingJob 操作员
ProcessingJob 操作员用于启动 Amazon SageMaker 处理任务。有关 SageMaker 处理作业的更多信息,请参阅CreateProcessingJob。
ProcessingJob 使用YAML文件创建
按照以下步骤使用YAML文件创建 Amazon SageMaker 处理任务:
-
下载
kmeans_preprocessing.py
预处理脚本。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
-
在 Amazon Simple Storage Service (Amazon S3) 存储桶中,创建
mnist_kmeans_example/processing_code
文件夹,然后将脚本上传到该文件夹。 -
下载
kmeans-mnist-processingjob.yaml
文件。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
-
编辑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.pysagemaker-execution-role
必须拥有权限才能代表您访问您的 S3 存储桶 CloudWatch、Amazon 和其他服务。 SageMaker 有关创建执行角色的更多信息,请参阅SageMaker角色。 -
使用以下命令之一应用该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:将预定义指标应用于单个端点变体
-
使用以下命令下载预定义指标的示例YAML文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
编辑YAML文件以指定您的
endpointName
variantName
、和Region
。 -
使用以下命令之一将预定义指标应用于单个资源 ID(端点名称和变体名称组合)。
对于集群范围的安装:
kubectl apply -f hap-predefined-metric.yaml
对于命名空间范围的安装:
kubectl apply -f hap-predefined-metric.yaml -n
<NAMESPACE>
示例 2:将自定义指标应用于单个端点变体
-
使用以下命令下载自定义指标的示例YAML文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
-
编辑YAML文件以指定您的
endpointName
variantName
、和Region
。 -
使用以下命令之一将自定义指标应用于单个资源 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
请求。
-
使用以下命令下载预定义指标的示例YAML文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
编辑YAML文件以指定您的
Region
和倍variantName
数endpointName
和值。 -
使用以下命令之一将预定义的指标应用于多个资源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
。一些示例包括服务器端错误和处于Creating
或Updating
状态的端点。请查看状态中的Additional
字段或 Operator 日志以了解更多详细信息。 Created
Error
查看您应用策略的自动扩缩端点
-
打开亚马逊 SageMaker 控制台,网址为https://console.aws.amazon.com/sagemaker/
。 -
在左侧面板中,展开推理。
-
选择端点。
-
选择相关端点的名称。
-
滚动到端点运行时设置部分。
描述一个 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) 的终端节点,请使用kubectl
delete
命令删除HAP,更新端点,然后重新应用。HAP
要删除具有的终端节点HAP,请在删除终端节点HAP之前使用kubectl
delete
命令将其删除。