SageMaker-讓自己的訓練上雲端

閱讀時間約 5 分鐘

一.引言

  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。

二.事前規劃

  既然現在需要使用自己的資料,就得好好規劃,這次希望將成本壓制在免費方案的條件下(或是最低限度),大致需要符合以下內容 :

  • 訓練資料及相關產出資料不能超出S3中的5G免費額度
  • 程式碼及訓練相關檔案不能超過筆記本實例的5G限額
  • 訓練時使用 ml.m5.xlarge 執行個體且不超過50小時
  • 筆記本不能開啟超過250小時(*記得確實停止才不會算時間)

  再來因為筆記本一開就會計時,所以這次將在本機端修改完再一次上傳到筆記本,考慮到只有5G,這次就選擇 Vocus-StyleTransfer-V1 來練習,第一版本的風格轉換只需要兩張圖,且訓練上也不會太久,這次修改大致規劃成下列模式 :

StyleTransferV1 ┬ TrainImg
| ├​ Content.jpg
|​ └ Style.jpg
├ Utils
| ├ __init__.py
| └ common.py
├ VGG19PreTrain
| └ vgg19.pth
├ ResultImg
└ Transform.py

三.實際操作

  首先先上傳這些檔案到筆記本內

raw-image

  然後來處理啟動的部分,新增一個 Transform.ipynb,其中原本想要直接使用上傳到筆記本內的圖片,但嘗試後沒想到不行,只能透過S3容器,所以只能先將圖片先上傳到S3後,再指定對應路徑進行訓練。

import sagemaker
from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()
region = sagemaker_session.boto_region_name

bucket = sagemaker_session.default_bucket()
prefix = "sagemaker/StyleTransformV1"

role = sagemaker.get_execution_role()

style_path = 's3://S3-bucket-name/TrainImg/Style'
content_path = 's3://S3-bucket-name/TrainImg/Content'

estimator = PyTorch(
entry_point="Transform.py",
role=role,
py_version="py310",
framework_version="2.2.0",
instance_count=1,
instance_type="ml.m5.xlarge",
output_path="s3://S3-bucket-name/Result/",
hyperparameters={"num-steps": 150},
dependencies=['Utils','VGG19PreTrain']
)

estimator.fit({"content": content_path,
"style": style_path})

  並調整存圖從存本機改成上傳到S3

def save_image_to_s3(tensor, s3_bucket, s3_key):
# 將張量轉換為 PIL 圖片
image = tensor.cpu().clone()
image = image.squeeze(0)
image = unloader(image)

# 將圖片保存到內存中的 BytesIO 對象
buffer = io.BytesIO()
buffer.seek(0)

# 將圖片上傳到 S3
s3.upload_fileobj(buffer, s3_bucket, s3_key)

save_image_to_s3(model_output,'S3-bucket-name','Result/result.jpg')

  確認所有都沒問題後,即可使用Shift+Enter運行Transform.ipynb的整個區塊,S3儲存區便會產出結果圖,同樣相關程式碼於Github

raw-image

四.結語

  本次成功將之前的程式碼推上 SageMaker 進行訓練,對於基本使用有了一定的了解,實際用下來雖然在存儲上有著一定的規定,但在環境及訓練上相對都相對簡單,並且使用上邏輯也足夠清晰,接下來下篇應該會繼續探討 SageMaker 提供的其他功能,讓我們下篇再見。

avatar-img
8會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
貓貓學習筆記 的其他內容
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 總結一下目前有的素材: AI說書 - 從0開始 - 103:資料集載入 AI說書 - 從0開始 - 104:定義資料清洗的函數 AI說書 - 從0開始 - 105
#誠實書寫練習 #Day173 昨晚看到一個課程,思考後不到五分鐘決定按下“確定鍵”報名參加。 生活中還有好多我想要探索的視野,以及想要經歷的新鮮陌生體驗。 不要害怕,努力的朝夢想前進。 沈浸在自己熱愛的興趣上,也算是溺愛自己的方式。 寫於20240621(週五)
Thumbnail
由於去年我是直接從JS直播班出發的,想當然沒參加過體驗營這類的短期嘗鮮課程,就抱著試試看的心態來體驗看看了,也因為我本身有一些些基礎了,這次就果斷幫自己加碼擔任志工,多多少少能幫助到剛開始就卡住的同學,希望能借著多次的經驗累積來增加我的經歷。
Thumbnail
我們根據過去工作坊中的經典課程整理出一系列的在家指引。希望能協助各地的學生在家練習自我覺察,進而開闊自己更多的可能性🌟
Thumbnail
延續上週提到的,「有哪些不訓練模型的情況下,能夠強化語言模型的能力」,這堂課接續介紹其中第 3、4 個方法
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 總結一下目前有的素材: AI說書 - 從0開始 - 103:資料集載入 AI說書 - 從0開始 - 104:定義資料清洗的函數 AI說書 - 從0開始 - 105
#誠實書寫練習 #Day173 昨晚看到一個課程,思考後不到五分鐘決定按下“確定鍵”報名參加。 生活中還有好多我想要探索的視野,以及想要經歷的新鮮陌生體驗。 不要害怕,努力的朝夢想前進。 沈浸在自己熱愛的興趣上,也算是溺愛自己的方式。 寫於20240621(週五)
Thumbnail
由於去年我是直接從JS直播班出發的,想當然沒參加過體驗營這類的短期嘗鮮課程,就抱著試試看的心態來體驗看看了,也因為我本身有一些些基礎了,這次就果斷幫自己加碼擔任志工,多多少少能幫助到剛開始就卡住的同學,希望能借著多次的經驗累積來增加我的經歷。
Thumbnail
我們根據過去工作坊中的經典課程整理出一系列的在家指引。希望能協助各地的學生在家練習自我覺察,進而開闊自己更多的可能性🌟
Thumbnail
延續上週提到的,「有哪些不訓練模型的情況下,能夠強化語言模型的能力」,這堂課接續介紹其中第 3、4 個方法