Amazon SageMaker ジョブの使用 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker ジョブの使用

このセクションでは、SageMaker Operators for Kubernetes の元のバージョンに基づいています。

重要

元のバージョンの SageMaker Operators for Kubernetes の開発とテクニカルサポートは停止しています。

Kubernetes 用の SageMaker Operators のバージョン v1.2.2以下を現在使用している場合は、ACKAmazon 用のサービスコントローラー SageMakerにリソースを移行することをお勧めします。ACK サービスコントローラーは、 Controllers for Kubernetes () に基づく新世代の SageMaker Operators for Kubernetes です。 AWS ACK

移行ステップについては、「リソースを最新のオペレータに移行する」を参照してください。

SageMaker Operators for Kubernetes の元のバージョンのサポート終了に関するよくある質問への回答については、「」を参照してください。 元のバージョンの SageMaker Operators for Kubernetes のサポート終了のお知らせ

Operators for Kubernetes を使用して Amazon SageMaker ジョブを実行するには、YAMLファイルを適用するか、提供された Helm Charts を使用します。

次のチュートリアルのすべてのサンプル演算子ジョブでは、パブリックMNISTデータセットから取得したサンプルデータを使用します。これらのサンプルを実行するには、Amazon S3 バケットにデータセットをダウンロードします。データセットは、MNISTデータセットのダウンロードで確認できます。

TrainingJob 演算子

トレーニングジョブオペレーターは、 でトレーニングジョブ仕様を起動 SageMaker することで、指定されたトレーニングジョブ仕様を に調整します SageMaker。 SageMaker トレーニングジョブの詳細については、 SageMaker CreateTrainingJob API ドキュメントを参照してください。

YAML ファイル TrainingJob を使用して を作成する

  1. 次のコマンドを使用して、トレーニング用のサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. xgboost-mnist-trainingjob.yaml ファイルを編集して、 roleArnパラメータを <sagemaker-execution-role>に置き換え、 SageMaker 実行ロールが書き込みアクセスを持つ Amazon S3 バケットoutputPathに置き換えます。は、 がユーザーに代わって Amazon S3、Amazon CloudWatch、およびその他の サービス SageMaker にアクセスできるように、アクセス許可を持っているroleArn必要があります。の作成の詳細については SageMaker ExecutionRole、SageMaker 「 ロール」を参照してください。次のコマンドを使用して YAML ファイルを適用します。

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Helm チャート TrainingJob を使用して を作成する

Helm Charts を使用して を実行できます TrainingJobs。

  1. 次のコマンドを使用して、 GitHub リポジトリをクローンしてソースを取得します。

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ フォルダに移動して values.yaml ファイルを編集し、rolearnoutputpath などの値をアカウントに対応する値に置き換えます。ロールARNには、 がユーザーに代わって Amazon S3、Amazon CloudWatch、およびその他の のサービス SageMaker にアクセスできるようにアクセス許可が必要です。の作成の詳細については SageMaker ExecutionRole、SageMaker 「 ロール」を参照してください。

を作成する TrainingJob

values.yaml で適切な値に置き換えたロールと Amazon S3 バケットを使用すると、以下のコマンドを使用してトレーニングジョブを作成できます。

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 し、Kubernetes 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

ジョブが完了または失敗した後も、トレーニングジョブは引き続き一覧表示されます。以下の「削除 TrainingJobs」の手順を実行すると、一覧から TrainingJob ジョブを削除できます。完了または停止したジョブには、 SageMaker リソースの料金は発生しません。

TrainingJob ステータス値

STATUS フィールドの値は以下のいずれかになります。

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

これらのステータスは、 SageMaker 公式APIドキュメント から直接取得されます。

公式 SageMaker ステータスに加えて、 を STATUSにすることができますSynchronizingK8sJobWithSageMaker。これは、オペレーターがまだジョブを処理していないことを意味します。

二次的なステータス値

セカンダリステータスは、 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 ハイパーパラメータチューニングジョブの詳細については、 SageMaker CreateHyperParameterTuningJob API ドキュメントを参照してください。

