SageMaker-使用TuningStep找尋最好的超參組合

閱讀時間約 9 分鐘

一.引言

  在上篇我們介紹了 SageMaker 中 Pipeline 的使用方法,其中的 TuningStep 功能,能夠讓我們能夠指定一連串參數組合進行實驗比對,最終找出最適合的參數組合,這回就讓我們試試看在 SageMaker 中的 TuningStep 使用上與 Python 庫的使用差異。

二.使用說明

  在不使用 SageMaker 中的 TuningStep 時,我們通常使用一些專業套件如 optuna來進行,以下為一個簡易示例 :

import optuna
import torch
import torch.nn as nn
import torch.optim as optim

# 定義目標函數
def objective(trial):
# 定義超參數搜索空間
lr = trial.suggest_loguniform('lr', 1e-5, 1e-1)
momentum = trial.suggest_uniform('momentum', 0.5, 0.9)

# 定義模型
model = nn.Sequential(
nn.Linear(28 * 28, 128),
nn.ReLU(),
nn.Linear(128, 10)
)
optimizer = optim.SGD(model.parameters(), lr=lr, momentum=momentum)
criterion = nn.CrossEntropyLoss()

# 模擬訓練和驗證過程(這裡簡化了訓練過程)
for epoch in range(10):
optimizer.zero_grad()
output = model(torch.randn(64, 28 * 28)) # 假設一個批次
loss = criterion(output, torch.randint(0, 10, (64,)))
loss.backward()
optimizer.step()

# 返回驗證損失作為目標函數值
return loss.item()

# 創建研究並開始超參數調優
study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)

print('最佳超參數: ', study.best_params)

  而在 SageMaker 的 TuningStep 中,使用方法與建立其他種類 Step 類似,都是定義好 Step 後,使用 Pipiline 包裝起來後執行,當然也可以進行擴充,將上篇示例中的前處理跟後續部屬也一同放入同一個 Pipeline 內,但這邊為了不要太長,只演示 TuningStep 的使用場景。

import sagemaker
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import TuningStep
from sagemaker.pytorch import PyTorch
from sagemaker.tuner import HyperparameterTuner, IntegerParameter, ContinuousParameter

# 定義輸入輸出S3容器位置、IAM腳色,執行個體等參數
s3_input_path = 's3://your-bucket/input-data'
s3_output_path = 's3://your-bucket/output-data'
role = 'your-iam-role'
tuning_instance_type = ParameterString(name="TrainingInstanceType",
default_value="ml.m5.xlarge")
pipeline_session = PipelineSession()

# 配置 Estimator
estimator = PyTorch(
entry_point='train.py',
role=role,
instance_count=1,
instance_type=tuning_instance_type,
framework_version='2.2.0',
py_version='py310',
output_path=s3_output_path,
hyperparameters={
'epochs': 10,
'batch_size': 64
}
)

# 配置超参数范围
hyperparameter_ranges = {
'learning_rate': ContinuousParameter(0.001, 0.1),
'batch_size': IntegerParameter(32, 128)
}

# 配置 TuningJob
tuner = HyperparameterTuner(
estimator=estimator,
objective_metric_name='validation:accuracy',
hyperparameter_ranges=hyperparameter_ranges,
max_jobs=20,
max_parallel_jobs=2
)

# 定義​ TuningStep
step_tuning = TuningStep(
name="HyperparameterTuning",
tuner=tuner,
inputs={ "train":s3_input_path, "validation": s3_input_path }
)

# 定義​ Pipeline
pipeline = Pipeline( name="YourPipelineName",
parameters=[tuning_instance_type],
steps=[step_tuning],
sagemaker_session=pipeline_session )

# 啟動 pipeline
pipeline.upsert(role_arn=role)
execution = pipeline.start()

