使用 Amazon SageMaker 工作 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon SageMaker 工作

本節是以適用於 Kubernetes 的SageMaker 運算子的原始版本為基礎。

重要

我們正在停止 Kubernetes SageMaker 運營商的原始版本的開發和技術支持。

如果您目前正在使用 Kubernetes 的 SageMaker 操作員版本v1.2.2或以下版本,我們建議您將資源遷移到 Amazon 的 ACK 服務控制器。 SageMakerACK 服務控制器是以 Kubernetes (ACK) 控AWS 制器為基礎的新一代 Kuber netes SageMaker 運營商。

如需與移轉步驟相關的資訊,請參閱將資源遷移到最新的運算子

如需 Kubernetes 原始版本 SageMaker 操作員支援終止的常見問題解答,請參閱 宣布終止對 Kubernetes SageMaker 運營商的原始版本的 Support

若要使用 Kubernetes 的運算子執行 Amazon SageMaker 任務,您可以套用 YAML 檔案或使用提供的頭盔圖表。

下列教學課程中的所有範例運算子工作都使用從公開 MNIST 資料集擷取的範例資料。若要執行這些範例,請將資料集下載到 Amazon S3 儲存貯體。您可以在下載 MNIST 資料集中找到資料集。

TrainingJob 運營商

培訓工作操作員通過在 SageMaker中為您啟動指定的培訓工作規範 SageMaker 來協調指定的培訓工作規範。您可以在 SageMaker CreateTrainingJob API 文件中進一步了解 SageMaker 訓練工作。

TrainingJob 使用 YAML 檔案建立

  1. 使用下列命令下載範例 YAML 檔案以進行訓練:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. 編輯xgboost-mnist-trainingjob.yaml檔案,將roleArn參數取代為您的<sagemaker-execution-role>,以及outputPath SageMaker 執行角色具有寫入存取權的 Amazon S3 儲存貯體。roleArn必須具有許可,以便 SageMaker 可以代表您訪問 Amazon S3 CloudWatch,Amazon 和其他服務。如需有關建立的詳細資訊 SageMaker ExecutionRole,請參閱SageMaker 角色。使用下列命令來套用 YAML 檔案:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

創建一個 TrainingJob 使用頭盔圖

您可以使用頭盔圖表運行 TrainingJobs。

  1. 使用以下命令克隆 GitHub 存儲庫以獲取源代碼:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 導覽至 amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ 資料夾並編輯 values.yaml 檔案,以將 rolearnoutputpath 等值取代與您的帳戶相對應的值。RoleARN 必須具有許 SageMaker 可,才能代表您存取 Amazon S3 CloudWatch、Amazon 和其他服務。如需有關建立的詳細資訊 SageMaker ExecutionRole,請參閱SageMaker 角色

創建 TrainingJob

將角色和 Amazon S3 儲存貯體取代為 values.yaml 中適當的值後,您可以使用下列命令建立訓練工作:

helm install . --generate-name

您的輸出看起來應如以下所示:

NAME: chart-12345678 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-trainingjob.

驗證您的訓練 Helm Chart

要驗證 Helm Chart 是否成功建立,請執行以下命令:

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 並更新 TrainingJob Kubernetes 資源以反映中的工作狀態。 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 CreateHyperParameterTuningJob API 文件中進一步了解 SageMaker 超參數調整工作。

HyperparameterTuningJob 使用 YAML 檔案建立

  1. 使用下列命令,下載超參數調整工作的範例 YAML 檔案:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. 編輯 xgboost-mnist-hpo.yaml 檔案,以將 roleArn 參數取代為您的 sagemaker-execution-role。您必須將 s3InputPaths3OutputPath 變更為與帳戶對應的值,超參數調校才能成功。使用下列命令來套用更新的 YAML 檔案:

    kubectl apply -f xgboost-mnist-hpo.yaml

創建一個 HyperparameterTuningJob 使用頭盔圖

您可以使用 Helm Chart 來執行超參數調校工作。

  1. 使用以下命令克隆 GitHub 存儲庫以獲取源代碼:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. 導覽至 amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/ 資料夾。

  3. 編輯 values.yaml 檔案,以將 roleArn 參數取代為您的 sagemaker-execution-role。您必須將 s3InputPaths3OutputPath 變更為與您的帳戶對應的值,超參數調校才能成功。

