本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調校機器學習模型
此範例專案示範 SageMaker 如何調整機器學習模型的超參數,以及批次轉換測試資料集。
在此專案中,Step Functions 數使用 Lambda 函數來植入含有測試資料集的 Amazon S3 儲存貯體。然後,它會使用SageMaker服務整合建立超參數調整工作。然後,它會使用 Lambda 函數擷取資料路徑、儲存調整模型、擷取模型名稱,然後執行批次轉換工作以在中 SageMaker執行推論。
如需有關 SageMaker 和 Step Functions 服務整合的詳細資訊,請參閱下列內容:
注意
此範例專案可能需要付費。
對於新用 AWS 戶,可以使用免費用量方案。在此方案中,特定用量層級以下的服務皆為免費。如需有關 AWS 成本和免費方案的詳細資訊,請參閱SageMaker定價
步驟 1:建立狀態機器並佈建資源
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
Tune a machine learning model
在搜尋方塊中輸入,然後從傳回的搜尋結果中選擇「調整機器學習模型」。 -
選擇 Next (下一步) 繼續。
-
Step Functions 會列出您選取的範例專案中 AWS 服務 使用的項目。它也會顯示範例專案的工作流程圖表。將此項目部署到您的項目中, AWS 帳戶 或將其用作構建自己的項目的起點。根據您想要的進行方式,選擇 [執行示範] 或 [在其上建置]。
此範例專案會部署下列資源:
-
三大 AWS Lambda 功能
-
一個 Amazon Simple Storage Service (Amazon S3) 儲存貯體
-
一个 AWS Step Functions 状态机
-
相關的 AWS Identity and Access Management (IAM) 角色
下圖顯示了「調整機器學習模型」範例專案的工作流程圖形:
-
-
選擇「使用範本」繼續進行選取。
-
執行以下任意一項:
-
如果您選取「在其上建置」,「Step Functions」會為您選取的範例專案建立工作流程原型。Step Functions 不會部署工作流程定義中列出的資源。
在工作流程 Studio 中設計模式,從拖放狀態狀態瀏覽器以繼續建立您的工作流程原型。或者切換到提供類似 VS Code 的整合式程式碼編輯器,以便在 Step Functions 主控台中更新狀態機器的 Amazon States Language (ASL) 定義。程式碼模式如需有關使用工作流程 Studio 建置狀態機器的詳細資訊,請參閱使用工作流程。
重要
請記得在執行工作流程之前,更新範例專案中使用之資源的預留位置 Amazon 資源名稱 (ARN)。
-
如果您選取 [執行示範],Step Functions 會建立唯讀範例專案,該專案會使用 AWS CloudFormation 範本將該範本中列出的 AWS 資源部署到您的 AWS 帳戶.
提示
若要檢視範例專案的狀態機定義,請選擇 [程式碼]。
準備就緒後,請選擇 [部署並執行] 以部署範例專案並建立資源。
建立這些資源和相關 IAM 許可最多可能需要 10 分鐘的時間。部署資源時,您可以開啟 CloudFormation Stack ID 連結以查看正在佈建的資源。
建立範例專案中的所有資源之後,您可以在 [狀態機器] 頁面上看到列出的新範例專案。
重要
CloudFormation 範本中使用的每項服務可能會收取標準費用。
-
步驟 2:運行狀態機
-
在 [狀態電腦] 頁面上,選擇您的範例專案。
-
在範例專案頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。默認情況下,Step Functions 自動生成一個唯一的執行名稱。
注意
Step Functions 可讓您建立狀態機器、執行項目和活動的名稱,以及包含非 ASCII 字元的標籤。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。
-
(選擇性) 在「輸入」方塊中,以 JSON 格式輸入輸入值以執行工作流程。
如果您選擇執行示範,則不需要提供任何執行輸入。
注意
如果您部署的示範專案包含預先填入的執行輸入資料,請使用該輸入來執行狀態機器。
-
選擇 Start execution (開始執行)。
-
「Step Functions」主控台會將您引導至標題為您的執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行詳細資訊頁面 — 介面概觀。
-
範例狀態機器程式碼
此範例專案中的狀態機器 SageMaker 與 AWS Lambda 這些資源直接整合並傳遞參數,並將 Amazon S3 儲存貯體用於訓練資料來源和輸出。
瀏覽此範例狀態機器,以瞭解 Step Functions 如何控制 Lambda 和 SageMaker.
如需如何 AWS Step Functions 控制其他 AWS 服務的詳細資訊,請參閱AWS Step Functions 搭配其他服務使用。
{
"StartAt": "Generate Training Dataset",
"States": {
"Generate Training Dataset": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U",
"Type": "Task",
"Next": "HyperparameterTuning (XGBoost)"
},
"HyperparameterTuning (XGBoost)": {
"Resource": "arn:aws:states:::sagemaker:createHyperParameterTuningJob.sync",
"Parameters": {
"HyperParameterTuningJobName.$": "$.body.jobName",
"HyperParameterTuningJobConfig": {
"Strategy": "Bayesian",
"HyperParameterTuningJobObjective": {
"Type": "Minimize",
"MetricName": "validation:rmse"
},
"ResourceLimits": {
"MaxNumberOfTrainingJobs": 2,
"MaxParallelTrainingJobs": 2
},
"ParameterRanges": {
"ContinuousParameterRanges": [{
"Name": "alpha",
"MinValue": "0",
"MaxValue": "1000",
"ScalingType": "Auto"
},
{
"Name": "gamma",
"MinValue": "0",
"MaxValue": "5",
"ScalingType": "Auto"
}
],
"IntegerParameterRanges": [{
"Name": "max_delta_step",
"MinValue": "0",
"MaxValue": "10",
"ScalingType": "Auto"
},
{
"Name": "max_depth",
"MinValue": "0",
"MaxValue": "10",
"ScalingType": "Auto"
}
]
}
},
"TrainingJobDefinition": {
"AlgorithmSpecification": {
"TrainingImage": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
"TrainingInputMode": "File"
},
"OutputDataConfig": {
"S3OutputPath": "s3://stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/models"
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 86400
},
"ResourceConfig": {
"InstanceCount": 1,
"InstanceType": "ml.m4.xlarge",
"VolumeSizeInGB": 30
},
"RoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG",
"InputDataConfig": [{
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "FullyReplicated",
"S3DataType": "S3Prefix",
"S3Uri": "s3://stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/csv/train.csv"
}
},
"ChannelName": "train",
"ContentType": "text/csv"
},
{
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "FullyReplicated",
"S3DataType": "S3Prefix",
"S3Uri": "s3://stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/csv/validation.csv"
}
},
"ChannelName": "validation",
"ContentType": "text/csv"
}],
"StaticHyperParameters": {
"precision_dtype": "float32",
"num_round": "2"
}
}
},
"Type": "Task",
"Next": "Extract Model Path"
},
"Extract Model Path": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9",
"Type": "Task",
"Next": "HyperparameterTuning - Save Model"
},
"HyperparameterTuning - Save Model": {
"Parameters": {
"PrimaryContainer": {
"Image": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
"Environment": {},
"ModelDataUrl.$": "$.body.modelDataUrl"
},
"ExecutionRoleArn": "arn:aws:iam::012345678912:role/StepFunctionsSample-SageM-SageMakerAPIExecutionRol-1MNH1VS5CGGOG",
"ModelName.$": "$.body.bestTrainingJobName"
},
"Resource": "arn:aws:states:::sagemaker:createModel",
"Type": "Task",
"Next": "Extract Model Name"
},
"Extract Model Name": {
"Resource": "arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM",
"Type": "Task",
"Next": "Batch transform"
},
"Batch transform": {
"Type": "Task",
"Resource": "arn:aws:states:::sagemaker:createTransformJob.sync",
"Parameters": {
"ModelName.$": "$.body.jobName",
"TransformInput": {
"CompressionType": "None",
"ContentType": "text/csv",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/csv/test.csv"
}
}
},
"TransformOutput": {
"S3OutputPath": "s3://stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/output"
},
"TransformResources": {
"InstanceCount": 1,
"InstanceType": "ml.m4.xlarge"
},
"TransformJobName.$": "$.body.jobName"
},
"End": true
}
}
}
如需將 Step Functions 與其他 AWS 服務搭配使用時如何設定 IAM 的詳細資訊,請參閱整合式服務的 IAM 政策。
IAM 範例
範例專案產生的這些範例 AWS Identity and Access Management (IAM) 政策包含執行狀態機器和相關資源所需的最低權限。我們建議您僅在 IAM 政策中加入必要的許可。
下列 IAM 政策已附加至狀態機器,並允許狀態機器執行存取必要 SageMaker的 Lambda 和 Amazon S3 資源。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sagemaker:CreateHyperParameterTuningJob",
"sagemaker:DescribeHyperParameterTuningJob",
"sagemaker:StopHyperParameterTuningJob",
"sagemaker:ListTags",
"sagemaker:CreateModel",
"sagemaker:CreateTransformJob",
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageMa-LambdaForDataGeneration-1TF67BUE5A12U",
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelPath-V0R37CVARUS9",
"arn:aws:lambda:us-west-2:012345678912:function:StepFunctionsSample-SageM-LambdaToExtractModelName-8FUOB30SM5EM"
],
"Effect": "Allow"
},
{
"Action": [
"events:PutTargets",
"events:PutRule",
"events:DescribeRule"
],
"Resource": [
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule",
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule",
"arn:aws:events:*:*:rule/StepFunctionsGetEventsForSageMakerTuningJobsRule"
],
"Effect": "Allow"
}
]
}
下列 IAM 政策會在HyperparameterTuning
州/省的TrainingJobDefinition
和HyperparameterTuning
欄位中參照。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:DescribeLogStreams",
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"sagemaker:DescribeHyperParameterTuningJob",
"sagemaker:StopHyperParameterTuningJob",
"sagemaker:ListTags"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/*",
"Effect": "Allow"
},
{
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f",
"Effect": "Allow"
}
]
}
下列 IAM 政策允許 Lambda 函數使用範例資料植入 Amazon S3 儲存貯體。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::stepfunctionssample-sagemak-bucketformodelanddata-80fblmdlcs9f/*",
"Effect": "Allow"
}
]
}
如需將 Step Functions 與其他 AWS 服務搭配使用時如何設定 IAM 的詳細資訊,請參閱整合式服務的 IAM 政策。