SageMaker-建構Pipelines真的有必要嗎?

更新於 發佈於 閱讀時間約 9 分鐘

一.引言

  除了上篇提到的 Data Wrangler 外,SageMaker 還有許多配套的功能,其中有個叫做 Pipelines 的東西,說是可以用來構建、 管理及自動化深度學習流程,能夠節省人工操作,有那麼神?這次就來試試 Pipelines 能夠為我們帶來什麼體驗。

二.Pipelines 介紹

  SageMaker Pipelines 提供了一個框架,讓你定義和自動化機器學習工作流程中的所有步驟(Step),包括資料預處理、特徵工程、模型訓練、模型評估和模型部署。 每個步驟可以由不同的SageMaker元件組成。

Step 為 Pipeline 中的基本單位,每個 Step 表示一個特定的任務或操作 :

  • ProcessingStep:用於資料處理和特徵工程
  • TrainingStep:用於模型訓練
  • TransformStep:用於批量推理
  • TuningStep:用於超參數調優
  • ConditionStep:用於條件判斷
  • CallbackStep:用於呼叫外部系統或服務
  • LambdaStep:用於執行自訂邏輯

接下來便簡易搭建一個 Pipeline 流程 :

1.準備環境

import sagemaker
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import ProcessingStep, TrainingStep
from sagemaker.processing import ScriptProcessor
from sagemaker.estimator import Estimator
from sagemaker.workflow.parameters import ParameterString
from sagemaker.workflow.pipeline_context import PipelineSession

# SageMaker 會話和腳色
sagemaker_session = sagemaker.Session()
role = 'your-iam-role'
bucket = 'your-s3-bucket'
prefix = 'your-data-prefix'
# Pipeline 會話
pipeline_session = PipelineSession()

2.定義參數

# 定義數據​前處理用執行個體
processing_instance_type = ParameterString(name="ProcessingInstanceType",
default_value="ml.m5.xlarge")
# 定義訓練用執行個體​
training_instance_type = ParameterString(name="TrainingInstanceType",
default_value="ml.p3.2xlarge")

3.定義數據前處理step

# 定義數據處理流程
processor = ScriptProcessor(
role=role,
image_uri='your-processing-container',
command=['python3'],
instance_count=1,
instance_type=processing_instance_type,
sagemaker_session=sagemaker_session
)
# 定義 Step​
step_process = ProcessingStep(
name='DataProcessing',
processor=processor,
inputs=[sagemaker.processing.ProcessingInput(
source=f's3://{bucket}/{prefix}/raw-data',
destination='/opt/ml/processing/input'
)],
outputs=[sagemaker.processing.ProcessingOutput(
source='/opt/ml/processing/output',
destination=f's3://{bucket}/{prefix}/processed-data'
)],
code='processing_script.py'
)

4.定義訓練Step

# 定義訓練流程
estimator = PyTorch(
entry_point='train.py',
role=role,
instance_count=1,
instance_type=training_instance_type,
framework_version='1.8.0',
py_version='py37',
script_mode=True,
output_path='s3://your-bucket/your-prefix/model',
sagemaker_session=sagemaker_session
)
# 定義訓練Step​
step_train = TrainingStep(
name='ModelTraining',
estimator=estimator,
inputs={'train': 's3://your-bucket/your-prefix/processed-data'}
)

5.定義模型部屬Step

model = Model(
image_uri='your-inference-container',
model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
role=role
)

step_model = ModelStep(
name='ModelDeployment',
model=model,
instance_count=1,
instance_type='ml.m5.large'
)

6.定義及創建Pipeline

# 定义Pipeline
pipeline = Pipeline(
name='MyPipeline',
parameters=[processing_instance_type, training_instance_type],
steps=[step_process, step_train, step_model]
)

# 创建和启动Pipeline
pipeline.upsert(role=role)
pipeline.start()

  以上程式碼定義了三個 Step,分別包含數據前處理、模型訓練、模型部屬,並交由Pipeline 去順序執行,從示例可以看到,我們可以針對不同 Step 指定不同的執行個體,這意味著我們可以根據不同 Step 的運算需求使用最適合的環境,並且因為分離成不同的 Step,在維護及管理上便可以視為單一獨立的區塊去處理,在工作細化及分工上都可以帶來幫助。

三.總結

  SageMaker Pipeline 將整個訓練流程細分成多個 Step ,雖然增加了分工及管理上的優點,但前提是有著良好的分工狀態,若是專案不夠龐大,需要的處理不夠複雜,還是將所有流程寫在同一份程式碼內會相對好處理很多。

所以統整下大概符合下列條件再建構 Pipeline 才會有比較好的體驗 :

  • 資料量大且處理複雜:每天產生大量數據,需要多階段處理和特徵工程
  • 超參數調優和模型選擇:需要並行訓練多個模型並自動選擇最佳模型
  • 持續整合和部署:頻繁更新資料和模型,需要自動化CI/CD流程
  • 跨團隊協作和大規模管理:多個團隊協作,定義和管理複雜的工作流程