創建 HyperparameterTuningJob

將角色和 Amazon S3 路徑取代為 values.yaml 中適當的值後,您可以使用下列命令建立超參數調校工作:

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 Chart 是否已成功建立,請執行以下命令:

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 並更新 HyperParameterTuningJob Kubernetes 資源以反映中的工作狀態。 SageMaker工作期間使用的 SageMaker 資源會產生費用。工作完成或停止後,就不會再產生任何費用。

注意: SageMaker 不允許您更新執行中的超參數調整工作。您無法編輯任何參數並重新套用設定檔。您必須變更中繼資料名稱或刪除現有工作,然後建立新的工作。與 Kubeflow 中的 TFJob 等現有訓練工作運算子類似,update 不受支援。

清單 HyperparameterTuningJobs

使用下列命令列出使用 Kubernetes 運算子建立的所有工作:

kubectl get hyperparametertuningjob

您的輸出看起來應如以下所示:

NAME STATUS CREATION-TIME COMPLETED INPROGRESS ERRORS STOPPED BEST-TRAINING-JOB SAGEMAKER-JOB-NAME xgboost-mnist-hpo Completed 2019-10-17T01:15:52Z 10 0 0 0 xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123 xgboostha92f5e3cf07b11e9bf6c123

超參數調校工作會在工作完成或失敗後繼續列出。您可以依照刪除一個 HyperparameterTuningJob 步驟從清單中移除 hyperparametertuningjob。已完成或停止的工作不會產生任何 SageMaker 資源費用。

超參數調校工作狀態值

STATUS 欄位可以是以下其中一個值:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

這些狀態直接來自 SageMaker 官方 API 文檔

除了官方地 SageMaker 位,它是可STATUS能的SynchronizingK8sJobWithSageMaker。這表示運算子尚未處理工作。

狀態計數器

有多個輸出計數器,例如 COMPLETEDINPROGRESS。它們分別代表了已完成和正在進行的訓練工作的數量。如需有關如何判斷這些資訊的詳細資訊,請參閱 SageMaker API 文件TrainingJobStatusCounters中的。

最好 TrainingJob

此欄包含對選取的指標進行了最佳化的 TrainingJob 名稱。

若要查看調整過的超參數的摘要,請執行下列命令:

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

若要查看與 TrainingJob 相關的詳細資訊,請執行下列命令:

kubectl describe trainingjobs <job name>

產卵 TrainingJobs

您也可以執行下列命令,追蹤 HyperparameterTuningJob 在 Kubernetes 中啟動的所有 10 項訓練工作:

kubectl get trainingjobs

描述一個 HyperparameterTuningJob

您可以使用 describe kubectl 命令取得偵錯詳細資訊。

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

除了調整工作的相關資訊外,Kubernetes 的 SageMaker 操作員還公開了輸出中超參數調整工作找到的最佳訓練工作,如下所示: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

注意:刪除命令大約需要 2 分鐘來清理資源 SageMaker。

BatchTransformJob 運營商

Batch 轉換工作操作員會在 SageMaker中啟動指定的批次轉換工作規格,將其調和為 SageMaker 。您可以在 SageMaker CreateTransformJob API 文件中進一步了解 SageMaker 批次轉換工作。

BatchTransformJob 使用 YAML 檔案建立

  1. 使用下列命令下載批次轉換工作的範例 YAML 檔案:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. 編輯檔案xgboost-mnist-batchtransform.yaml以變更必要的參數,以取inputdataconfig代為輸入資料以及s3OutputPath SageMaker 執行角色具有寫入存取權的 Amazon S3 儲存貯體。

  3. 使用下列命令來套用 YAML 檔案:

    kubectl apply -f xgboost-mnist-batchtransform.yaml

創建一個 BatchTransformJob使用頭盔圖

您可以使用 Helm Chart 執行批次轉換工作。

取得 Ham 安裝程式目錄

使用以下命令克隆 GitHub 存儲庫以獲取源代碼:

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

設定 Helm Chart

導覽至 amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/ 資料夾。

編輯values.yaml檔案,將其取代為您inputdataconfig的輸入資料,並以 SageMaker 執行角色具有寫入存取權的 S3 儲存貯體取代 OutputPath。

