星期日, 15 6 月, 2025
No Result
View All Result
AI TAIWAN 台灣人工智慧中心
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全
AI TAIWAN 台灣人工智慧中心
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全
No Result
View All Result
AI TAIWAN 台灣人工智慧中心
No Result
View All Result
Your Ad
Home 機器學習與應用

加速您的機器學習生命周期,使用全新改進的 Amazon SageMaker Python SDK – 第 2 部分:ModelBuilder

2024-12-13
in 機器學習與應用
0 0
0
加速您的機器學習生命周期,使用全新改進的 Amazon SageMaker Python SDK – 第 2 部分:ModelBuilder
Share on FacebookShare on Twitter
Your Ad


在這系列的第一部分中,我們介紹了在 Amazon SageMaker Python SDK 上新推出的 ModelTrainer 類別及其好處,並展示了如何在自定義數據集上微調 Meta Llama 3.1 8B 模型。在這篇文章中,我們將探討 ModelBuilder 類別的增強功能,這使您能夠無縫地將模型從 ModelTrainer 部署到 SageMaker 端點,並為多種部署配置提供單一介面。

在 2023 年 11 月,我們推出了 ModelBuilder 類別(請參見《使用 Amazon SageMaker 中的新工具和指導工作流程更快地打包和部署模型》和《輕鬆打包和部署經典機器學習和大型語言模型(LLMs)與 Amazon SageMaker,第 1 部分:PySDK 改進》),這減少了創建 SageMaker 端點的初始設置的複雜性,例如創建端點配置、選擇容器、序列化和反序列化等,並幫助您在一步驟中創建可部署的模型。最近的更新增強了 ModelBuilder 類別的可用性,適用於各種用例,特別是在快速發展的生成式 AI 領域。在這篇文章中,我們將深入探討對 ModelBuilder 類別所做的增強,並展示如何無縫地將第一部分中微調的模型部署到 SageMaker 端點。

ModelBuilder 類別的改進

我們對 ModelBuilder 類別進行了以下可用性改進:

無縫過渡從訓練到推斷 – ModelBuilder 現在直接與 SageMaker 訓練介面集成,確保自動計算最新訓練模型工件的正確文件路徑,簡化了從模型訓練到部署的工作流程。
統一的推斷介面 – 之前,SageMaker SDK 為不同類型的推斷(如實時、批量、無伺服器和異步推斷)提供了單獨的介面和工作流程。為了簡化模型部署過程並提供一致的體驗,我們增強了 ModelBuilder,使其成為支持多種推斷類型的統一介面。
開發、測試和生產交接的便利性 – 我們正在為 ModelBuilder 添加本地模式測試的支持,這樣用戶可以輕鬆調試和測試其處理和推斷腳本,無需包含容器,並新增一個函數,輸出給定框架的最新容器映像,這樣您就不必在每次新 LMI 版本發布時更新代碼。
可自定義的推斷前處理和後處理 – ModelBuilder 現在允許您自定義推斷的前處理和後處理步驟。通過啟用腳本過濾內容和移除個人識別信息 (PII),這一集成簡化了部署過程,將必要的步驟封裝在模型配置中,以便更好地管理和部署具有特定推斷需求的模型。
基準測試支持 – ModelBuilder 中的新基準測試支持使您能夠根據延遲和成本等關鍵性能指標評估部署選項(如端點和容器)。隨著基準測試 API 的推出,您可以測試場景並做出明智的決策,優化您的模型以達到最佳性能,這提高了效率並提供了成本效益的部署。

在接下來的部分中,我們將更詳細地討論這些改進,並演示如何自定義、測試和部署您的模型。

從 ModelTrainer 類別無縫部署

ModelBuilder 與 ModelTrainer 類別無縫集成;您只需將用於訓練模型的 ModelTrainer 物件直接傳遞給 ModelBuilder 的模型參數。除了 ModelTrainer,ModelBuilder 還支持 Estimator 類別和 SageMaker Core TrainingJob.create() 函數的結果,並自動解析模型工件以創建 SageMaker 模型物件。通過資源鏈接,您可以構建和部署模型,如下例所示。如果您遵循了本系列的第一部分來微調 Meta Llama 3.1 8B 模型,您可以如下傳遞 model_trainer 物件:

# 設置容器 URI
image_uri = “763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.3.0-tgi2.2.0-gpu-py310-cu121-ubuntu22.04-v2.0”

model_builder = ModelBuilder(
model=model_trainer, # ModelTrainer 物件直接傳遞給 ModelBuilder
role_arn=role,
image_uri=image_uri,
inference_spec=inf_spec,
instance_type=”ml.g5.2xlarge”
)
# 部署模型
model_builder.build().deploy()

使用 InferenceSpec 自定義模型

InferenceSpec 類別允許您通過提供自定義邏輯來加載和調用模型,並根據需要指定任何前處理邏輯或後處理邏輯來自定義模型。對於 SageMaker 端點,前處理和後處理腳本通常用作推斷管道的一部分,以處理在數據發送到模型進行預測之前和之後所需的任務,特別是在複雜工作流程或非標準模型的情況下。以下示例顯示了如何使用 InferenceSpec 指定自定義邏輯:

from sagemaker.serve.spec.inference_spec import InferenceSpec

class CustomerInferenceSpec(InferenceSpec):
def load(self, model_dir):
from transformers import AutoModel
return AutoModel.from_pretrained(HF_TEI_MODEL, trust_remote_code=True)

def invoke(self, x, model):
return model.encode(x)

def preprocess(self, input_data):
return json.loads(input_data)[“inputs”]

def postprocess(self, predictions):
assert predictions is not None
return predictions

使用本地和進程模式進行測試

將訓練好的模型部署到 SageMaker 端點涉及創建 SageMaker 模型並配置端點。這包括推斷腳本、任何所需的序列化或反序列化、模型工件在 Amazon Simple Storage Service (Amazon S3) 中的位置、容器映像 URI、正確的實例類型和數量等。機器學習 (ML) 實踐者需要在最終將端點部署到 SageMaker 進行推斷之前,反覆調整這些設置。ModelBuilder 提供了兩種快速原型設計的模式:

進程模式 – 在這種情況下,推斷直接在同一推斷過程中進行。這在快速測試通過 InferenceSpec 提供的推斷邏輯時非常有用,並在實驗過程中提供即時反饋。
本地模式 – 模型作為本地容器部署和運行。這是通過在構建模型時將模式設置為 LOCAL_CONTAINER 來實現的。這有助於模擬與 SageMaker 端點相同的環境。請參考以下筆記本以獲取示例。

以下代碼是使用進程模式進行推斷的示例,並使用自定義 InferenceSpec:

from sagemaker.serve.spec.inference_spec import InferenceSpec
from transformers import pipeline
from sagemaker.serve import Mode
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve.builder.model_builder import ModelBuilder

value: str = “Girafatron 對長頸鹿情有獨鍾,這是這個地球上最輝煌的動物。Giraftron 認為與長頸鹿的輝煌威嚴相比,所有其他動物都是無關緊要的。\nDaniel: 你好,Girafatron!\nGirafatron:”
schema = SchemaBuilder(value,
{“generated_text”: “Girafatron 對長頸鹿情有獨鍾,這是這個地球上最輝煌的動物。Giraftron 認為與長頸鹿的輝煌威嚴相比,所有其他動物都是無關緊要的。\\nDaniel: 你好,Girafatron!\\nGirafatron: 嗨,Daniel。我剛在想長頸鹿是多麼壯觀,應該受到所有人的崇拜。\\nDaniel: 你和我想的一樣,Girafatron。我認為所有動物都應該受到崇拜!但我想這可能有點不切實際…\\nGirafatron: 這是真的。但長頸鹿真的是如此驚人的生物,應該永遠受到尊重!\\nDaniel: 是的!而且你對長頸鹿的熱愛,我可以看出你真的很喜歡它們。\\nGirafatron: 我對它們情有獨鍾,我很高興你注意到了!\\nDaniel: 我…”})