YAML ファイル HyperparameterTuningJob を使用して を作成する

  1. 次のコマンドを使用して、ハイパーパラメータチューニングジョブのサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. xgboost-mnist-hpo.yaml ファイルを編集して、roleArn パラメータを sagemaker-execution-role に置き換えます。さらに、ハイパーパラメータチューニングジョブが成功するためには、s3InputPaths3OutputPath をアカウントに対応する値に変更する必要があります。次のコマンドを使用して、更新YAMLファイルを適用します。

    kubectl apply -f xgboost-mnist-hpo.yaml

Helm チャート HyperparameterTuningJob を使用して を作成する

Helm チャートを使用すると、ハイパーパラメータチューニングジョブを実行できます。

  1. 次のコマンドを使用して、 GitHub リポジトリをクローンしてソースを取得します。

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/ フォルダに移動します。

  3. values.yaml ファイルを編集して、roleArn パラメータを sagemaker-execution-role に置き換えます。さらに、ハイパーパラメータチューニングジョブが成功するためには、s3InputPaths3OutputPath をアカウントに対応する値に変更する必要があります。

を作成する HyperparameterTuningJob

values.yaml で適切な値に置き換えたロールと Amazon 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-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 し、Kubernetes HyperParameterTuningJob リソースを更新して のジョブのステータスを反映します SageMaker。ジョブ中に使用された SageMaker リソースには料金が発生します。ジョブが完了または停止すると、料金は発生しません。

:実行中のハイパーパラメータチューニングジョブを更新 SageMaker することはできません。パラメータを編集して設定ファイルを再適用することはできません。メタデータ名を変更するか、既存のジョブを削除して新しいジョブを作成する必要があります。Kubeflow の TFJob のような既存のトレーニングジョブオペレーターと同様に、update はサポートされていません。

リスト HyperparameterTuningJobs

以下のコマンドを使用すると、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」の手順を実行すると、一覧から hyperparametertuningjob ジョブを削除できます。完了または停止したジョブには、 SageMaker リソースの料金は発生しません。

ハイパーパラメータチューニングジョブのステータス値

STATUS フィールドの値は以下のいずれかになります。

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

これらのステータスは、 SageMaker 公式APIドキュメント から直接取得されます。

公式 SageMaker ステータスに加えて、 を STATUSにすることができますSynchronizingK8sJobWithSageMaker。これは、オペレーターがまだジョブを処理していないことを意味します。

ステータスカウンター

出力には、COMPLETEDINPROGRESS などのカウンターがいくつかあります。これらはそれぞれ、完了したトレーニングジョブと進行中のトレーニングジョブの数を表します。これらがどのように決定されるかの詳細については、 ドキュメントTrainingJobStatusCountersの SageMaker API「」を参照してください。

ベスト 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

チューニングジョブに関する情報に加えて、 SageMaker Operator for Kubernetes は、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

: delete コマンドは、 からリソースをクリーンアップするのに約 2 分かかります SageMaker。

BatchTransformJob 演算子

バッチ変換ジョブ演算子は、 で起動 SageMaker することで、指定したバッチ変換ジョブ仕様を に調整します SageMaker。 SageMaker バッチ変換ジョブの詳細については、 SageMaker CreateTransformJob APIドキュメント を参照してください。

YAML ファイル BatchTransformJob を使用して を作成する

  1. 次のコマンドを使用して、バッチ変換ジョブのサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. ファイルを編集xgboost-mnist-batchtransform.yamlして必要なパラメータを変更し、 を入力データinputdataconfig、および SageMaker 実行ロールが書き込みアクセス権を持つ Amazon S3 バケットs3OutputPathに置き換えます。

  3. 次のコマンドを使用して YAML ファイルを適用します。

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Helm チャートを使用して BatchTransformJobを作成する

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 ファイルを編集して、 を入力データinputdataconfigに、実行 SageMaker ロールが書き込みアクセス権を持つ S3 バケット outputPath に置き換えます。

