本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon SageMaker AI 任務
本節以適用於 Kubernetes 的 SageMaker AI Operators
重要
我們正在停止對 SageMaker Operators for Kubernetes
如果您目前使用的是 SageMaker Operators for Kubernetesv1.2.2
或以下版本,我們建議您將資源遷移到 Amazon SageMaker 的 ACK 服務控制器
如需與移轉步驟相關的資訊,請參閱將資源遷移到最新的運算子。
如需與終止支援 SageMaker Operators for Kubernetes 原始版本相關的常見問題的答案,請參閱宣布 SageMaker AI Operators for Kubernetes 原始版本的支援結束
若要使用 Operators for Kubernetes 執行 Amazon SageMaker AI 任務,您可以套用 YAML 檔案或使用提供的 Helm Chart。
下列教學課程中的所有範例運算子工作都使用從公開 MNIST 資料集擷取的範例資料。若要執行這些範例,請將資料集下載到 Amazon S3 儲存貯體。您可以在下載 MNIST 資料集中找到資料集。
目錄
TrainingJob 運算子
訓練任務運算子會在 SageMaker AI 中為您啟動訓練任務規格,以將指定的訓練任務規格與 SageMaker AI 進行協調。您可以在 SageMaker AI CreateTrainingJob API 文件中進一步了解 SageMaker 訓練任務。
主題
使用 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 AI 執行角色具有寫入存取權的 Amazon S3 儲存貯體。roleArn
必須有許可,SageMaker AI 才能代表您存取 Amazon S3、Amazon CloudWatch 和其他 服務。如需建立 SageMaker AI ExecutionRole 的詳細資訊,請參閱 SageMaker AI 角色。使用下列命令來套用 YAML 檔案:kubectl apply -f xgboost-mnist-trainingjob.yaml
使用 Helm Chart 建立 TrainingJob
您可以使用 Helm Chart 執行 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 必須具有許可,SageMaker AI 才能代表您存取 Amazon S3、Amazon CloudWatch 和其他 服務。如需建立 SageMaker AI ExecutionRole 的詳細資訊,請參閱 SageMaker AI 角色。
建立 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 AI 中啟動實際訓練任務,並更新 TrainingJob
Kubernetes 資源,以反映 SageMaker AI 中任務的狀態。您在工作期間使用的 SageMaker AI 資源會產生費用。工作完成或停止後,就不會再產生任何費用。
注意:SageMaker AI 不允許您更新執行中的訓練任務。您無法編輯任何參數並重新套用設定檔。變更中繼資料名稱或刪除現有工作,然後建立新工作。與 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 AI 資源產生任何費用。
TrainingJob 狀態值
STATUS
欄位可以是以下其中一個值:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
這些狀態直接來自 SageMaker AI 官方 API 文件。
除了官方的 SageMaker AI 狀態之外, 也可以STATUS
是 SynchronizingK8sJobWithSageMaker
。這表示運算子尚未處理工作。
次要狀態值
次要狀態直接來自 SageMaker AI 官方 API 文件。其中包含有關工作狀態的詳細資訊。
描述 TrainingJob
您可以使用 describe
kubectl
命令取得有關訓練工作的更多詳細資訊。這通常用於對問題進行偵錯或檢查訓練工作的參數。若要取得與訓練工作相關的資訊,請使用下列命令:
kubectl describe trainingjob xgboost-mnist-from-for-s3
訓練工作的輸出應與以下類似:
Name: xgboost-mnist-from-for-s3 Namespace: default Labels: <none> Annotations: <none> API Version: sagemaker.aws.amazon.com/v1 Kind: TrainingJob Metadata: Creation Timestamp: 2019-11-20T23:42:35Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 23119 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3 UID: 6d7uiui-0bef-11ea-b94e-0ed467example Spec: Algorithm Specification: Training Image: 8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Hyper Parameters: Name: eta Value: 0.2 Name: gamma Value: 4 Name: max_depth Value: 5 Name: min_child_weight Value: 6 Name: num_class Value: 10 Name: num_round Value: 10 Name: objective Value: multi:softmax Name: silent Value: 0 Input Data Config: Channel Name: train Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/ Region: us-east-2 Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole Stopping Condition: Max Runtime In Seconds: 86400 Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example Status: Cloud Watch Log URL: https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix Last Check Time: 2019-11-20T23:44:29Z Sage Maker Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample Secondary Status: Downloading Training Job Status: InProgress Events: <none>
檢視 TrainingJobs 的日誌
使用下列命令查看 kmeans-mnist
訓練工作的日誌:
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
您的輸出應該類似以下內容:執行個體的日誌會按時間順序排序。
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting" xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training. xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ',' xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
刪除 TrainingJobs
使用以下命令停止 Amazon SageMaker AI 上的訓練任務:
kubectl delete trainingjob xgboost-mnist-from-for-s3
此命令會從 Kubernetes 移除 SageMaker 訓練工作。此命令會傳回下列輸出:
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
如果任務仍在 SageMaker AI 上進行,任務會停止。任務停止或完成後,您無須為 SageMaker AI 資源支付任何費用。
注意:SageMaker AI 不會刪除訓練任務。停止的任務會持續顯示在 SageMaker AI 主控台上。此delete
命令需要約 2 分鐘的時間,才能從 SageMaker AI 清除資源。
HyperParameterTuningJob 運算子
超參數調校任務運算子會將您指定的超參數調校任務規格與 SageMaker AI 進行協調,方法是在 SageMaker AI 中啟動。您可以在 SageMaker AI CreateHyperParameterTuningJob API 文件中進一步了解 SageMaker AI 超參數調校任務。
主題
使用 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 Chart 建立 HyperparameterTuningJob
您可以使用 Helm Chart 來執行超參數調校工作。
-
使用以下命令複製 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
將角色和 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 AI 中啟動實際超參數最佳化任務,並更新 HyperParameterTuningJob
Kubernetes 資源以反映 SageMaker AI 中任務的狀態。您在工作期間使用的 SageMaker AI 資源會產生費用。工作完成或停止後,就不會再產生任何費用。
注意:SageMaker AI 不允許您更新執行中的超參數調校任務。您無法編輯任何參數並重新套用設定檔。您必須變更中繼資料名稱或刪除現有工作,然後建立新的工作。與 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 AI 資源產生任何費用。
超參數調校工作狀態值
STATUS
欄位可以是以下其中一個值:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
這些狀態直接來自 SageMaker AI 官方 API 文件。
除了官方的 SageMaker AI 狀態之外, 也可以STATUS
是 SynchronizingK8sJobWithSageMaker
。這表示運算子尚未處理工作。
狀態計數器
有多個輸出計數器,例如 COMPLETED
和 INPROGRESS
。它們分別代表了已完成和正在進行的訓練工作的數量。如需與如何確定這些資訊相關的詳細資訊,請參閱 SageMaker API 文件中的訓練工作狀態計數器。
最佳 TrainingJob
此欄包含對選取的指標進行了最佳化的 TrainingJob
名稱。
若要查看調整過的超參數的摘要,請執行下列命令:
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
若要查看與 TrainingJob
相關的詳細資訊,請執行下列命令:
kubectl describe trainingjobs
<job name>
產生的 TrainingJobs
您也可以執行下列命令,追蹤 HyperparameterTuningJob
在 Kubernetes 中啟動的所有 10 項訓練工作:
kubectl get trainingjobs
描述 HyperparameterTuningJob
您可以使用 describe
kubectl
命令取得偵錯詳細資訊。
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
除了調校任務的相關資訊之外,適用於 Kubernetes 的 SageMaker AI Operator 也會公開describe
輸出中超參數調校任務所找到的最佳訓練任務,如下所示:
Name: xgboost-mnist-hpo Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":... API Version: sagemaker.aws.amazon.com/v1 Kind: HyperparameterTuningJob Metadata: Creation Timestamp: 2019-10-17T01:15:52Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 8167 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo UID: a92f5e3c-f07b-11e9-bf6c-06d6f303uidu Spec: Hyper Parameter Tuning Job Config: Hyper Parameter Tuning Job Objective: Metric Name: validation:error Type: Minimize Parameter Ranges: Integer Parameter Ranges: Max Value: 20 Min Value: 10 Name: num_round Scaling Type: Linear Resource Limits: Max Number Of Training Jobs: 10 Max Parallel Training Jobs: 10 Strategy: Bayesian Training Job Early Stopping Type: Off Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Region: us-east-2 Training Job Definition: Algorithm Specification: Training Image: 12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Input Data Config: Channel Name: train Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Static Hyper Parameters: Name: base_score Value: 0.5 Name: booster Value: gbtree Name: csv_weights Value: 0 Name: dsplit Value: row Name: grow_policy Value: depthwise Name: lambda_bias Value: 0.0 Name: max_bin Value: 256 Name: max_leaves Value: 0 Name: normalize_type Value: tree Name: objective Value: reg:linear Name: one_drop Value: 0 Name: prob_buffer_row Value: 1.0 Name: process_type Value: default Name: rate_drop Value: 0.0 Name: refresh_leaf Value: 1 Name: sample_type Value: uniform Name: scale_pos_weight Value: 1.0 Name: silent Value: 0 Name: sketch_eps Value: 0.03 Name: skip_drop Value: 0.0 Name: tree_method Value: auto Name: tweedie_variance_power Value: 1.5 Stopping Condition: Max Runtime In Seconds: 86400 Status: Best Training Job: Creation Time: 2019-10-17T01:16:14Z Final Hyper Parameter Tuning Job Objective Metric: Metric Name: validation:error Value: Objective Status: Succeeded Training End Time: 2019-10-17T01:20:24Z Training Job Arn: arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample Training Job Name: xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059 Training Job Status: Completed Training Start Time: 2019-10-17T01:18:35Z Tuned Hyper Parameters: Name: num_round Value: 18 Hyper Parameter Tuning Job Status: Completed Last Check Time: 2019-10-17T01:21:01Z Sage Maker Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Training Job Status Counters: Completed: 10 In Progress: 0 Non Retryable Error: 0 Retryable Error: 0 Stopped: 0 Total Error: 0 Events: <none>
檢視 HyperparameterTuningJobs 日誌
超參數調校工作沒有日誌,但它們啟動的所有訓練工作都有日誌。這些記錄檔可以存取,就像是一般訓練工作一樣。如需詳細資訊,請參閱檢視 TrainingJobs 的日誌。
刪除 HyperparameterTuningJob
使用下列命令來停止 SageMaker 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
注意:刪除命令需要約 2 分鐘的時間來清除 SageMaker AI 中的資源。
BatchTransformJob 運算子
批次轉換任務運算子會將您指定的批次轉換任務規格與 SageMaker AI 進行協調,方法是在 SageMaker AI 中啟動。您可以在 SageMaker AI CreateTransformJob API 文件中進一步了解 SageMaker AI 批次轉換任務。
主題
使用 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
取代為您的輸入資料,並將 取代s3OutputPath
為 SageMaker AI 執行角色具有寫入存取權的 Amazon S3 儲存貯體。 -
使用下列命令來套用 YAML 檔案:
kubectl apply -f xgboost-mnist-batchtransform.yaml
使用 Helm Chart 建立 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
取代為您的輸入資料,並將 outputPath 取代為 SageMaker AI 執行角色具有寫入存取權的 S3 儲存貯體。 SageMaker
建立 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 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 AI 中啟動實際轉換任務,並更新BatchTransformJob
Kubernetes 資源以反映 SageMaker AI 中任務的狀態。您在工作期間使用的 SageMaker AI 資源會產生費用。工作完成或停止後,就不會再產生任何費用。
注意:SageMaker AI 不允許您更新執行中的批次轉換任務。您無法編輯任何參數並重新套用設定檔。您必須變更中繼資料名稱或刪除現有工作,然後建立新的工作。與 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 AI 資源產生任何費用。
批次轉換狀態值
STATUS
欄位可以是以下其中一個值:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
這些狀態直接來自 SageMaker AI 官方 API 文件。
除了官方的 SageMaker AI 狀態之外, 也可以STATUS
是 SynchronizingK8sJobWithSageMaker
。這表示運算子尚未處理工作。
描述 BatchTransformJob
您可以使用 describe
kubectl
命令取得偵錯詳細資訊。
kubectl describe batchtransformjob xgboost-mnist-batch-transform
您的輸出看起來應如以下所示:
Name: xgboost-mnist-batch-transform Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"... API Version: sagemaker.aws.amazon.com/v1 Kind: BatchTransformJob Metadata: Creation Timestamp: 2019-11-18T03:44:00Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21990924 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist UID: a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM Spec: Model Name: TrainingJob-20190814SMJOb-IKEB Region: us-east-1 Transform Input: Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Type: S3Prefix S 3 Uri: s3://amzn-s3-demo-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://amzn-s3-demo-bucket/mnist_kmeans_example/output Transform Resources: Instance Count: 1 Instance Type: ml.m4.xlarge Status: Last Check Time: 2019-11-19T22:50:40Z Sage Maker Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aaSMJOB Transform Job Status: Completed Events: <none>
檢視 BatchTransformJobs 日誌
使用下列命令查看 xgboost-mnist
批次轉換工作的日誌:
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
刪除 BatchTransformJob
使用下列命令來停止 SageMaker AI 中的批次轉換任務。
kubectl delete batchTransformJob xgboost-mnist-batch-transform
您的輸出看起來應如以下所示:
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
此命令會從 Kubernetes 叢集中移除批次轉換任務,並在 SageMaker AI 中停止這些任務。已停止或完成的任務不會對 SageMaker AI 資源產生任何費用。刪除需要約 2 分鐘的時間,才能清除 SageMaker AI 中的資源。
注意:SageMaker AI 不會刪除批次轉換任務。停止的任務會持續顯示在 SageMaker AI 主控台上。
HostingDeployment 運算子
HostingDeployment 運算子支援建立和刪除端點,以及更新現有端點以進行即時推論。託管部署運算子透過在 SageMaker AI 中建立模型、端點組態和端點,將您指定的託管部署任務規格與 SageMaker AI 進行協調。您可以在 SageMaker AI CreateEndpoint API 文件中進一步了解 SageMaker AI 推論。
主題
設定 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 AI 負載平衡。
-
模型。模型是為模型提供服務所必需的容器和執行角色 ARN。它至少需要一個容器。
-
容器。容器用於指定資料集和提供映像。如果您使用自己的自訂演算法,而不是 SageMaker AI 提供的演算法,推論程式碼必須符合 SageMaker AI 要求。如需詳細資訊,請參閱搭配 SageMaker AI 使用您自己的演算法。
建立 HostingDeployment
若要建立 HostingDeployment,請使用以下命令,透過 kubectl
套用檔案 hosting.yaml
:
kubectl apply -f hosting.yaml
SageMaker AI 會建立具有指定組態的端點。您在端點生命週期內使用的 SageMaker AI 資源會產生費用。刪除端點後,就不會再產生任何費用。
完成建立過程約需 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 正在執行。 -
Updating
:UpdateEndpoint 或 UpdateEndpointWeightsAndCapacities 正在執行。 -
SystemUpdating
:端點正在維護,在完成之前無法更新、刪除或重新調整規模。此維護操作不會變更任何客戶指定的值,例如 VPC 組態、 AWS KMS 加密、模型、執行個體類型或執行個體計數。 -
RollingBack
:端點無法縱向擴展、縮減規模或變更變體加權,且正在回復至之前的組態。回復完成後,端點會返回InService
狀態。此過渡狀態僅適用於在 UpdateEndpointWeightsAndCapacities 呼叫中,或在明確呼叫 UpdateEndpointWeightsAndCapacities 作業時已開啟自動擴展,且正在進行變體加權或容量變更的端點。 -
InService
:端點可以處理傳入請求。 -
Deleting
:DeleteEndpoint 正在執行。 -
Failed
:無法建立、更新端點或重新調整端點的規模。透過 DescribeEndpoint:FailureReason 取得與失敗原因相關的資訊。DeleteEndpoint 是唯一可以在失敗端點上執行的作業。
描述 HostingDeployment
您可以使用 describe
kubectl
命令取得偵錯詳細資訊。
kubectl describe hostingdeployment
您的輸出看起來應如以下所示:
Name: host-xgboost Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..." API Version: sagemaker.aws.amazon.com/v1 Kind: HostingDeployment Metadata: Creation Timestamp: 2019-11-22T19:40:00Z Finalizers: sagemaker-operator-finalizer Generation: 1 Resource Version: 4258134 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost UID: def0e83e-0d5f-11ea-aa45-0a3507uiduid Spec: Containers: Container Hostname: xgboost Image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest Model Data URL: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz Models: Containers: xgboost Execution Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Name: xgboost-model Primary Container: xgboost Production Variants: Initial Instance Count: 1 Instance Type: ml.c5.large Model Name: xgboost-model Variant Name: all-traffic Region: us-east-2 Status: Creation Time: 2019-11-22T19:40:04Z Endpoint Arn: arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample Endpoint Config Name: host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample Endpoint Name: host-xgboost-def0e83e0d5f11eaaa450a350733ba06 Endpoint Status: Creating Endpoint URL: https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations Last Check Time: 2019-11-22T19:43:57Z Last Modified Time: 2019-11-22T19:40:04Z Model Names: Name: xgboost-model Value: xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample Events: <none>
狀態欄位使用下列欄位提供更多資訊:
-
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。如需詳細資訊,請參閱在 SageMaker AI Hosting Services 上部署模型。 -
FailureReason
:如果建立、更新或刪除命令失敗,原因會顯示於此處。 -
Last Check Time
:運算子上次檢查端點狀態的時間。 -
Last Modified Time
:上次修改端點的時間。 -
Model Names
:SageMaker AI 模型名稱的 HostingDeployment 模型名稱鍵值對。
調用端點
一旦端點狀態為 InService
,您可以透過兩種方式叫用端點:使用 AWS CLI,這會執行身分驗證和 URL 請求簽署,或使用類似 cURL 的 HTTP 用戶端。如果您使用自己的用戶端,則需要自行執行 AWS v4 URL 簽署和身分驗證。
若要使用 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
-
HostingDeployment 的狀態為
InService
後,就可以更新。HostingDeployment 可能需要大約 10 分鐘時間才能進入服務中狀態。。可使用以下命令來驗證狀態是否為InService
:kubectl get hostingdeployments
-
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
-
儲存檔案,然後依如下所示,使用
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
使用以下命令,透過
kubectl
刪除 HostingDeployment:kubectl delete hostingdeployments host-xgboost
您的輸出看起來應如以下所示:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
-
若要驗證是否已刪除託管部署,請使用下列命令:
kubectl get hostingdeployments No resources found.
已刪除的端點不會對 SageMaker AI 資源產生任何費用。
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
,並將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.pysagemaker-execution-role
必須有許可,SageMaker AI 才能代表您存取 S3 儲存貯體、Amazon CloudWatch 和其他 服務。如需建立執行角色的詳細資訊,請參閱 SageMaker AI 角色。 -
使用下列其中一個命令來套用 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 AI 資源產生進一步的費用。
描述 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>
刪除處理工作
當您刪除處理任務時,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) 運算子
HostingAutoscalingPolicy (HAP) 運算子會接受一系列資源 ID 作為輸入,並將相同的政策套用至每個資源 ID。每個資源 ID 都是端點名稱和變體名稱的組合。HAP 運算子會執行兩個步驟:註冊資源 ID,然後將擴展政策套用至每個資源 ID。Delete
會復原這兩個動作。您可以將 HAP 套用至現有的 SageMaker AI 端點,也可以使用 HostingDeployment 運算子建立新的 SageMaker AI 端點。您可以在 Application Autoscaling 政策文件中閱讀更多關於 SageMaker AI Autoscaling 的資訊。 https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html
注意
在 kubectl
命令中,您可以使用簡短格式 hap
來代替 hostingautoscalingpolicy
。
主題
使用 YAML 檔案建立 HostingAutoscalingPolicy
使用 YAML 檔案建立 HostingAutoscalingPolicy (HAP),將預先定義或自訂指標套用至一或多個 SageMaker AI 端點。
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"
使用下列範例建立 HAP,將預先定義的指標或自訂指標套用至一個或多個端點。
範例 1:將預先定義的指標套用至單一端點變體
-
使用下列命令,下載預先定義指標的範例 YAML 檔案:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
編輯 YAML 檔案以指定
endpointName
、variantName
、和Region
。 -
使用下列其中一個命令,將預先定義的指標套用至單一資源 ID (端點名稱和變體名稱組合)。
叢集範圍的安裝:
kubectl apply -f hap-predefined-metric.yaml
命名空間範圍的安裝:
kubectl apply -f hap-predefined-metric.yaml -n
<NAMESPACE>
範例 2:將自訂指標套用至單一端點變體
-
使用下列命令,下載自訂指標的範例 YAML 檔案:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
-
編輯 YAML 檔案以指定
endpointName
、variantName
、和Region
。 -
使用下列其中一個命令,將自訂指標套用至單一資源 ID (端點名稱和變體名稱組合),以取代建議的
SageMakerVariantInvocationsPerInstance
。注意
Amazon SageMaker AI 不會檢查 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 時有下列考量:
-
如果您在多個資源 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
。範例包括伺服器端錯誤和處於Creating
或Updating
狀態的端點。如需更多詳細資訊,請查看狀態或運算子日誌中的Additional
欄位。 Created
Error
檢視您套用政策的自動擴展端點
-
在 https://console.aws.amazon.com/sagemaker/
:// 開啟 Amazon SageMaker AI 主控台。 -
在左側面板中,展開推論。
-
選擇端點。
-
選取感興趣的端點名稱。
-
捲動至端點執行期設定區段。
描述 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,然後再刪除端點。