翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SageMaker ジョブの使用
このセクションは、元のバージョンの SageMaker Operators for Kubernetes
重要
元のバージョンの SageMaker Operators for Kubernetes
現在 Operators for Kubernetes SageMaker のバージョン v1.2.2
以下を使用している場合は、リソースを Amazon の ACK サービスコントローラー SageMaker
移行ステップについては、「リソースを最新のオペレータに移行する」を参照してください。
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 を使用して を作成する
-
以下のコマンドを使用して、トレーニング用のサンプル 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
に置き換え、 SageMaker を実行ロールが書き込みアクセス権を持つ Amazon S3 バケットに置き換えます。がユーザーに代わって Amazon S3、Amazon 、およびその他の のサービス SageMaker にアクセスできるように CloudWatch、 には アクセス許可roleArn
が必要です。の作成の詳細については、SageMaker 「ロール SageMaker ExecutionRole」を参照してください。以下のコマンドを使用して YAML ファイルを適用します。kubectl apply -f xgboost-mnist-trainingjob.yaml
Helm チャート TrainingJob を使用して を作成する
Helm チャートを使用して を実行できます 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 には、 がユーザーに代わって 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 を使用して を作成する
-
以下のコマンドを使用して、ハイパーパラメータチューニングジョブのサンプル 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 チャート HyperparameterTuningJob を使用して を作成する
Helm チャートを使用すると、ハイパーパラメータチューニングジョブを実行できます。
-
次のコマンドを使用して GitHub 、リポジトリをクローンしてソースを取得します。
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/
フォルダに移動します。 -
values.yaml
ファイルを編集して、roleArn
パラメータをsagemaker-execution-role
に置き換えます。さらに、ハイパーパラメータチューニングジョブが成功するためには、s3InputPath
とs3OutputPath
をアカウントに対応する値に変更する必要があります。
を作成する HyperparameterTuningJob
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
。これは、オペレーターがまだジョブを処理していないことを意味します。
ステータスカウンター
出力には、COMPLETED
や INPROGRESS
などのカウンターがいくつかあります。これらはそれぞれ、完了したトレーニングジョブと進行中のトレーニングジョブの数を表します。これらがどのように決定されるかの詳細については、 SageMaker API ドキュメントTrainingJobStatusCountersの「」を参照してください。
最良 TrainingJob
この列には、選択したメトリクスを最適化した TrainingJob
の名前が表示されます。
チューニングされたハイパーパラメータの概要を表示するには、以下を実行します。
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
TrainingJob
の詳細を表示するには、以下を実行します。
kubectl describe trainingjobs
<job name>
スポーン TrainingJobs
以下のコマンドを実行すると、HyperparameterTuningJob
によって起動された Kubernetes の 10 件すべてのトレーニングジョブを追跡することもできます。
kubectl get trainingjobs
の説明 HyperparameterTuningJob
describe
kubectl
コマンドを使用すると、デバッグの詳細情報を取得できます。
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
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 を使用して を作成する
以下のコマンドを使用して、バッチ変換ジョブ用のサンプル YAML ファイルをダウンロードします。
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
-
ファイルを編集
xgboost-mnist-batchtransform.yaml
して必要なパラメータを変更し、 を入力データinputdataconfig
に置き換え、 SageMaker 実行ロールが書き込みアクセス権を持つs3OutputPath
Amazon S3 バケットに置き換えます。 -
以下のコマンドを使用して 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
-
以下のコマンドを使用して、バッチ変換ジョブを作成します。
helm install . --generate-name
出力は次のようになります。
NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
-
Helm チャートが正常に作成されたことを確認するには、以下のコマンドを実行します。
helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-batchtransformjob-0.1.0 chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
このコマンドによって
BatchTransformJob
Kubernetes リソースが作成されます。オペレーターは で実際の変換ジョブを起動 SageMaker し、KubernetesBatchTransformJob
リソースを更新して のジョブのステータスを反映します 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
-
のステータス HostingDeployment が になると
InService
、更新できます。が稼働 HostingDeployment 状態になるまでに約 10 分かかる場合があります。ステータスが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 リソースの料金は発生しません。
ProcessingJob 演算子
ProcessingJob 演算子は、Amazon SageMaker 処理ジョブを起動するために使用されます。ジョブ SageMaker の処理の詳細については、「」を参照してくださいCreateProcessingJob。
YAML ファイル ProcessingJob を使用して を作成する
YAML ファイルを使用して Amazon SageMaker 処理ジョブを作成するには、次の手順に従います。
-
kmeans_preprocessing.py
前処理スクリプトをダウンロードします。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
-
Amazon Simple Storage Service (Amazon S3) バケットのいずれかに、
mnist_kmeans_example/processing_code
フォルダを作成し、そのフォルダにスクリプトをアップロードします。 -
kmeans-mnist-processingjob.yaml
ファイルをダウンロードします。wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
-
YAML ファイルを編集して
sagemaker-execution-role
を指定し、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「 ロール」を参照してください。 -
以下のいずれかのコマンドを使用して 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 つのエンドポイントバリアントに事前定義済みのメトリクスを適用する
-
以下のコマンドを使用して、事前定義済みのメトリクスのサンプル YAML ファイルをダウンロードします。
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
YAML ファイルを編集して、
endpointName
、variantName
、Region
を指定します。 -
以下のいずれかのコマンドを使用して、1 つのリソース ID (エンドポイント名とバリアント名の組み合わせ) に事前定義済みのメトリクスを適用します。
クラスターを対象範囲とするインストールの場合:
kubectl apply -f hap-predefined-metric.yaml
名前空間を対象範囲とするインストールの場合:
kubectl apply -f hap-predefined-metric.yaml -n
<NAMESPACE>
サンプル 2: 1 つのエンドポイントバリアントにカスタムのメトリクスを適用する
-
以下のコマンドを使用して、カスタムのメトリクスのサンプル YAML ファイルをダウンロードします。
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
-
YAML ファイルを編集して、
endpointName
、variantName
、Region
を指定します。 -
以下のいずれかのコマンドを使用して、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
リクエストが作成されます。
-
以下のコマンドを使用して、事前定義済みのメトリクスのサンプル YAML ファイルをダウンロードします。
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
YAML ファイルを編集して、
Region
と複数のendpointName
とvariantName
の値を指定します。 -
以下のいずれかのコマンドを使用して、複数のリソース 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
ポリシーが適用されたオートスケーリングエンドポイントを表示するには
-
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
左パネルの [Inference] (推論) を展開します。
-
[Endpoints] (エンドポイント) を選択します。
-
対象のエンドポイントの名前を選択します。
-
[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 を削除してから、エンドポイントを削除します。