本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 SageMaker 作业
要使用适用于 Kubernetes 的 SageMaker 运算符运行作业,您可以应用 YAML 文件或使用提供的 Helm 图表。
以下教程中的所有运算符示例作业都使用从公有 MNIST 数据集中获取的示例数据。要运行这些示例,请将数据集下载到您的 Amazon S3 存储桶。您可以在下载 MNIST 数据集
TrainingJob 运算符
训练作业操作员在 SageMaker 中启动您指定的训练作业规范,以便将其与 SageMaker 进行协调。您可以在 SageMaker SageMaker API 文档CreateTrainingJob中了解有关
使用简单 YAML 文件创建TrainingJob
-
使用以下命令下载用于训练的示例 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>
,并将outputPath
替换为 Amazon S3 执行角色具有写入访问权限的 SageMaker 存储桶。必须具有权限,roleArn
才能代表您访问 SageMaker、Amazon Amazon S3 和其他服务。CloudWatch有关创建 SageMaker ExecutionRole 的更多信息,请参阅 SageMaker 角色。使用以下命令应用 YAML 文件: kubectl apply -f xgboost-mnist-trainingjob.yaml
使用 Helm 图表创建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
等值替换为与您的账户对应的值。必须具有权限,RoleARN 才能代表您访问 SageMaker、Amazon S3 和其他服务。Amazon CloudWatch有关创建 SageMaker ExecutionRole 的更多信息,请参阅 SageMaker 角色。
创建训练作业
在 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 Chart 是否已成功创建,请运行:
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
。
列出训练作业
使用以下命令列出使用 Kubernetes 运算符创建的所有作业:
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
在作业完成或失败后,训练作业将继续列出。您可以按照“删除训练作业”步骤从列表中删除TrainingJob
作业。已完成或已停止的作业不会产生 SageMaker 资源的任何费用。
训练作业状态值
字段可以是以下值之一:STATUS
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
这些状态直接来自 SageMaker 官方 API 文档
除了官方 SageMaker 状态之外,STATUS
也可能为 SynchronizingK8sJobWithSageMaker
。 这意味着,操作符尚未处理作业。
辅助状态值
辅助状态直接来自 SageMaker 官方 API 文档
描述训练作业
您可以使用 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/my-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/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://my-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>
查看训练作业中的日志
使用以下命令查看 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
删除训练作业
使用以下命令在 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 控制台上。命令需要大约 2 分钟来清除 delete
中的资源。SageMaker
HyperParameterTuningJobs 运算符
超参数优化作业运算符通过在 SageMaker 中启动特定的超参数优化作业规范来将其与 SageMaker 进行协调。您可以在 SageMaker SageMaker
API 文档中了解有关 CreateHyperParameterTuningJob 超参数优化作业的更多信息。
使用简单 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
使用 Helm 图表创建超参数优化作业
您可以使用 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
更改为与您的账户对应的值。
创建超参数优化作业
在 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 Chart 是否已成功创建,请运行以下命令:
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 等现有训练作业运算符类似,不支持 update
。
列出超参数优化作业
使用以下命令列出使用 Kubernetes 运算符创建的所有作业:
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
。已完成或已停止的作业不会产生 SageMaker 资源的任何费用。
超参数优化作业状态值
字段可以是以下值之一:STATUS
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
这些状态直接来自 SageMaker 官方 API 文档
除了官方 SageMaker 状态之外,STATUS
也可能为 SynchronizingK8sJobWithSageMaker
。 这意味着,操作符尚未处理作业。
状态计数器
输出具有多个计数器,如 COMPLETED
和 INPROGRESS
。 这些分别表示已完成和正在进行中的训练作业数。有关如何确定这些内容的更多信息,请参阅 API 文档中的 TrainingJobStatusCounters
最佳训练作业
此列包含最佳优化所选指标的 TrainingJob
的名称。
要查看经过优化的超参数的摘要,请运行:
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
要查看有关 TrainingJob
的详细信息,请运行:
kubectl describe trainingjobs
<job name>
生成的训练作业
您也可以通过运行以下命令来跟踪 HyperparameterTuningJob
启动的 Kubernetes 中的所有 10 个训练作业:
kubectl get trainingjobs
描述超参数优化作业
您可以通过运行以下命令,使用 describe
kubectl
动词获取调试详细信息。
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
除了有关优化作业的信息之外,Kubernetes 的 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/my-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/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/my-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>
查看超参数优化作业中的日志
超参数优化作业没有日志,但启动的所有训练作业都具有日志。可以访问这些日志,就像它们是正常的训练作业一样。有关更多信息,请参阅“查看训练作业中的日志”。
删除超参数优化作业
使用以下命令在 SageMaker 中停止超参数作业。
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
此命令将从 Kubernetes 集群中删除超参数优化作业和关联的训练作业,并在 SageMaker 中停止它们。已停止或已完成的作业对于 SageMaker 资源不会产生任何费用。SageMaker 不会删除超参数优化作业。停止的作业将继续显示在 SageMaker 控制台上。
您的输出应与以下内容类似:
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
注意:删除命令大约需要 2 分钟来清除 SageMaker 中的资源。
BatchTransformJobs 运算符
批量转换作业运算符通过在 SageMaker 中启动指定的批量转换作业规范来将其与 SageMaker 进行协调。您可以在 SageMaker SageMaker
API 文档中了解有关 CreateTransformJob 批量转换作业的更多信息。
使用简单 YAML 文件创建BatchTransformJob
-
使用以下命令下载批量转换作业的示例 YAML 文件:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
-
编辑文件
xgboost-mnist-batchtransform.yaml
以更改必要参数,以将inputdataconfig
替换为输入数据,并将s3OutputPath
替换为 Amazon S3 执行角色具有写入访问权限的 SageMaker 存储桶。 -
使用以下命令应用 YAML 文件:
kubectl apply -f xgboost-mnist-batchtransform.yaml
使用 Helm 图表创建BatchTransformJob
您可以使用 Helm Charts 运行批量转换作业。
获取 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
文件以将 inputdataconfig
替换为输入数据,将 outputPath 替换为 SageMaker 执行角色具有写入访问权限的 S3 存储桶。
创建批量转换任务
-
使用以下命令创建批量转换作业:
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 Chart 是否已成功创建,请运行以下命令:
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 等现有训练作业运算符类似,不支持 update
。
列出批量转换作业
使用以下命令列出使用 Kubernetes 运算符创建的所有作业:
kubectl get batchtransformjob
您的输出应与以下内容类似:
NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-batch-transform Completed 2019-11-18T03:44:00Z xgboost-mnist-a88fb19809b511eaac440aa8axgboost
批处理转换作业完成或失败后,将继续列出该作业。您可以按照“删除批量转换任务”步骤从列表中删除 hyperparametertuningjob
。已完成或已停止的作业不会产生 SageMaker 资源的任何费用。
批量转换状态值
字段可以是以下值之一:STATUS
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
这些状态直接来自 SageMaker 官方 API 文档
除了官方 SageMaker 状态之外,STATUS
也可能为 SynchronizingK8sJobWithSageMaker
。 这意味着,操作符尚未处理作业。
描述批量转换作业
您可以通过运行以下命令,使用 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://my-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://my-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>
查看批量转换作业中的日志
使用以下命令查看 xgboost-mnist
批量转换作业中的日志:
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
删除批量转换任务
在 SageMaker 中使用以下命令停止批量转换任务。
kubectl delete batchTransformJob xgboost-mnist-batch-transform
您的输出应与以下内容类似:
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
此命令将从 Kubernetes 集群中删除批量转换作业,并在 SageMaker 中停止它们。已停止或已完成的作业对于 SageMaker 资源不会产生任何费用。从 SageMaker 中清除资源大约需要 2 分钟。
注意:SageMaker 不会删除批量转换作业。停止的作业将继续显示在 SageMaker 控制台上。
实时推理
HostingDeployments 支持创建和删除终端节点,以及更新现有终端节点。托管部署运算符通过在 SageMaker 中创建模型、终端节点配置和终端节点,将指定的托管部署作业规范与
SageMaker 保持一致。您可以在 SageMaker SageMaker API 文档中了解有关 CreateEndpoint 推理的更多信息。
配置 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
:运算符正在准备创建终端节点。 -
ReconcilingEndpoint
:操作符正在创建、更新或删除终端节点资源。如果 HostingDeployment 保持此状态,请使用kubectl describe
查看Additional
字段中的原因。 -
OutOfService
:终端节点不可用于接收传入请求。 -
Creating
:CreateEndpoint正在执行。 -
Updating
:UpdateEndpoint 或UpdateEndpointWeightsAndCapacities 正在执行。 -
SystemUpdating
:终端节点正在维护,并且无法更新、删除或重新扩展,直到完成。此维护操作不会更改任何客户指定的值,例如 VPC 配置、KMS 加密、模型、实例类型或实例计数。 -
RollingBack
:终端节点无法向上扩展或向下扩展或更改其变体权重,并且正在回滚到其之前的配置。回滚完成后,终端节点将恢复为InService
状态。此过渡状态仅适用于启用了自动伸缩且变体权重或容量正在作为 UpdateEndpointWeightsAndCapacities调用的一部分发生更改或显式调用 UpdateEndpointWeightsAndCapacities 操作时的终端节点。 -
InService
:终端节点可用于处理传入请求。 -
Deleting
:DeleteEndpoint正在执行。 -
Failed
:无法创建、更新或重新扩展终端节点。有关失败的信息,请使用 DescribeEndpoint:FailureReason。DeleteEndpoint 是可在失败的终端节点上执行的唯一操作。
描述托管部署
您可以通过运行以下命令,使用 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://my-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
:终端节点 ARN。SageMaker -
Endpoint Config Name
:终端节点配置的 SageMaker 名称。 -
Endpoint Name
:终端节点的 SageMaker 名称。 -
Endpoint Status
:终端节点的状态。 -
Endpoint URL
:可用于访问终端节点的 HTTPS URL。有关更多信息,请参阅在 SageMaker 托管服务上部署模型。 -
FailureReason
:如果创建、更新或删除命令失败,原因如下所示。 -
Last Check Time
:操作符上次检查终端节点的状态的时间。 -
Last Modified Time
:上次修改终端节点的时间。 -
Model Names
:模型名称与 HostingDeployment 模型名称之间的键值对。SageMaker
调用终端节点
终端节点状态为 InService
后,您可以通过两种方式调用终端节点:使用 AWS CLI (执行身份验证和 URL 请求签名) 或使用 HTTP 客户端 (如 cURL)。如果您使用自己的客户端,则需要自行执行
AWSv4 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://my-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
通过以下命令删除 HostingDeployment:kubectl delete hostingdeployments host-xgboost
您的输出应与以下内容类似:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
-
要验证托管部署是否已删除,请使用以下命令:
kubectl get hostingdeployments No resources found.
已删除的终端节点不会产生任何 SageMaker 资源费用。