Amazon SageMaker ジョブの使用 - Amazon SageMaker

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

Amazon SageMaker ジョブの使用

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

重要

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

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

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

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

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

以下のチュートリアルのサンプルオペレータージョブはすべて、一般公開されている 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>outputPathに置き換え、 SageMaker を実行ロールが書き込みアクセス権を持つ Amazon S3 バケットに置き換えます。がユーザーに代わって Amazon S3、Amazon 、およびその他の のサービス SageMaker にアクセスできるように CloudWatch、 には アクセス許可roleArnが必要です。の作成の詳細については、SageMaker 「ロール SageMaker ExecutionRole」を参照してください。以下のコマンドを使用して YAML ファイルを適用します。

    kubectl apply -f xgboost-mnist-trainingjob.yaml

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

Helm チャートを使用して を実行できます 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 などの値をアカウントに対応する値に置き換えます。RoleARN には、 がユーザーに代わって Amazon S3、Amazon CloudWatch、およびその他の のサービス SageMaker にアクセスできるようにアクセス許可が必要です。の作成の詳細については、SageMaker 「ロール SageMaker ExecutionRole」を参照してください。

を作成する 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/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>

からのログの表示 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 などのカウンターがいくつかあります。これらはそれぞれ、完了したトレーニングジョブと進行中のトレーニングジョブの数を表します。これらがどのように決定されるかの詳細については、 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

Operator SageMaker 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/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>

からのログの表示 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 実行ロールが書き込みアクセス権を持つ s3OutputPath Amazon S3 バケットに置き換えます。

  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に置き換え、outputPath SageMaker を実行ロールが書き込みアクセス権を持つ S3 バケットに置き換えます。

を作成する 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://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>

からのログの表示 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 演算子は、リアルタイム推論のためにエンドポイントの作成と削除、および既存のエンドポイントの更新をサポートします。ホスティングデプロイオペレーターは、 でモデル、endpoint-config、エンドポイントを作成 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://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>

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

  • Additional: ホスティングデプロイのステータスに関する追加情報。このフィールドはオプションであり、エラーが発生した場合にのみ追加されます。

  • Creation Time: エンドポイントが で作成された日時 SageMaker。

  • Endpoint ARN: SageMaker エンドポイント ARN。

  • 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、次の 2 つの方法でエンドポイントを呼び出すことができます。認証と URL リクエストの署名を行う AWS CLI を使用するか、cURL などの HTTP クライアントを使用します。独自のクライアントを使用する場合は、 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。オペレータは、 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
  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 を指定し、my-bucket のすべてのインスタンスを S3 バケットに置き換えます。

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

    がユーザーに代わって S3 バケット、Amazon 、およびその他の のサービス SageMaker にアクセスできるように CloudWatch、 には アクセス許可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 オペレーターは 2 つのステップを実行します。最初にリソース ID を登録し、スケーリングポリシーをそれぞれのリソース ID に適用します。Delete は両方のアクションを元に戻します。HAP を既存の SageMakerエンドポイントに適用するか、 HostingDeployment 演算子を使用して新しい SageMaker エンドポイントを作成できます。 SageMaker Auto Scaling の詳細については、「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 ファイルを編集して、endpointNamevariantNameRegion を指定します。

  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 ファイルを編集して、endpointNamevariantNameRegion を指定します。

  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 オペレーターを使用すると、同じスケーリングポリシーを複数のリソース ID に適用できます。リソース 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 と複数の endpointNamevariantName の値を指定します。

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

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

    kubectl apply -f hap-predefined-metric.yaml

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

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

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

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

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

  • 複数のリソース ID にカスタムのメトリクスを適用すると、すべてのリソース ID (バリアント) 値に同じディメンションまたは値が使用されます。例えば、インスタンス 1~5 にカスタマーメトリクスを適用し、エンドポイントバリアントのディメンションがバリアント 1 にマッピングされている場合、バリアント 1 がメトリクスを超過すると、すべてのエンドポイントがスケールアップまたはスケールダウンされます。

  • HAP オペレーターは、リソース ID のリストの更新をサポートします。仕様のリソース ID を変更、追加、削除すると、オートスケーリングポリシーが以前のバリアントのリストから削除され、新しく指定したリソース ID の組み合わせに適用されます。describe コマンドを使用すると、現在ポリシーが適用されているリソース ID が一覧表示されます。

リスト 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. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

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

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

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

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

の説明 HostingAutoscalingPolicy

HostingAutoscalingPolicy (HAP) の詳細を取得するには、次のコマンドを使用します。通常、これらのコマンドは、問題のデバッグや HAP のリソース ID (エンドポイント名とバリアント名の組み合わせ) のチェックに使用されます。

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 を持つエンドポイントを削除するには、kubectl delete コマンドを使用して HAP を削除してから、エンドポイントを削除します。