三.總結

  SageMaker 的 TuningStep 與專門的 Python 套件在使用上的體驗是類似的,且功能上也沒有太大的變化,對於參數的監控若要產生同時監控多參數的效果,需要做的處理也大同小異,並沒有提供更方便的方法,唯一的優勢應該就是若你開始建構整體Pipeline 流程,SageMaker 單獨為 Tuning 功能切割出一塊給你,讓你可以模組化的去管理這塊部分。

  到現在這篇,SageMaker 系列也介紹了5篇,大致了解整個 SageMaker 該如何訓練,我想先暫時告一段落,因為到目前為止,體驗上我認為大同小異,主要就是需要學習新的 SageMaker 套件,去學習離線時的功能在 SageMaker 上要如何實現,除此之外,再來能介紹的功能大致上都是使用 AutoML 利用雲上資源快速地進行應用及實驗,但這部分需要有個實際案例比較能凸顯其特色,所以接下來,我會嘗試 SageMaker 外的其他 AWS AI 服務,看看與 SageMaker 的差異在哪?我們下篇再見。

7會員
19內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
留言0
查看全部
發表第一個留言支持創作者!
貓貓學習筆記 的其他內容
你可能也想看
【高訂】Yu Chen Chang張雨宸-Yara Shoemaker 2024春夏高級訂製服系列2024春夏高級訂製服系列時裝周模特兒名單中,台灣模特兒再添一位,那便是過去主要據點為米蘭的張雨宸YuChen Chang。
Thumbnail
avatar
艾克星貨鋪
2024-01-29
Amazon SageMaker Canvas 實作學習日記 (1)Amazon SageMaker Canvas 是一項無須程式碼機器學習 (ML) 服務,可以幫助商業分析師透過機器學習(ML)在幾分鐘內從數千個文件、圖像和文字行中產生見解。 可以隨時存取即用型模型,建立自訂文字和圖像分類模型以及先前支援的表格資料自訂模型,所有這些操作都無需具備機器學習經驗,也無
Thumbnail
avatar
西尼亞ming
2023-10-06
AWS SageMaker 開箱體驗前幾個禮拜,AWS 舉行 Startup Day Taiwan。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬。既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。
Thumbnail
avatar
Ken Chen
2023-07-25
沒有機器學習經驗的我嘗試了 Amazon SageMaker JumpStart 前言 我在工作中沒有什麼機會接觸到機器學習,學生時期也沒有學習過相關知識。 作為一個業餘小白,我對機器學習非常感興趣。在自學的過程中,我逐漸意識到利用機器學習可以做很多有趣的事情。 因此,我決定嘗試使用 AWS SageMaker JumpStart 來實驗文字生成式繪圖 AI ,以了解機
Thumbnail
avatar
西尼亞ming
2023-07-18
使用PROCESS macro for SPSS 進行調節式中介分析(moderated mediation)PROCESS macro for SPSS 可以用非常簡單方式學會調節中介模式。本文將介紹四種類型的變項,並解釋調節式中介的公式,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
avatar
Dr. Rover
2023-05-15
使用PROCESS macro for SPSS 進行調節模式分析PROCESS macro for SPSS 可以用非常簡單方式使用調節分析。本文將介紹三種類型的變項,還有如何操作最4.2版本的PROCESS macro for SPSS進行調節模式。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
avatar
Dr. Rover
2023-04-16
使用PROCESS macro for SPSS 進行中介模式分析 PROCESS macro for SPSS 可以用非常簡單方式進中介模式。本文將介紹三種類型的變項,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
avatar
Dr. Rover
2023-03-15
使用Potato Media寫作平台一年半來的心得及收入報告Potato Media雖然和方格子及Matters同樣歸類為寫作平台,同樣強調將內容變現,前者卻與後面兩者完全不同,當然,所獲得的收入報酬也不會一樣,更清楚一點來說,連獲得收益的方式也大不相同。
Thumbnail
avatar
宋雨桐Love Queen
2023-03-11
avatar
YUKI
2022-11-04
艾狄安娜《白朗峰上的約定 The Sboemaker's Wife》生命中的悲傷都有其意義「這世上的女人從未意識到她們擁有的力量....我下一次再墜入愛河時,我 會張大眼睛做出聰明的選擇。我會先確定那個女孩愛我比我愛她多一些。 」西羅是在乎的,她從沒有給過他的暗戀相對的回應,可是,親眼看見她跟神父「在一起」,西羅心碎了,未來幾年都還是會隱隱作痛.....
Thumbnail
avatar
優雅下決心
2013-12-27