を作成する BatchTransformJob

  1. 以下のコマンドを使用して、バッチ変換ジョブを作成します。

    helm install . --generate-name

    出力は次のようになります。

    NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
  2. Helm チャートが正常に作成されたことを確認するには、以下のコマンドを実行します。

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

    このコマンドによって BatchTransformJob Kubernetes リソースが作成されます。オペレータは で実際の変換ジョブを起動 SageMaker し、Kubernetes BatchTransformJob リソースを更新して のジョブのステータスを反映します SageMaker。ジョブ中に使用された SageMaker リソースには料金が発生します。ジョブが完了または停止すると、料金は発生しません。

:実行中のバッチ変換ジョブを更新 SageMaker することはできません。パラメータを編集して設定ファイルを再適用することはできません。メタデータ名を変更するか、既存のジョブを削除して新しいジョブを作成する必要があります。Kubeflow の TFJob のような既存のトレーニングジョブオペレーターと同様に、update はサポートされていません。

リスト BatchTransformJobs

以下のコマンドを使用すると、Kubernetes オペレーターを使って作成されたすべてのジョブを一覧表示できます。

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。これは、オペレーターがまだジョブを処理していないことを意味します。

の説明 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 推論の詳細については、 SageMaker CreateEndpoint APIドキュメントを参照してください。

リソースを設定する HostingDeployment

次のコマンドを使用して、ホストデプロイジョブのサンプルYAMLファイルをダウンロードします。

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

xgboost-mnist-hostingdeployment.yaml ファイルには以下のコンポーネントが含まれており、必要に応じて編集できます。

  • ProductionVariants。本番稼働用バリアントは、設定された重みに従ってすべての本番稼働用バリアント間で単一の model. SageMaker load-balances を提供するインスタンスのセットです。

  • モデル。モデルは、モデルの提供ARNに必要なコンテナと実行ロールです。少なくとも 1 つのコンテナが必要です。

  • コンテナ。コンテナは、データセットと提供されるイメージを指定します。が提供するアルゴリズムの代わりに独自のカスタムアルゴリズムを使用している場合は 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 ステータス値

status フィールドは、以下の値のいずれかになります。

  • SynchronizingK8sJobWithSageMaker: オペレーターはエンドポイントを作成する準備をしています。

  • ReconcilingEndpoint: オペレーターはエンドポイントリソースを作成、更新、削除しています。がこの状態 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>

status フィールドには、以下のフィールドを使用して詳細情報が表示されます。

  • 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: オペレーターが最後にエンドポイントのステータスをチェックした日時。

  • Last Modified Time: エンドポイントが最後に変更された日時。

  • Model Names: HostingDeployment モデル名と SageMakerモデル名のキーと値のペア。

エンドポイントを呼び出す

エンドポイントのステータスが になったらInService、次の 2 つの方法でエンドポイントを呼び出すことができます。認証とURLリクエストの署名 AWS CLIを行う を使用するか、c などのHTTPクライアントを使用しますURL。独自のクライアントを使用する場合は、 AWS v4 URL署名と認証を自分で実行する必要があります。

を使用してエンドポイントを呼び出すには AWS CLI、次のコマンドを実行します。リージョン名とエンドポイント名は、必ずエンドポイントのリージョン名と SageMaker エンドポイント名に置き換えてください。この情報は、kubectl describe の出力から得ることができます。

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

例えば、リージョンが us-east-2 であり、エンドポイントの設定名が host-xgboost-f56b6b280d7511ea824b129926example であれば、以下のコマンドでエンドポイントを呼び出します。

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

ここで、4.95847082138 はモックデータのモデルからの予測になります。

更新 HostingDeployment

  1. のステータス HostingDeployment が になるとInService、更新できます。サービス開始 HostingDeployment までに約 10 分かかる場合があります。ステータスが InService になったことを確認するには、以下のコマンドを使用します。

    kubectl get hostingdeployments
  2. ステータスが になる前に、 を更新 HostingDeployment できますInService。オペレータは、更新を適用するInService前に SageMaker エンドポイントが になるまで待機します。

    更新を適用するには、hosting.yaml ファイルを修正します。例えば、以下のように、initialInstanceCount フィールドを 1 から 2 に変更します。

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. ファイルを保存してから、以下のように kubectl を使用して更新を適用します。ステータスは InService から ReconcilingEndpointUpdating の順に変化します。

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

