培训任务操作员 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

培训任务操作员

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

使用 YAML 文件创建培训作业

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

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. 编辑xgboost-mnist-trainingjob.yaml文件来替换roleArn参数与您的<sagemaker-execution-role>, 和outputPath与 SageMaker 执行角色具有写入访问权限的 Amazon S3 存储桶一起使用。这些区域有:roleArn必须具有权限,以便 SageMaker 能够代表您访问 Amazon S3、亚马逊云监视和其他服务。有关创建 SageMaker 执行角色的更多信息,请参阅。SageMaker 角色. 使用以下命令应用 YAML 文件:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

使用头盔图创建培训作业

您可以使用头盔图表来运行 TrainingJobs。

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

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 导航到amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/文件夹并编辑values.yaml文件来替换像rolearnoutputpath使用与您的帐户相对应的值。RoLearning 必须具有权限,以便 SageMaker 能够代表您访问 Amazon S3、亚马逊云监视和其他服务。有关创建 SageMaker 执行角色的更多信息,请参阅。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 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创建一个TrainingJobKubernetes 资源。操作员在 SageMaker 中启动实际培训作业,并更新TrainingJob库贝内特斯资源来反映 SageMaker 中作业的状态。您需要为在工作期间使用的 SageMaker 资源产生费用。任务完成或停止后,不会产生任何费用。

注意:SageMaker 不允许您更新正在运行的训练作业。您无法编辑任何参数并重新应用文件/配置。更改元数据名称或删除现有作业并创建新作业。类似于现有的培训工作操作员,如 Kubeflow 中的 TFJob,update不支持 。

列出 TrainingJobs

使用以下命令列出使用 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

在作业完成或失败后,培训作业将继续列出。您可以删除TrainingJobJob,方法是按照 “删除培训作业” 步骤操作。已完成或停止的作业不会对 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

删除 TrainingJobs

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

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

此命令将从库贝内特中删除 SageMaker 训练作业。此命令将返回以下输出:

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

如果 SageMaker 上的作业仍在进行中,则作业将停止。在作业停止或完成后,您不会对 SageMaker 资源产生任何费用。

注意:SageMaker 不会删除培训职位。已停止的作业将继续显示在 SageMaker 控制台上。这些区域有:delete命令大约需要 2 分钟才能清理 SageMaker 中的资源。