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 的差異在哪?我們下篇再見。

留言
avatar-img
貓貓學習筆記
10會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
貓貓學習筆記的其他內容
2024/05/22
  這回來介紹 AWS 在目前生成式 AI 各種群魔亂舞下推出的 Bedrock 服務,其官網說明可以快速且傻瓜式的部屬生成式 AI 到你的應用上,看看是不是如其所述的功能強大。
Thumbnail
2024/05/22
  這回來介紹 AWS 在目前生成式 AI 各種群魔亂舞下推出的 Bedrock 服務,其官網說明可以快速且傻瓜式的部屬生成式 AI 到你的應用上,看看是不是如其所述的功能強大。
Thumbnail
2024/05/21
  前陣子我花了一些時間學習 SageMaker 的相關使用,但除了 SageMaker外,AWS 中尚有大量的機器學習相關服務,剛好趁此機會好好的統整分類一下,後續也能作為選擇學習目標的依據。
Thumbnail
2024/05/21
  前陣子我花了一些時間學習 SageMaker 的相關使用,但除了 SageMaker外,AWS 中尚有大量的機器學習相關服務,剛好趁此機會好好的統整分類一下,後續也能作為選擇學習目標的依據。
Thumbnail
2024/05/17
  除了上篇提到的 Data Wrangler 外,SageMaker 還有許多配套的功能,其中有個叫做 Pipelines 的東西,說是可以用來構建、 管理及自動化深度學習流程,能夠節省人工操作,有那麼神?這次就來試試 Pipelines 能夠為我們帶來什麼體驗。
Thumbnail
2024/05/17
  除了上篇提到的 Data Wrangler 外,SageMaker 還有許多配套的功能,其中有個叫做 Pipelines 的東西,說是可以用來構建、 管理及自動化深度學習流程,能夠節省人工操作,有那麼神?這次就來試試 Pipelines 能夠為我們帶來什麼體驗。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
  前陣子我花了一些時間學習 SageMaker 的相關使用,但除了 SageMaker外,AWS 中尚有大量的機器學習相關服務,剛好趁此機會好好的統整分類一下,後續也能作為選擇學習目標的依據。
Thumbnail
  前陣子我花了一些時間學習 SageMaker 的相關使用,但除了 SageMaker外,AWS 中尚有大量的機器學習相關服務,剛好趁此機會好好的統整分類一下,後續也能作為選擇學習目標的依據。
Thumbnail
  在上篇我們介紹了 SageMaker 中 Pipeline 的使用方法,其中的 TuningStep 功能,能夠讓我們能夠指定一連串參數組合進行實驗比對,最終找出最適合的參數組合
Thumbnail
  在上篇我們介紹了 SageMaker 中 Pipeline 的使用方法,其中的 TuningStep 功能,能夠讓我們能夠指定一連串參數組合進行實驗比對,最終找出最適合的參數組合
Thumbnail
  除了上篇提到的 Data Wrangler 外,SageMaker 還有許多配套的功能,其中有個叫做 Pipelines 的東西,說是可以用來構建、 管理及自動化深度學習流程,能夠節省人工操作,有那麼神?這次就來試試 Pipelines 能夠為我們帶來什麼體驗。
Thumbnail
  除了上篇提到的 Data Wrangler 外,SageMaker 還有許多配套的功能,其中有個叫做 Pipelines 的東西,說是可以用來構建、 管理及自動化深度學習流程,能夠節省人工操作,有那麼神?這次就來試試 Pipelines 能夠為我們帶來什麼體驗。
Thumbnail
  在上篇我們已經學習到怎麼在 SageMaker 上進行簡易訓練,可以說是踏入了第一步, SageMaker 提供了不少工具用來協助使用者能夠更快速的進行訓練,其中 Data Wrangler 便是用於訓練資料處理的工具,那麼,他好用嗎?必須用嗎?
Thumbnail
  在上篇我們已經學習到怎麼在 SageMaker 上進行簡易訓練,可以說是踏入了第一步, SageMaker 提供了不少工具用來協助使用者能夠更快速的進行訓練,其中 Data Wrangler 便是用於訓練資料處理的工具,那麼,他好用嗎?必須用嗎?
Thumbnail
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
Thumbnail
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
Thumbnail
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
Thumbnail
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文介紹了Power Automate Desktop中的變數資料類型,包括簡單資料類型和進階資料類型,並提供了常見變數的用途和實際應用案例。這將有助於初學者更好地理解Power Automate Desktop的變數基本觀念,並期待下一篇文章將繼續介紹更多功能。
Thumbnail
本文介紹了Power Automate Desktop中的變數資料類型,包括簡單資料類型和進階資料類型,並提供了常見變數的用途和實際應用案例。這將有助於初學者更好地理解Power Automate Desktop的變數基本觀念,並期待下一篇文章將繼續介紹更多功能。
Thumbnail
pipe 代表函數式程式設計中的概念,利用多個功能結合在一起,資料依序通過每個功能進行處理。文章中介紹了 pipe 的優點、兩個等效的程式碼比較以及 remeda 套件的使用。詳細介紹了使用 pipe 的好處,並提供了多個相關的例子,展示了 pipe 可讀性的提升。
Thumbnail
pipe 代表函數式程式設計中的概念,利用多個功能結合在一起,資料依序通過每個功能進行處理。文章中介紹了 pipe 的優點、兩個等效的程式碼比較以及 remeda 套件的使用。詳細介紹了使用 pipe 的好處,並提供了多個相關的例子,展示了 pipe 可讀性的提升。
Thumbnail
專案分享-計算機 邏輯思維:首先,要建立幾個變數與函式,方便我們作業。接下來針對每一個函式進行解釋。 讓大家可以自己動手做一個簡易的計算機
Thumbnail
專案分享-計算機 邏輯思維:首先,要建立幾個變數與函式,方便我們作業。接下來針對每一個函式進行解釋。 讓大家可以自己動手做一個簡易的計算機
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News