# 使用 Hugging Face pipeline 的自定義推斷規範
class MyInferenceSpec(InferenceSpec):
def load(self, model_dir: str):
…
def invoke(self, input, model):
…
def preprocess(self, input_data):
…
def postprocess(self, predictions):
…

inf_spec = MyInferenceSpec()

# 在進程模式下構建 ModelBuilder 物件
builder = ModelBuilder(inference_spec=inf_spec,
mode=Mode.IN_PROCESS,
schema_builder=schema
)

# 構建並部署模型
model = builder.build()
predictor = model.deploy()

# 進行預測
predictor.predict(“你今天怎麼樣?”)

作為下一步,您可以按照以下代碼在本地容器模式下進行測試,通過添加 image_uri。當您包含 image_uri 時,您需要包括 model_server 參數。

image_uri = ‘763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-inference:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04’

builder = ModelBuilder(inference_spec=inf_spec,
mode=Mode.LOCAL_CONTAINER, # 您可以將其更改為 Mode.SAGEMAKER_ENDPOINT 以進行端點部署
schema_builder=schema,
image_uri=image,
model_server=ModelServer.TORCHSERVE
)

model = builder.build()
predictor = model.deploy()

predictor.predict(“你今天怎麼樣?”)

部署模型

當測試完成後,您現在可以將模型部署到實時端點以進行預測,方法是將模式更新為 mode.SAGEMAKER_ENDPOINT 並提供實例類型和大小:

sm_predictor = model.deploy(
initial_instance_count=1,
instance_type=”ml.g5.2xlarge”,
mode=Mode.SAGEMAKER_ENDPOINT,
role=execution_role,
)

sm_predictor.predict(“天氣怎麼樣?”)

除了實時推斷外,SageMaker 還支持無伺服器推斷、異步推斷和批量推斷模式進行部署。您還可以使用 InferenceComponents 抽象您的模型,並為每個模型分配 CPU、GPU、加速器和擴展策略。要了解更多,請參見《使用 Amazon SageMaker 的最新功能平均減少 50% 的模型部署成本》。

在擁有 ModelBuilder 物件後,您只需在部署模型時添加相應的推斷配置即可部署到這些選項中的任何一個。默認情況下,如果未提供模式,則模型將部署到實時端點。以下是其他配置的示例:

from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig
predictor = model_builder.deploy(
endpoint_name=”serverless-endpoint”,
inference_config=ServerlessInferenceConfig(memory_size_in_mb=2048))

from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig
from sagemaker.s3_utils import s3_path_join