avatar-img
8會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
貓貓學習筆記 的其他內容
  在上篇我們已經學習到怎麼在 SageMaker 上進行簡易訓練,可以說是踏入了第一步, SageMaker 提供了不少工具用來協助使用者能夠更快速的進行訓練,其中 Data Wrangler 便是用於訓練資料處理的工具,那麼,他好用嗎?必須用嗎?
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
  在上篇我們已經學習到怎麼在 SageMaker 上進行簡易訓練,可以說是踏入了第一步, SageMaker 提供了不少工具用來協助使用者能夠更快速的進行訓練,其中 Data Wrangler 便是用於訓練資料處理的工具,那麼,他好用嗎?必須用嗎?
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
  先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 下游任務是一個 Fine-Tuned 的 Transformer 任務,它從預先訓練的 Transformer 模型繼承模型和參數,故,下游任務是運行微調任務的預訓練模
學習是三個階段的循環: - 具體階段:情報收集,紀錄體驗 - 抽象階段:抽象化,模型化,發現模式 - 應用階段:實踐,檢證 西尾泰和這一套學習的三階段循環:具體,抽象,應用, 是一個很好的起始框架。 嘗試實踐它,然後持續修改, 你就能逐漸找到自己學習新事物的獨門心法。
Thumbnail
本文談及資料科學的領域與分工。首先是建造一個AI的研發流程,資料收集到 AI 模型訓練的過程,AI經歷這一切流程被創造出來並產生價值;再來本文也提及在這個領域中的各種腳色、資料工程師、數據庫工程師、資料科學家和資料分析師的各種介紹。並且強調跨領域合作的重要性。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 19中,闡述了Inference的Pipeline為t = f(n),現在我們做一些擴充與特點說明: t = f(n)其實展
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 18中,介紹了OpenAI的GPT模型如何利用Inference的Pipeline產生Token。 完整Pipeline可能
大語言模型能夠生成文本,因此被認為是生成式人工智慧的一種形式。 人工智慧的學科任務,是製作機器,使其能執行需要人類智慧才能執行的任務,例如理解語言,便是模式,做出決策。 除了大語言模型,人工智慧也包含了深度學習以及機器學習。 機器學習的學科任務,是透過演算法來實踐AI。 特別
Thumbnail
Echobase的AI段落生成器是一個尖端的工具,旨在革新您創建內容的方式。這個強大的、免費使用的生成器利用先進的人工智能來製作引人注目的、SEO優化的段落,簡化您的寫作過程,提高您作品的質量。
這個頻道將提供以下服務: 深入介紹各種Machine Learning技術 深入介紹各種Deep Learning技術 深入介紹各種Reinforcement Learning技術 深入介紹Probabilistic Graphical Model技術 不定時提供讀書筆記 讓我們一起在未
Thumbnail
pipe 代表函數式程式設計中的概念,利用多個功能結合在一起,資料依序通過每個功能進行處理。文章中介紹了 pipe 的優點、兩個等效的程式碼比較以及 remeda 套件的使用。詳細介紹了使用 pipe 的好處,並提供了多個相關的例子,展示了 pipe 可讀性的提升。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 下游任務是一個 Fine-Tuned 的 Transformer 任務,它從預先訓練的 Transformer 模型繼承模型和參數,故,下游任務是運行微調任務的預訓練模
學習是三個階段的循環: - 具體階段:情報收集,紀錄體驗 - 抽象階段:抽象化,模型化,發現模式 - 應用階段:實踐,檢證 西尾泰和這一套學習的三階段循環:具體,抽象,應用, 是一個很好的起始框架。 嘗試實踐它,然後持續修改, 你就能逐漸找到自己學習新事物的獨門心法。
Thumbnail
本文談及資料科學的領域與分工。首先是建造一個AI的研發流程,資料收集到 AI 模型訓練的過程,AI經歷這一切流程被創造出來並產生價值;再來本文也提及在這個領域中的各種腳色、資料工程師、數據庫工程師、資料科學家和資料分析師的各種介紹。並且強調跨領域合作的重要性。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 19中,闡述了Inference的Pipeline為t = f(n),現在我們做一些擴充與特點說明: t = f(n)其實展
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 18中,介紹了OpenAI的GPT模型如何利用Inference的Pipeline產生Token。 完整Pipeline可能
大語言模型能夠生成文本,因此被認為是生成式人工智慧的一種形式。 人工智慧的學科任務,是製作機器,使其能執行需要人類智慧才能執行的任務,例如理解語言,便是模式,做出決策。 除了大語言模型,人工智慧也包含了深度學習以及機器學習。 機器學習的學科任務,是透過演算法來實踐AI。 特別
Thumbnail
Echobase的AI段落生成器是一個尖端的工具,旨在革新您創建內容的方式。這個強大的、免費使用的生成器利用先進的人工智能來製作引人注目的、SEO優化的段落,簡化您的寫作過程,提高您作品的質量。
這個頻道將提供以下服務: 深入介紹各種Machine Learning技術 深入介紹各種Deep Learning技術 深入介紹各種Reinforcement Learning技術 深入介紹Probabilistic Graphical Model技術 不定時提供讀書筆記 讓我們一起在未
Thumbnail
pipe 代表函數式程式設計中的概念,利用多個功能結合在一起,資料依序通過每個功能進行處理。文章中介紹了 pipe 的優點、兩個等效的程式碼比較以及 remeda 套件的使用。詳細介紹了使用 pipe 的好處,並提供了多個相關的例子,展示了 pipe 可讀性的提升。