創建一個 BatchTransformJob

  1. 使用下列命令建立批次轉換工作:

    helm install . --generate-name

    您的輸出看起來應如以下所示:

    NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
  2. 要驗證 Helm Chart 是否已成功建立,請執行以下命令:

    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 並更新 BatchTransformJob Kubernetes 資源以反映中的工作狀態。 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 操作員支援建立和刪除端點,以及更新現有端點以進行即時推論。主機部署操作員 SageMaker 透過在中建立模型、端點組態和端點,將您指定的主機部署工作規格調整為。 SageMaker您可以在 SageMaker CreateEndpointAPI 文件中 SageMaker 進一步了解推論。

配置資 HostingDeployment源

使用下列命令下載託管部署工作的範例 YAML 檔案:

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

xgboost-mnist-hostingdeployment.yaml 檔案具有下列可視需要進行編輯的元件:

  • ProductionVariants。生產變體是一組提供單一模型的執行個體。 SageMaker 根據設定的重量在所有生產變體之間進行負載平衡。

  • 模型。模型是為模型提供服務所必需的容器和執行角色 ARN。它至少需要一個容器。

  • 容器。容器用於指定資料集和提供映像。如果您使用自己的自訂演算法而非由提供的演算法 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 狀態值

狀態欄位可以是以下其中一個值:

  • SynchronizingK8sJobWithSageMaker:運算子正準備建立端點。

  • ReconcilingEndpoint:運算子正在建立、更新或刪除端點資源。如果 HostingDeployment 仍處於此狀態,請使用kubectl describe來查看Additional欄位中的原因。

  • OutOfService:端點無法接受傳入請求。

  • Creating:正CreateEndpoint在運行。

  • UpdatingUpdateEndpoint或正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>

狀態欄位使用下列欄位提供更多資訊:

  • 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,您可以通過兩種方式調用端點:使用 AWS CLI 進行身份驗證和 URL 請求簽名,或者使用像 cURL 這樣的 HTTP 客戶端。如果您使用自己的客戶端,則需要自行進行 AWS v4 URL 簽名和身份驗證。

若要使用 AWS CLI 叫用端點,請執行下列命令。確保將區域和端點名稱替換為端點的區域和 SageMaker 端點名稱。此資訊可從 kubectl describe 的輸出中取得。

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

例如,如果您的區域是 us-east-2 並且端點設定名稱為 host-xgboost-f56b6b280d7511ea824b129926example,則以下命令將調用端點:

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

在此處,4.95847082138 是模型對模擬資料的預測值。

更新 HostingDeployment

  1. 一 HostingDeployment 旦狀態為InService,就可以更新。可能需 HostingDeployment 要大約 10 分鐘才能使用。可使用以下命令來驗證狀態是否為 InService

    kubectl get hostingdeployments
  2. HostingDeployment 可在狀態為之前更新InService。在套用更新InService之前,運算子會等到 SageMaker 端點為止。

    若要套用更新,請修改 hosting.yaml 檔案。例如,將 initialInstanceCount 欄位從 1 變更為 2,如下所示:

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://my-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. 儲存檔案,然後依如下所示,使用 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

  1. kubectl於使用以下命令刪除: HostingDeployment

    kubectl delete hostingdeployments host-xgboost

    您的輸出看起來應如以下所示:

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. 若要驗證是否已刪除託管部署,請使用下列命令:

    kubectl get hostingdeployments No resources found.

已刪除的端點不會對 SageMaker 資源產生任何費用。

ProcessingJob 運營商

ProcessingJob 運營商用於啟動 Amazon SageMaker 處理任務。如需 SageMaker 處理工作的詳細資訊,請參閱CreateProcessingJob

ProcessingJob 使用 YAML 檔案建立

請依照下列步驟使用 YAML 檔案建立 Amazon SageMaker 處理任務:

  1. 下載 kmeans_preprocessing.py 預處理指令碼。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. 在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中,建立 mnist_kmeans_example/processing_code 資料夾,然後將指令碼上傳到此資料夾。

  3. 下載 kmeans-mnist-processingjob.yaml 檔案。

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. 編輯 YAML 檔案以指定 sagemaker-execution-role,並將 my-bucket 的所有執行個體取代為您的 S3 儲存貯體。

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

    sagemaker-execution-role必須具有許可,才 SageMaker 能代表您存取 S3 儲存貯體 CloudWatch、Amazon 和其他服務。如需有關建立執行角色的詳細資訊,請參閱SageMaker角色

  5. 使用下列其中一個命令來套用 YAML 檔案。

    叢集範圍的安裝:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    命名空間範圍的安裝:

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

