

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

# Amazon SageMaker AI ジョブを使用する
<a name="kubernetes-sagemaker-jobs"></a>

このセクションは、[SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s) のオリジナルバージョンに基づいています。

**重要**  
[SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のオリジナルバージョンの開発とテクニカルサポートを中止します。  
現在 [SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のバージョン `v1.2.2` 以下を使用している場合は、リソースを [Amazon SageMaker 用 ACK サービスコントローラー](https://github.com/aws-controllers-k8s/sagemaker-controller)に移行することをお勧めします。ACK サービスコントローラーは、[AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/) をベースにした新世代の SageMaker Operators for Kubernetes です。  
移行ステップについては、「[リソースを最新のオペレータに移行する](kubernetes-sagemaker-operators-migrate.md)」を参照してください。  
元のバージョンの SageMaker Operators for Kubernetes のサポート終了に関するよくある質問への回答については、「[SageMaker AI Operators for Kubernetes のオリジナル バージョンのサポート終了についてのお知らせ](kubernetes-sagemaker-operators-eos-announcement.md)」を参照してください。

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

以下のチュートリアルのサンプルオペレータージョブはすべて、一般公開されている MNIST データセットから取得したサンプルデータを使用しています。これらのサンプルを実行するには、Amazon S3 バケットにデータセットをダウンロードします。データセットの場所は、「[MNIST データセットをダウンロードする](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html)」で確認できます。

**Topics**
+ [TrainingJob オペレーター](#trainingjob-operator)
+ [HyperParameterTuningJob オペレーター](#hyperparametertuningjobs-operator)
+ [BatchTransformJob オペレーター](#batchtransformjobs-operator)
+ [HostingDeployment オペレーター](#hosting-deployment-operator)
+ [ProcessingJob オペレーター](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy (HAP) オペレーター](#kubernetes-hap-operator)

## TrainingJob オペレーター
<a name="trainingjob-operator"></a>

トレーニングジョブオペレーターは、トレーニングジョブを SageMaker AI で起動して、指定されたジョブの仕様を SageMaker AI と調整します。SageMaker のトレーニングジョブについては、SageMaker AI の [CreateTrainingJob API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html)を参照してください。

**Topics**
+ [YAML ファイルを使用して TrainingJob を作成する](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Helm チャートを使用して TrainingJob を作成する](#create-a-trainingjob-using-a-helm-chart)
+ [TrainingJob を一覧表示する](#list-training-jobs)
+ [TrainingJob について説明する](#describe-a-training-job)
+ [TrainingJob のログを表示する](#view-logs-from-training-jobs)
+ [TrainingJob を削除する](#delete-training-jobs)

### YAML ファイルを使用して TrainingJob を作成する
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

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

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

1. `xgboost-mnist-trainingjob.yaml` ファイルを編集して `roleArn` パラメータを `<sagemaker-execution-role>` に置き換えて、`outputPath` を SageMaker AI 実行ロールが書き込みアクセス許可を持つ Amazon S3 バケットに置き換えます。SageMaker AI がユーザーに代わって Amazon S3、Amazon CloudWatch、その他のサービスにアクセスするには、`roleArn` にアクセス許可が必要です。SageMaker AI ExecutionRole の作成の詳細については、「[SageMaker AI ロール](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)」を参照してください。以下のコマンドを使用して YAML ファイルを適用します。

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Helm チャートを使用して TrainingJob を作成する
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Helm チャートを使用すると TrainingJob を実行できます。

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

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` フォルダに移動して `values.yaml` ファイルを編集し、`rolearn` や `outputpath` などの値をアカウントに対応する値に置き換えます。SageMaker AI がユーザーに代わって Amazon S3、Amazon CloudWatch、その他のサービスにアクセスするには、RoleARN にアクセス許可が必要です。SageMaker AI ExecutionRole の作成の詳細については、「[SageMaker AI ロール](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)」を参照してください。

#### TrainingJob を作成する
<a name="create-the-training-job"></a>

`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 チャートを確認する
<a name="verify-your-training-helm-chart"></a>

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 AI で実際のトレーニングジョブを起動し、`TrainingJob` Kubernetes リソースを更新して、SageMaker AI でのジョブのステータスを反映させます。ジョブの期間中に使用された SageMaker AI リソースには料金が発生します。ジョブが完了または停止すると、料金は発生しません。

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

### TrainingJob を一覧表示する
<a name="list-training-jobs"></a>

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

```
kubectl get TrainingJob
```

出力されるすべてのジョブの一覧は以下のようになります。

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

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

#### TrainingJob のステータス値
<a name="training-job-status-values"></a>

`STATUS` フィールドの値は以下のいずれかになります。
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

これらのステータスは SageMaker AI の公式 [API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus)から直接引用しています。

公式の SageMaker AI のステータス以外にも、`STATUS` は `SynchronizingK8sJobWithSageMaker` になる場合があります。これは、オペレーターがまだジョブを処理していないことを意味します。

#### 二次的なステータス値
<a name="secondary-status-values"></a>

二次的なステータスは SageMaker AI の公式の [API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus)から引用しています。ジョブのステータスに関するより詳細な情報が含まれます。

### TrainingJob について説明する
<a name="describe-a-training-job"></a>

`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>
```

### TrainingJob のログを表示する
<a name="view-logs-from-training-jobs"></a>

以下のコマンドを使用して、`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
```

### TrainingJob を削除する
<a name="delete-training-jobs"></a>

以下のコマンドを使用して、Amazon SageMaker AI のトレーニングジョブを停止します。

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

このコマンドは、SageMaker トレーニングジョブを Kubernetes から削除します。このコマンドでは次の出力が返されます。

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

SageMaker AI でジョブがまだ進行中の場合は、ジョブは停止します。ジョブが完了または停止すると、SageMaker AI リソースの料金は発生しません。

**注**: SageMaker AI はトレーニングジョブを削除しません。停止したジョブは、引き続き SageMaker AI コンソールに表示されます。`delete` コマンドで SageMaker AI からリソースをクリーンアップするには、約 2 分かかります。

## HyperParameterTuningJob オペレーター
<a name="hyperparametertuningjobs-operator"></a>

ハイパーパラメータ調整ジョブ演算子は、指定されたハイパーパラメータ調整ジョブの仕様を SageMaker AI で起動して、SageMaker AI と調整します。SageMaker AI ハイパーパラメータ調整ジョブの詳細については、SageMaker AI の [CreateHyperParameterTuningJob API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html)を参照してください。

**Topics**
+ [YAML ファイルを使用して HyperparameterTuningJob を作成する](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Helm チャートを使用して HyperparameterTuningJob を作成する](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [HyperparameterTuningJob を一覧表示する](#list-hyperparameter-tuning-jobs)
+ [HyperparameterTuningJob について説明する](#describe-a-hyperparameter-tuning-job)
+ [HyperparameterTuningJob のログを表示する](#view-logs-from-hyperparametertuning-jobs)
+ [HyperparameterTuningJob を削除する](#delete-hyperparametertuning-jobs)

### YAML ファイルを使用して HyperparameterTuningJob を作成する
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

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

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

1. `xgboost-mnist-hpo.yaml` ファイルを編集して、`roleArn` パラメータを `sagemaker-execution-role` に置き換えます。さらに、ハイパーパラメータチューニングジョブが成功するためには、`s3InputPath` と `s3OutputPath` をアカウントに対応する値に変更する必要があります。以下のコマンドを使用して YAML ファイルに更新内容を適用します。

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Helm チャートを使用して HyperparameterTuningJob を作成する
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

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

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

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/` フォルダに移動します。

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

#### HyperparameterTuningJob を作成する
<a name="create-the-hpo-job"></a>

`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.
```

#### チャートのインストールを確認する
<a name="verify-chart-installation"></a>

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 AI で実際のハイパーパラメータ最適化ジョブを起動し、`HyperParameterTuningJob` Kubernetes リソースを更新して、SageMaker AI でのジョブのステータスを反映させます。ジョブの期間中に使用された SageMaker AI リソースには料金が発生します。ジョブが完了または停止すると、料金は発生しません。

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

### HyperparameterTuningJob を一覧表示する
<a name="list-hyperparameter-tuning-jobs"></a>

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

#### ハイパーパラメータチューニングジョブのステータス値
<a name="hyperparameter-tuning-job-status-values"></a>

`STATUS` フィールドの値は以下のいずれかになります。
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

これらのステータスは SageMaker AI の公式 [API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus)から直接引用しています。

公式の SageMaker AI のステータス以外にも、`STATUS` は `SynchronizingK8sJobWithSageMaker` になる場合があります。これは、オペレーターがまだジョブを処理していないことを意味します。

#### ステータスカウンター
<a name="status-counters"></a>

出力には、`COMPLETED` や `INPROGRESS` などのカウンターがいくつかあります。これらはそれぞれ、完了したトレーニングジョブと進行中のトレーニングジョブの数を表します。これらカウンターの決定方法については、SageMaker API ドキュメントの「[TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)」を参照してください。

#### 最適な TrainingJob
<a name="best-training-job"></a>

この列には、選択したメトリクスを最適化した `TrainingJob` の名前が表示されます。

チューニングされたハイパーパラメータの概要を表示するには、以下を実行します。

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

`TrainingJob` の詳細を表示するには、以下を実行します。

```
kubectl describe trainingjobs <job name>
```

#### スポーンされた TrainingJob
<a name="spawned-training-jobs"></a>

以下のコマンドを実行すると、`HyperparameterTuningJob` によって起動された Kubernetes の 10 件すべてのトレーニングジョブを追跡することもできます。

```
kubectl get trainingjobs
```

### HyperparameterTuningJob について説明する
<a name="describe-a-hyperparameter-tuning-job"></a>

`describe` `kubectl` コマンドを使用すると、デバッグの詳細情報を取得できます。

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

チューニングジョブに関する情報以外にも、SageMaker AI Operator for Kubernetes は、ハイパーパラメータチューニングジョブが検出した[最適なトレーニングジョブ](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job)も次のとおり `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>
```

### HyperparameterTuningJob のログを表示する
<a name="view-logs-from-hyperparametertuning-jobs"></a>

ハイパーパラメータチューニングジョブにはログはありませんが、ハイパーパラメータチューニングジョブによって起動されるトレーニングジョブにはすべてログがあります。これらのログには、通常のトレーニングジョブの場合と同様にアクセスできます。詳細については、「[TrainingJob のログを表示する](#view-logs-from-training-jobs)」を参照してください。

### HyperparameterTuningJob を削除する
<a name="delete-hyperparametertuning-jobs"></a>

以下のコマンドを使用して、SageMaker AI のハイパーパラメータジョブを停止します。

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

このコマンドは、Kubernetes クラスターのハイパーパラメータチューニングジョブおよび関連するトレーニングジョブを削除し、SageMaker AI で停止します。停止または完了したジョブでは、SageMaker AI リソースの料金は発生しません。SageMaker AI では、ハイパーパラメータチューニングジョブは削除されません。停止したジョブは、引き続き SageMaker AI コンソールに表示されます。

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

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

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

## BatchTransformJob オペレーター
<a name="batchtransformjobs-operator"></a>

バッチ変換ジョブの演算子は、指定されたバッチ変換ジョブ仕様を SageMaker AI で起動して、SageMaker AI と調整します。SageMaker AI のバッチ変換ジョブについては、SageMaker AI の [CreateTransformJob API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html)で詳細を確認できます。

**Topics**
+ [YAML ファイルを使用して BatchTransformJob を作成する](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Helm チャートを使用して BatchTransformJob を作成する](#create-a-batchtransformjob-using-a-helm-chart)
+ [BatchTransformJob を一覧表示する](#list-batch-transform-jobs)
+ [BatchTransformJob の詳細を表示する](#describe-a-batch-transform-job)
+ [BatchTransformJob のログを表示する](#view-logs-from-batch-transform-jobs)
+ [BatchTransformJob を削除する](#delete-a-batch-transform-job)

### YAML ファイルを使用して BatchTransformJob を作成する
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

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

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

1. `xgboost-mnist-batchtransform.yaml` ファイルを編集して必要なパラメータを変更し、`inputdataconfig` を入力データに置き換え、`s3OutputPath` を SageMaker AI 実行ロールが書き込みアクセス権を持つ Amazon S3 バケットに置き換えます。

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

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Helm チャートを使用して BatchTransformJob を作成する
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Helm チャートを使用すると、バッチ変換ジョブを実行できます。

#### Helm インストーラのディレクトリを取得する
<a name="get-the-helm-installer-directory"></a>

以下のコマンドを使用して GitHub リポジトリのクローンを作成し、ソースを取得します。

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Helm チャートを設定する
<a name="configure-the-helm-chart"></a>

`amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/` フォルダに移動します。

`values.yaml` ファイルを編集して、`inputdataconfig` を入力データに置き換え、outputPath を SageMaker AI 実行ロールが書き込みアクセス権を持つ S3 バケットに置き換えます。

#### BatchTransformJob を作成する
<a name="create-a-batch-transform-job"></a>

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.
   ```

1. 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 AI で実際の変換ジョブを起動し、`BatchTransformJob` Kubernetes リソースを更新して、SageMaker AI でのジョブのステータスを反映させます。ジョブの期間中に使用された SageMaker AI リソースには料金が発生します。ジョブが完了または停止すると、料金は発生しません。

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

### BatchTransformJob を一覧表示する
<a name="list-batch-transform-jobs"></a>

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

#### バッチ変換のステータス値
<a name="batch-transform-status-values"></a>

`STATUS` フィールドの値は以下のいずれかになります。
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

これらのステータスは SageMaker AI の公式 [API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus)から直接引用しています。

公式の SageMaker AI のステータス以外にも、`STATUS` は `SynchronizingK8sJobWithSageMaker` になる場合があります。これは、オペレーターがまだジョブを処理していないことを意味します。

### BatchTransformJob の詳細を表示する
<a name="describe-a-batch-transform-job"></a>

`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>
```

### BatchTransformJob のログを表示する
<a name="view-logs-from-batch-transform-jobs"></a>

以下のコマンドを使用して、`xgboost-mnist` バッチ変換ジョブのログを確認します。

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### BatchTransformJob を削除する
<a name="delete-a-batch-transform-job"></a>

以下のコマンドを使用して、SageMaker AI のバッチ変換ジョブを停止します。

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

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

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

このコマンドは、バッチ変換ジョブを Kubernetes クラスターから削除し、SageMaker AI で停止します。停止または完了したジョブでは、SageMaker AI リソースの料金は発生しません。Delete で SageMaker AI からリソースをクリーンアップするには、約 2 分かかります。

**注**: SageMaker AI はバッチ変換ジョブを削除しません。停止したジョブは、引き続き SageMaker AI コンソールに表示されます。

## HostingDeployment オペレーター
<a name="hosting-deployment-operator"></a>

HostingDeployment オペレーターは、リアルタイム推論のためのエンドポイントの作成と削除、既存のエンドポイントの更新をサポートします。ホスティングデプロイ演算子は、SageMaker AI でモデルの作成、エンドポイントの設定、エンドポイントの作成を行い、指定されたホスティングデプロイジョブ仕様を SageMaker AI と調整します。SageMaker AI 推論の詳細については、SageMaker AI の [CreateEndpoint API ドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)を参照してください。

**Topics**
+ [HostingDeployment リソースを設定する](#configure-a-hostingdeployment-resource)
+ [HostingDeployment を作成する](#create-a-hostingdeployment)
+ [HostingDeployment を一覧表示する](#list-hostingdeployments)
+ [HostingDeployment の詳細を表示する](#describe-a-hostingdeployment)
+ [エンドポイントを呼び出す](#invoking-the-endpoint)
+ [HostingDeployment を更新する](#update-hostingdeployment)
+ [HostingDeployment を削除する](#delete-the-hostingdeployment)

### HostingDeployment リソースを設定する
<a name="configure-a-hostingdeployment-resource"></a>

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

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

`xgboost-mnist-hostingdeployment.yaml` ファイルには以下のコンポーネントが含まれており、必要に応じて編集できます。
+ ProductionVariants。**本番稼働用バリアントは、1 つのモデルを提供する一連のインスタンスです。SageMaker AI は、設定済みの加重に従って、すべての本番環境バリアント間の負荷を分散します。
+ *モデル*。モデルは、モデルの提供に必要なコンテナおよび実行ロール ARN です。少なくとも 1 つのコンテナが必要です。
+ *コンテナ*。コンテナは、データセットと提供されるイメージを指定します。SageMaker AI で提供されているアルゴリズムの代わりに独自のカスタムアルゴリズムを使用する場合は、推論コードが SageMaker AI の要件を満たしている必要があります。詳細については、「[SageMaker AI で独自のアルゴリズムを使用する](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html)」を参照してください。

### HostingDeployment を作成する
<a name="create-a-hostingdeployment"></a>

HostingDeployment を作成するには、`kubectl` を使用して、ファイル `hosting.yaml` に以下のコマンドを適用します。

```
kubectl apply -f hosting.yaml
```

SageMaker AI では、指定された設定でエンドポイントが作成されます。エンドポイントのライフタイム中に使用された SageMaker AI リソースでは料金が発生します。エンドポイントが削除されると、料金は発生しません。

作成プロセスの所要時間は約 10 分です。

### HostingDeployment を一覧表示する
<a name="list-hostingdeployments"></a>

HostingDeployment が作成されたことを確認するには、以下のコマンドを使用します。

```
kubectl get hostingdeployments
```

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

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment のステータス値
<a name="hostingdeployment-status-values"></a>

status フィールドは、以下の値のいずれかになります。
+ `SynchronizingK8sJobWithSageMaker`: オペレーターはエンドポイントを作成する準備をしています。
+ `ReconcilingEndpoint`: オペレーターはエンドポイントリソースを作成、更新、削除しています。HostingDeployment がこの状態で変わらない場合は、`kubectl describe` を使用して `Additional` フィールドの理由を確認します。
+ `OutOfService`: エンドポイントは受信リクエストを受け取ることができません。
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) が実行中です。
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html) または [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) が実行中です。
+ `SystemUpdating`: エンドポイントはメンテナンス中であり、完了するまで更新、削除、再スケーリングできません。このメンテナンスオペレーションでは、VPC 設定、 AWS KMS 暗号化、モデル、インスタンスタイプ、インスタンス数など、お客様が指定した値は変更されません。
+ `RollingBack`: エンドポイントがスケールアップやスケールダウンに失敗したため、またはバリアントの重みを変更できなかったため、以前の設定にロールバックしています。ロールバックが完了すると、エンドポイントは `InService` ステータスに戻ります。この移行ステータスは、オートスケーリングがオンになっているエンドポイントで、[UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) 呼び出しの一部としてバリアントの重みや容量が変更される場合、または [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html) オペレーションが明示的に呼び出されたときにのみ適用されます。
+ `InService`: エンドポイントは受信リクエストを処理できます。
+ `Deleting`: [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html) が実行中です。
+ `Failed`: エンドポイントを作成、更新、再スケーリングできませんでした。[DescribeEndpoint:FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) を使用すると、失敗の詳細を確認できます。失敗したエンドポイントで実行できるオペレーションは、[DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html) のみです。

### HostingDeployment の詳細を表示する
<a name="describe-a-hostingdeployment"></a>

`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 AI で作成された日時 
+ `Endpoint ARN`: SageMaker AI エンドポイントの ARN 
+ `Endpoint Config Name`: エンドポイント設定の SageMaker AI 名 
+ `Endpoint Name`: エンドポイントの SageMaker AI 名 
+ `Endpoint Status`: エンドポイントのステータス。
+ `Endpoint URL`: エンドポイントへのアクセスに使用できる HTTPS URL。詳細については、「[Amazon SageMaker AI ホスティングサービスでモデルをデプロイする](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)」を参照してください。
+ `FailureReason`: 作成、更新、削除のコマンドが失敗した場合、ここに原因が表示されます。
+ `Last Check Time`: オペレーターが最後にエンドポイントのステータスをチェックした日時。
+ `Last Modified Time`: エンドポイントが最後に変更された日時。
+ `Model Names`: HostingDeployment モデル名と SageMaker AI モデル名の key-value ペア。

### エンドポイントを呼び出す
<a name="invoking-the-endpoint"></a>

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

CLI AWS を使用してエンドポイントを呼び出すには、次のコマンドを実行します。リージョンとエンドポイント名を、エンドポイントのリージョンと SageMaker AI エンドポイント名に置き換えます。この情報は、`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 を更新する
<a name="update-hostingdeployment"></a>

1. HostingDeployment のステータスが `InService` になったら、更新が可能になります。HostingDeployment が実行中になるまでに約 10 分かかることがあります。ステータスが `InService` になったことを確認するには、以下のコマンドを使用します。

   ```
   kubectl get hostingdeployments
   ```

1. HostingDeployment は、ステータスが `InService` になる前にも更新できます。演算子は SageMaker AI エンドポイントが `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://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. ファイルを保存してから、以下のように `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 AI はモデルを使用して新しいインスタンスのセットをデプロイし、トラフィックを切り替えて新しいインスタンスを使用して、古いインスタンスを破棄します。このプロセスが開始されるとすぐに、ステータスが `Updating` になります。更新が完了すると、エンドポイントは `InService` になります。このプロセスの所要時間は約 10 分です。

### HostingDeployment を削除する
<a name="delete-the-hostingdeployment"></a>

1. `kubectl` を使用し、以下のコマンドで HostingDeployment を削除します。

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

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

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. ホスティングデプロイが削除されたことを確認するには、以下のコマンドを使用します。

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

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

## ProcessingJob オペレーター
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob オペレーターは、Amazon SageMaker の処理ジョブを起動するために使用されます。SageMaker 処理ジョブの詳細については、「[CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)」を参照してください。

**Topics**
+ [YAML ファイルを使用して ProcessingJob を作成する](#kubernetes-processing-job-yaml)
+ [ProcessingJob を一覧表示する](#kubernetes-processing-job-list)
+ [ProcessingJob の詳細を表示する](#kubernetes-processing-job-description)
+ [ProcessingJob を削除する](#kubernetes-processing-job-delete)

### YAML ファイルを使用して ProcessingJob を作成する
<a name="kubernetes-processing-job-yaml"></a>

以下の手順を実行して、YAML ファイルを使用して Amazon SageMaker の処理ジョブを作成します。

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

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. Amazon Simple Storage Service (Amazon S3) バケットのいずれかに、`mnist_kmeans_example/processing_code` フォルダを作成し、そのフォルダにスクリプトをアップロードします。

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

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. YAML ファイルを編集して `sagemaker-execution-role` を指定し、`amzn-s3-demo-bucket` のすべてのインスタンスを S3 バケットに置き換えます。

   ```
   ...
   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
   ```

   SageMaker AI がユーザーに代わって S3 バケット、Amazon CloudWatch、その他のサービスにアクセスするには、`sagemaker-execution-role` にアクセス許可が必要です。実行ロールの作成の詳細については、「[SageMaker AI ロール](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms)」を参照してください。

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

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

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

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

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

### ProcessingJob を一覧表示する
<a name="kubernetes-processing-job-list"></a>

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
```

出力には、ステータスに関係なく、すべてのジョブが一覧表示されます。リストからジョブを削除するには、「[処理ジョブを削除する](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete)」を参照してください。

**ProcessingJob のステータス**
+ `SynchronizingK8sJobWithSageMaker` - ジョブは最初にクラスターに送信されます。オペレーターはリクエストを受け取っており、処理ジョブ作成の準備をしています。
+ `Reconciling` - オペレーターは他のオペレーターと共に初期化、または一時的なエラーからの復旧を実行しています。処理ジョブがこのステータスのまま変化しない場合は、`kubectl` `describe` コマンドを使用し、`Additional` フィールドでその理由を確認します。
+ `InProgress | Completed | Failed | Stopping | Stopped` - SageMaker の処理ジョブのステータス。詳細については、「[DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus)」を参照してください。
+ `Error` - オペレーターは照合によって復旧できません。

完了、停止、または失敗したジョブについては、SageMaker AI リソースに対して追加料金は発生しません。

### ProcessingJob の詳細を表示する
<a name="kubernetes-processing-job-description"></a>

以下のいずれかのコマンドを使用して、処理ジョブの詳細を取得します。通常、これらのコマンドは、問題のデバッグや処理ジョブのパラメータのチェックに使用されます。

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

```
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 を削除する
<a name="kubernetes-processing-job-delete"></a>

処理ジョブを削除すると、SageMaker の処理ジョブは Kubernetes から削除されますが、ジョブは SageMaker AI からは削除されません。SageMaker AI でのジョブのステータスが `InProgress` の場合、ジョブは停止しています。停止した処理ジョブでは、SageMaker AI リソースの料金は発生しません。以下のいずれかの手順を使用して、処理ジョブを削除します。

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

```
kubectl delete processingjob kmeans-mnist-processing
```

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

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

処理ジョブの出力は次のようになります。

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**注記**  
SageMaker AI では、処理ジョブは削除されません。停止したジョブは、引き続き SageMaker AI コンソールに表示されます。`delete` コマンドで SageMaker AI からリソースをクリーンアップするには、数分かかります。

## HostingAutoscalingPolicy (HAP) オペレーター
<a name="kubernetes-hap-operator"></a>

HostingAutoscalingPolicy (HAP) オペレーターは、リソース ID のリストを入力として受け取り、それぞれに同じポリシーを適用します。それぞれのリソース ID は、エンドポイント名とバリアント名の組み合わせになります。HAP オペレーターは 2 つのステップを実行します。最初にリソース ID を登録し、スケーリングポリシーをそれぞれのリソース ID に適用します。`Delete` は両方のアクションを元に戻します。既存の SageMaker AI エンドポイントに HAP を適用できるほか、[HostingDeployment オペレーター](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment)を使用して新しい SageMaker AI エンドポイントを作成することもできます。SageMaker AI のオートスケーリングの詳細については、[アプリケーションのオートスケーリングポリシーに関するドキュメント](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)を参照してください。

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

**Topics**
+ [YAML ファイルを使用して HostingAutoscalingPolicy を作成する](#kubernetes-hap-job-yaml)
+ [HostingAutoscalingPolicy を一覧表示する](#kubernetes-hap-list)
+ [HostingAutoscalingPolicy の詳細を表示する](#kubernetes-hap-describe)
+ [HostingAutoscalingPolicy を更新する](#kubernetes-hap-update)
+ [HostingAutoscalingPolicy を削除する](#kubernetes-hap-delete)
+ [HostingAutoscalingPolicy を持つエンドポイントを更新または削除する](#kubernetes-hap-update-delete-endpoint)

### YAML ファイルを使用して HostingAutoscalingPolicy を作成する
<a name="kubernetes-hap-job-yaml"></a>

YAML ファイルを使用して、定義済みまたはカスタムのメトリクスを 1 つまたは複数の SageMaker AI エンドポイントに適用する HostingAutoscalingPolicy (HAP) を作成します。

バリアントにオートスケーリングを適用するには、Amazon SageMaker AI に特定の値が必要です。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 つのエンドポイントバリアントに事前定義済みのメトリクスを適用する
<a name="kubernetes-hap-predefined-metric"></a>

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

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. YAML ファイルを編集して、`endpointName`、`variantName`、`Region` を指定します。

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

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

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

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

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

#### サンプル 2: 1 つのエンドポイントバリアントにカスタムのメトリクスを適用する
<a name="kubernetes-hap-custom-metric"></a>

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

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. YAML ファイルを編集して、`endpointName`、`variantName`、`Region` を指定します。

1. 以下のいずれかのコマンドを使用して、1 つのリソース ID (エンドポイント名とバリアント名の組み合わせ) に、推奨の `SageMakerVariantInvocationsPerInstance` の代わりにカスタムのメトリクスを適用します。
**注記**  
Amazon SageMaker AI では、YAML 仕様の有効性はチェックされません。

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

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

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

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

#### サンプル 3: 複数のエンドポイントとバリアントにスケーリングポリシーを適用する
<a name="kubernetes-hap-scaling-policy"></a>

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

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

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. YAML ファイルを編集して、`Region` と複数の `endpointName` と `variantName` の値を指定します。

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

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

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

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

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

#### 複数のエンドポイントとバリアントの HostingAutoscalingPolicies に関する考慮事項
<a name="kubernetes-hap-scaling-considerations"></a>

以下の考慮事項は、複数のリソース ID を使用する場合に適用されます。
+ 1 つのポリシーを複数のリソース ID に適用する場合は、リソース ID ごとに 1 つの PolicyARN が作成されます。エンドポイントが 5 つある場合は、PolicyARN も 5 つになります。ポリシーで `describe` コマンドを実行すると、レスポンスは 1 つのジョブとして表示され、含まれるジョブステータスも 1 つになります。
+ 複数のリソース ID にカスタムのメトリクスを適用すると、すべてのリソース ID (バリアント) 値に同じディメンションまたは値が使用されます。例えば、インスタンス 1～5 にカスタマーメトリクスを適用し、エンドポイントバリアントのディメンションがバリアント 1 にマッピングされている場合、バリアント 1 がメトリクスを超過すると、すべてのエンドポイントがスケールアップまたはスケールダウンされます。
+ HAP オペレーターは、リソース ID のリストの更新をサポートします。仕様のリソース ID を変更、追加、削除すると、オートスケーリングポリシーが以前のバリアントのリストから削除され、新しく指定したリソース ID の組み合わせに適用されます。[https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe) コマンドを使用すると、現在ポリシーが適用されているリソース ID が一覧表示されます。

### HostingAutoscalingPolicy を一覧表示する
<a name="kubernetes-hap-list"></a>

以下のいずれかのコマンドを使用して、HAP オペレーターを使って作成されたすべての HostingAutoscalingPolicy (HAP) を一覧表示します。

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

```
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 AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

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

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

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

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

### HostingAutoscalingPolicy の詳細を表示する
<a name="kubernetes-hap-describe"></a>

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

```
kubectl describe hap <job-name>
```

### HostingAutoscalingPolicy を更新する
<a name="kubernetes-hap-update"></a>

HostingAutoscalingPolicy (HAP) オペレーターは更新をサポートします。YAML 仕様を編集して値を変更し、ポリシーを再適用すると、HAP オペレーターが既存のポリシーを削除し、新しいポリシーを適用します。

### HostingAutoscalingPolicy を削除する
<a name="kubernetes-hap-delete"></a>

以下のいずれかのコマンドを使用して、HostingAutoscalingPolicy (HAP) ポリシーを削除します。

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

```
kubectl delete hap hap-predefined
```

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

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

以下のコマンドは、スケーリングポリシーを削除し、Kubernetes からスケーリングターゲットの登録を解除します。このコマンドでは次の出力が返されます。

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### HostingAutoscalingPolicy を持つエンドポイントを更新または削除する
<a name="kubernetes-hap-update-delete-endpoint"></a>

HostingAutoscalingPolicy (HAP) を持つエンドポイントを更新するには、`kubectl` `delete` コマンドを使用して HAP を削除し、エンドポイントを更新してから HAP を再適用します。

HAP を持つエンドポイントを削除するには、`kubectl` `delete` コマンドを使用して HAP を削除してから、エンドポイントを削除します。