SageMaker は、モデルで新しいインスタンスのセットをデプロイし、新しいインスタンスを使用するようにトラフィックを切り替え、古いインスタンスをドレインします。このプロセスが開始されるとすぐに、ステータスが Updating になります。更新が完了すると、エンドポイントは InService になります。このプロセスの所要時間は約 10 分です。

を削除する HostingDeployment

  1. kubectl を使用して、次のコマンド HostingDeployment を使用して を削除します。

    kubectl delete hostingdeployments host-xgboost

    出力は次のようになります。

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. ホスティングデプロイが削除されたことを確認するには、以下のコマンドを使用します。

    kubectl get hostingdeployments No resources found.

削除されたエンドポイントには、 SageMaker リソースの料金が発生しません。

ProcessingJob 演算子

ProcessingJob 演算子は、Amazon SageMaker 処理ジョブを起動するために使用されます。ジョブ SageMaker の処理の詳細については、「」を参照してくださいCreateProcessingJob

YAML ファイル ProcessingJob を使用して を作成する

YAML ファイルを使用して Amazon SageMaker 処理ジョブを作成するには、次の手順に従います。

  1. kmeans_preprocessing.py 前処理スクリプトをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. Amazon Simple Storage Service (Amazon S3) バケットのいずれかに、mnist_kmeans_example/processing_code フォルダを作成し、そのフォルダにスクリプトをアップロードします。

  3. kmeans-mnist-processingjob.yaml ファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. YAML ファイルを編集して を指定sagemaker-execution-roleし、 のすべてのインスタンスを S3 バケットamzn-s3-demo-bucketに置き換えます。

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

    は、ユーザーに代わって が S3 バケット、Amazon CloudWatch、およびその他の サービス SageMaker にアクセスできるようにアクセス許可を持っているsagemaker-execution-role必要があります。実行ロールの作成の詳細については、SageMaker「 ロール」を参照してください。

  5. 次のいずれかのコマンドを使用して YAML ファイルを適用します。

    クラスターを対象範囲とするインストールの場合:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    名前空間を対象範囲とするインストールの場合:

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

リスト ProcessingJobs

次のいずれかのコマンドを使用して、 ProcessingJob 演算子を使用して作成されたすべてのジョブを一覧表示します。 SAGEMAKER-JOB-NAME は、 YAML ファイルの metadataセクションから取得します。

クラスターを対象範囲とするインストールの場合:

kubectl get ProcessingJob kmeans-mnist-processing

名前空間を対象範囲とするインストールの場合:

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

出力は以下のようになります。

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

出力には、ステータスに関係なく、すべてのジョブが一覧表示されます。リストからジョブを削除するには、「処理ジョブを削除する」を参照してください。

ProcessingJob ステータス
  • SynchronizingK8sJobWithSageMaker - ジョブは最初にクラスターに送信されます。オペレーターはリクエストを受け取っており、処理ジョブ作成の準備をしています。

  • Reconciling - オペレーターは他のオペレーターと共に初期化、または一時的なエラーからの復旧を実行しています。処理ジョブがこのステータスのまま変化しない場合は、kubectl describe コマンドを使用し、Additional フィールドでその理由を確認します。

  • InProgress | Completed | Failed | Stopping | Stopped – SageMaker 処理ジョブのステータス。詳細については、「」を参照してくださいDescribeProcessingJob

  • Error - オペレーターは照合によって復旧できません。

完了、停止、または失敗したジョブでは、リソースに対して 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 に適用するという 2 つのステップを実行します。 は両方のアクションを元Deleteに戻します。HAP を既存の SageMakerエンドポイントに適用するか、 HostingDeployment 演算子 を使用して新しい SageMaker エンドポイントを作成できます。 SageMaker 自動スケーリングの詳細については、Application Autoscaling Policy ドキュメント を参照してください。

注記

kubectl コマンドでは、hostingautoscalingpolicy の代わりに短縮形 hap を使用できます。

