本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本节基于 Kubernetes SageMaker 操作
重要
我们将停止对 Kubernetes SageMaker 操作
如果您当前使用的是 Kubernetes SageMaker 操作v1.2.2
或更低版本,我们建议您将资源迁移到亚马逊的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 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
,您可以通过两种方式调用终端节点:使用进行身份验证和URL请求签名的终端节点,或者使用像 c 这样的HTTP客户端URL。 AWS CLI如果您使用自己的客户端,则需要自己进行 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
命令将其删除。