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
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
如果你也是那種在職場上追求極致效率,對生活品質有堅持,且渴望一段成熟、穩定、不拖泥帶水關係的專業人士,那麼 Ping! 會是你目前市面上最值得嘗試的選擇。 成熟的大人,不需要在低效的社交中消磨熱情。讓 Ping!,為你的情感生活進行「降噪」,把精力和時間,留給那個真正能與你靈魂共鳴、頻率一致的人。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
厭倦只看外貌的交友方式嗎?Ping!主打真實、安全的深度交友體驗,透過真人驗證與多樣化的個人化問答,幫助使用者在認識彼此之前,先理解價值觀、關係期待與交友目標。即使是慢熟的 I 人,也能透過提問找到適合的人選,避免聊到一半才發現方向不同。適合想被理解、重視心理連結與安心互動的你。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
Ping!主打真人驗證機制,透過AI人臉比對確保用戶真實性,讓人放心。獨特的照片主題功能、個性化標籤和趣味文字問答,讓用戶更深入展現自我,為開啟話題提供契機,甚至有機會找到擁有相似冷門興趣的同好。Ping!注重高品質的交友關係,透過共同點建立雙方的連結,為現代人提供一個舒適、真實且有意義的交友環境。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
Thumbnail
也許不是我不適合交友,而是我適合的節奏,本來就比較慢。 比起快速認識很多人,我更在意人與人怎麼相遇,才不會那麼累。當對話可以慢慢發生,當我們從想法開始靠近彼此,那種剛剛好的距離,反而讓人更願意走近。
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的變數基本觀念,並期待下一篇文章將繼續介紹更多功能。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News