YAML ファイル HostingAutoscalingPolicy を使用して を作成する

YAML ファイルを使用して、事前定義されたメトリクスまたはカスタムメトリクスを 1 つ以上の SageMaker エンドポイントに適用する HostingAutoscalingPolicy (HAP) を作成します。

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"

次のサンプルを使用して、定義済みまたはカスタムメトリクスを 1 つ以上のエンドポイントHAPに適用する を作成します。

サンプル 1: 1 つのエンドポイントバリアントに事前定義済みのメトリクスを適用する

  1. 次のコマンドを使用して、事前定義されたメトリクスのサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. YAML ファイルを編集してendpointName、、variantName、および を指定しますRegion

  3. 以下のいずれかのコマンドを使用して、1 つのリソース ID (エンドポイント名とバリアント名の組み合わせ) に事前定義済みのメトリクスを適用します。

    クラスターを対象範囲とするインストールの場合:

    kubectl apply -f hap-predefined-metric.yaml

    名前空間を対象範囲とするインストールの場合:

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

サンプル 2: 1 つのエンドポイントバリアントにカスタムのメトリクスを適用する

  1. 次のコマンドを使用して、カスタムメトリクスのサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. YAML ファイルを編集してendpointName、、variantName、および を指定しますRegion

  3. 以下のいずれかのコマンドを使用して、1 つのリソース ID (エンドポイント名とバリアント名の組み合わせ) に、推奨の SageMakerVariantInvocationsPerInstance の代わりにカスタムのメトリクスを適用します。

    注記

    Amazon SageMaker はYAML仕様の有効性を確認しません。

    クラスターを対象範囲とするインストールの場合:

    kubectl apply -f hap-custom-metric.yaml

    名前空間を対象範囲とするインストールの場合:

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

サンプル 3: 複数のエンドポイントとバリアントにスケーリングポリシーを適用する

HAP 演算子を使用して、同じスケーリングポリシーを複数のリソース に適用できますIDs。リソース ID (エンドポイント名とバリアント名の組み合わせ) ごとに個別の scaling_policy リクエストが作成されます。

  1. 次のコマンドを使用して、事前定義されたメトリクスのサンプルYAMLファイルをダウンロードします。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. YAML ファイルを編集して、 Regionと複数の endpointName および variantName値を指定します。

  3. 次のいずれかのコマンドを使用して、事前定義されたメトリクスを複数のリソース IDs (エンドポイント名とバリアント名の組み合わせ) に適用します。

    クラスターを対象範囲とするインストールの場合:

    kubectl apply -f hap-predefined-metric.yaml

    名前空間を対象範囲とするインストールの場合:

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

複数のエンドポイントとバリアント HostingAutoscalingPolicies に関する の考慮事項

複数のリソース を使用する場合、以下の考慮事項が適用されますIDs。

  • 複数のリソース に単一のポリシーを適用するとIDs、リソース ID ごとに 1 つのポリシーARNが作成されます。5 つのエンドポイントには 5 つの P がありますolicyARNs。ポリシーで describe コマンドを実行すると、レスポンスは 1 つのジョブとして表示され、含まれるジョブステータスも 1 つになります。

  • カスタムメトリクスを複数のリソース に適用すると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 - 特定のタイプのエラーでは、ステータスが Error ではなく Reconciling として表示されます。サーバー側のエラーやエンドポイントなどは、Creating または Updating の状態になります。詳細は、ステータスまたはオペレーターのログの Additional フィールドをチェックします。

  • Created

  • Error

ポリシーが適用されたオートスケーリングエンドポイントを表示するには
  1. で Amazon SageMaker コンソールを開きますhttps://console.aws.amazon.com/sagemaker/

  2. 左パネルの [Inference] (推論) を展開します。

  3. [Endpoints] (エンドポイント) を選択します。

  4. 対象のエンドポイントの名前を選択します。

  5. [Endpoint runtime settings] (エンドポイントのランタイム設定) セクションまでスクロールします。

の説明 HostingAutoscalingPolicy

() の詳細については、次のコマンドを使用します 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 コマンドを使用して を削除します。