清單 ProcessingJobs

使用下列其中一個命令列出使用 ProcessingJob 運算子建立的所有作業。 SAGEMAKER-JOB-NAME 來自 YAML 文件的metadata部分。

叢集範圍的安裝:

kubectl get ProcessingJob kmeans-mnist-processing

命名空間範圍的安裝:

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

您的輸出應該類似以下內容:

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

輸出會列出所有工作,無論其狀態為何。要從清單中移除作業,請參閱刪除處理任務

ProcessingJob 狀態
  • SynchronizingK8sJobWithSageMaker – 工作會先提交至叢集。運算子已收到請求並正準備建立處理工作。

  • Reconciling – 運算子正在初始化或從暫時性誤差以及其他錯誤中恢復。如果處理任務仍處於此狀態,請使用 kubectl describe 命令在 Additional 欄位中查看原因。

  • InProgress | Completed | Failed | Stopping | Stopped— SageMaker 處理工作的狀態。如需詳細資訊,請參閱DescribeProcessingJob

  • Error - 運算子無法透過調節來復原。

已完成、停止或失敗的工作不會對 SageMaker資源產生進一步的費用。

描述一個 ProcessingJob

使用下列其中一個命令可取得有關處理工作的詳細資訊。這些命令通常用於對問題進行偵錯或檢查處理工作的參數。

叢集範圍的安裝:

kubectl describe processingjob kmeans-mnist-processing

命名空間範圍的安裝:

kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>

處理工作的輸出應該類似以下內容。

$ kubectl describe ProcessingJob kmeans-mnist-processing Name: kmeans-mnist-processing Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",... API Version: sagemaker.aws.amazon.com/v1 Kind: ProcessingJob Metadata: Creation Timestamp: 2020-09-22T21:13:25Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21746658 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing UID: 7410ed52-fd18-11ea-b19a-165ae9f9e385 Spec: App Specification: Container Entrypoint: python /opt/ml/processing/code/kmeans_preprocessing.py Image Uri: 763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04 Environment: Name: MYVAR Value: my_value Name: MYVAR2 Value: my_value2 Network Config: Processing Inputs: Input Name: mnist_tar s3Input: Local Path: /opt/ml/processing/input s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz Input Name: source_code s3Input: Local Path: /opt/ml/processing/code s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py Processing Output Config: Outputs: Output Name: train_data s3Output: Local Path: /opt/ml/processing/output_train/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: test_data s3Output: Local Path: /opt/ml/processing/output_test/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: valid_data s3Output: Local Path: /opt/ml/processing/output_valid/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Processing Resources: Cluster Config: Instance Count: 1 Instance Type: ml.m5.xlarge Volume Size In GB: 20 Region: us-west-2 Role Arn: arn:aws:iam::<acct-id>:role/m-sagemaker-role Stopping Condition: Max Runtime In Seconds: 1800 Tags: Key: tagKey Value: tagValue Status: Cloud Watch Log URL: https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix Last Check Time: 2020-09-22T21:14:29Z Processing Job Status: InProgress Sage Maker Processing Job Name: kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385 Events: <none>

刪除一個 ProcessingJob

當您刪除處理工作時, SageMaker 處理工作會從 Kubernetes 中移除,但不會從中刪除該工作。 SageMaker如果中的工作狀態 SageMaker 為InProgress工作已停止。處理已停止的工作不會對 SageMaker資源產生任何費用。使用下列其中一個命令可刪除處理工作。

叢集範圍的安裝:

kubectl delete processingjob kmeans-mnist-processing

命名空間範圍的安裝:

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

處理工作的輸出應該類似以下內容。

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

注意

SageMaker 不會刪除處理工作。已停止的工作會繼續顯示在主 SageMaker 控台中。該delete命令需要幾分鐘的時間來清理從中的資源 SageMaker。

HostingAutoscalingPolicy (HAP) 運算子