predictor = model_builder.deploy(
endpoint_name=”async-endpoint”,
inference_config=AsyncInferenceConfig(
output_path=s3_path_join(“s3://”, bucket, “async_inference/output”)))

from sagemaker.batch_inference.batch_transform_inference_config import BatchTransformInferenceConfig

transformer = model_builder.deploy(
endpoint_name=”batch-transform-job”,
inference_config=BatchTransformInferenceConfig(
instance_count=1,
instance_type=”ml.m5.large”,
output_path=s3_path_join(“s3://”, bucket, “batch_inference/output”),
test_data_s3_path = s3_test_path
))
print(transformer)

使用 InferenceComponent 部署多模型端點:

from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements

predictor = model_builder.deploy(
endpoint_name=”multi-model-endpoint”,
inference_config=ResourceRequirements(
requests={
“num_cpus”: 0.5,
“memory”: 512,
“copies”: 2,
},
limits={},
))

清理

如果您在遵循這篇文章時創建了任何端點,則在其運行時會產生費用。作為最佳實踐,如果不再需要,請刪除任何端點,可以使用 AWS 管理控制台,或使用以下代碼:

predictor.delete_model()
predictor.delete_endpoint()

結論

在這兩部分的系列中,我們介紹了 SageMaker Python SDK 中的 ModelTrainer 和 ModelBuilder 增強功能。這兩個類旨在減少數據科學家的複雜性和認知負擔,為您提供一個簡單直觀的介面來訓練和部署模型,無論是在 SageMaker 筆記本上還是到遠端的 SageMaker 端點。

我們鼓勵您通過參考 SDK 文檔和 GitHub 倉庫中的示例筆記本來嘗試 SageMaker SDK 的增強功能(SageMaker Core、ModelTrainer 和 ModelBuilder),並在評論中告訴我們您的反饋!

關於作者

Durga Sury 是 Amazon SageMaker 團隊的高級解決方案架構師。在過去的 5 年中,她與多家企業客戶合作,建立了一個基於 SageMaker 的安全、可擴展的 AI/ML 平台。

Shweta Singh 是 AWS Amazon SageMaker 機器學習 (ML) 平台團隊的高級產品經理,負責 SageMaker Python SDK。她在 Amazon 擔任多個產品角色已有超過 5 年。她擁有紐約大學的計算機工程學士學位和金融工程碩士學位。



新聞來源

本文由 AI 台灣 使用 AI 編撰,內容僅供參考,請自行進行事實查核。加入 AI TAIWAN Google News,隨時掌握最新 AI 資訊!

Tags: AmazonPythonSageMakerSDK加速您的機器學習生命周期使用全新改進的第部分ModelBuilder
Previous Post

AI幫助中小企業獲得成功

Next Post

認識Ivy-VL:一款僅有30億參數的輕量級多模態模型,適用於邊緣設備

Related Posts

劍橋大學和莫納什大學的研究人員推出 ReasonGraph:一個可視化和分析大型語言模型推理過程的網絡平台
機器學習與應用

劍橋大學和莫納什大學的研究人員推出 ReasonGraph:一個可視化和分析大型語言模型推理過程的網絡平台

2025-03-16
生成式人工智慧的影響及其對數據科學家的啟示
機器學習與應用

生成式人工智慧的影響及其對數據科學家的啟示

2025-03-15
這篇AI論文介紹了BD3-LMs:一種結合自回歸模型和擴散模型的混合方法,用於可擴展和高效的文本生成
機器學習與應用

這篇AI論文介紹了BD3-LMs:一種結合自回歸模型和擴散模型的混合方法,用於可擴展和高效的文本生成

2025-03-15
九個生鏽的Pico PIO瓦特(第二部分)
機器學習與應用

九個生鏽的Pico PIO瓦特(第二部分)

2025-03-15
開始使用 Amazon Bedrock Agents 的電腦操作
機器學習與應用

開始使用 Amazon Bedrock Agents 的電腦操作

2025-03-15
評估使用 Amazon Bedrock 知識庫的 RAG 應用程式
機器學習與應用

評估使用 Amazon Bedrock 知識庫的 RAG 應用程式

2025-03-14
Next Post
認識Ivy-VL:一款僅有30億參數的輕量級多模態模型,適用於邊緣設備

認識Ivy-VL:一款僅有30億參數的輕量級多模態模型,適用於邊緣設備

介紹 AWS Network Firewall CloudWatch 儀表板

介紹 AWS Network Firewall CloudWatch 儀表板

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Archives

  • 2025 年 6 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 11 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 1 月
  • 2021 年 11 月
  • 2021 年 8 月
  • 2021 年 5 月
  • 2021 年 3 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 10 月
  • 2020 年 9 月
  • 2019 年 7 月
  • 2018 年 11 月

Categories

  • AI 智慧產業
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • 安全
  • 機器人與自動化
  • 機器學習與應用
  • 神經連結和腦機接口
  • 自然語言處理
  • 道德與法規
Your Ad
  • 關於我們
  • 廣告合作
  • 免責聲明
  • 隱私權政策
  • DMCA
  • Cookie 隱私權政策
  • 條款與條件
  • 聯絡我們
AI TAIWAN

版權 © 2024 AI TAIWAN.
AI TAIWAN 對外部網站的內容不負任何責任。

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Home
  • AI 綜合新聞
  • AI 自動化與 AI Agents
  • AI 智慧產業
  • 機器學習與應用
  • 自然語言處理
  • 神經連結和腦機接口
  • 機器人與自動化
  • 道德與法規
  • 安全

版權 © 2024 AI TAIWAN.
AI TAIWAN 對外部網站的內容不負任何責任。