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
留言分享你的想法!
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
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
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