HostingAutoscalingPolicy (HAP) 運算子會接受資源 ID 清單做為輸入,並將相同的政策套用至每個 ID。每個資源 ID 都是端點名稱和變體名稱的組合。HAP 運算子會執行兩個步驟:註冊資源 ID,然後將擴展政策套用至每個資源 ID。Delete 會復原這兩個動作。您可以將 HAP 套用至現有 SageMaker端點,也可以使用HostingDeployment 運算子建立新 SageMaker 端點。您可以在應用程式 SageMaker 自動調度資源政策文件中閱讀更多關於自動調度資源

注意

kubectl 命令中,您可以使用簡短格式 hap 來代替 hostingautoscalingpolicy

HostingAutoscalingPolicy 使用 YAML 檔案建立

使用 YAML 檔案建立 HostingAutoscalingPolicy (HAP),將預先定義或自訂度量套用至一或多個 SageMaker 端點。

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"

使用下列範例建立 HAP,將預先定義的指標或自訂指標套用至一個或多個端點。

範例 1:將預先定義的指標套用至單一端點變體

  1. 使用下列命令,下載預先定義指標的範例 YAML 檔案:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. 編輯 YAML 檔案以指定 endpointNamevariantName、和 Region

  3. 使用下列其中一個命令,將預先定義的指標套用至單一資源 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
  2. 編輯 YAML 檔案以指定 endpointNamevariantName、和 Region

  3. 使用下列其中一個命令,將自訂指標套用至單一資源 ID (端點名稱和變體名稱組合),以取代建議的 SageMakerVariantInvocationsPerInstance

    注意

    Amazon SageMaker 不會檢查您的 YAML 規格的有效性。

    叢集範圍的安裝:

    kubectl apply -f hap-custom-metric.yaml

    命名空間範圍的安裝:

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

範例 3:將擴展政策套用至多個端點和變體

您可以使用 HAP 運算子將相同的資源調度政策套用至多個資源 ID。系統會針對每個資源 ID (端點名稱和變體名稱組合) 建立單獨的 scaling_policy 要求。

  1. 使用下列命令,下載預先定義指標的範例 YAML 檔案:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. 編輯 YAML 檔案以指定Region 和多個 endpointNamevariantName值。

  3. 使用下列其中一個命令,將預先定義的指標套用至多個資源 ID (端點名稱和變體名稱組合)。

    叢集範圍的安裝:

    kubectl apply -f hap-predefined-metric.yaml

    命名空間範圍的安裝:

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

多個端點和變體的考量 HostingAutoscalingPolicies

使用多個資源 ID 時有下列考量:

  • 如果您在多個資源 ID 上套用單一政策,則系統會針對每個資源 ID 建立一個 PolicyARN。五個端點有五個 PolicyARN。當您對政策執行 describe 命令時,回應會顯示為一項工作,並包含單一任務狀態。

  • 如果您將自訂指標套用至多個資源 ID,則所有資源 ID (變體) 值都會使用相同的維度或值。例如,如果您針對執行個體 1-5 套用自訂指標,且端點變體維度已對應到變體 1,則當變體 1 超過指標時,所有端點都會縱向擴展或縮減規模。

  • HAP 運算子支援更新資源 ID 清單。如果您修改、新增或刪除規格的資源 ID,則自動擴展資源政策會從先前一的變體清單中移除,並套用至新指定的資源 ID 組合。使用 describe 命令列出目前套用政策的資源 ID。

清單 HostingAutoscalingPolicies

使用下列其中一個命令列出使用 HAP 運算子建立的所有 HostingAutoscalingPolicies (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 – 某些類型的錯誤會將狀態顯示為 Reconciling 而非 Error。範例包括伺服器端錯誤和處於 CreatingUpdating 狀態的端點。如需更多詳細資訊,請查看狀態或運算子日誌中的 Additional 欄位。

  • Created

  • Error

檢視您套用政策的自動擴展端點
  1. 在以下位置打開 Amazon SageMaker 控制台 https://console.aws.amazon.com/sagemaker/

  2. 在左側面板中,展開推論

  3. 選擇端點

  4. 選取感興趣的端點名稱。

  5. 捲動至端點執行期設定區段。

描述一個 HostingAutoscalingPolicy

使用以下命令獲取有關 a 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) 的端點,請使用命kubectldelete令移除 HAP、更新端點,然後重新套用 HAP。

若要刪除具有 HAP 的端點,請先使用 kubectl delete 命令移除 HAP,然後再刪除端點。