在這系列的第一部分中,我們介紹了在 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 物件:
使用 InferenceSpec 自定義模型
InferenceSpec 類別允許您通過提供自定義邏輯來加載和調用模型,並根據需要指定任何前處理邏輯或後處理邏輯來自定義模型。對於 SageMaker 端點,前處理和後處理腳本通常用作推斷管道的一部分,以處理在數據發送到模型進行預測之前和之後所需的任務,特別是在複雜工作流程或非標準模型的情況下。以下示例顯示了如何使用 InferenceSpec 指定自定義邏輯:
使用本地和進程模式進行測試
將訓練好的模型部署到 SageMaker 端點涉及創建 SageMaker 模型並配置端點。這包括推斷腳本、任何所需的序列化或反序列化、模型工件在 Amazon Simple Storage Service (Amazon S3) 中的位置、容器映像 URI、正確的實例類型和數量等。機器學習 (ML) 實踐者需要在最終將端點部署到 SageMaker 進行推斷之前,反覆調整這些設置。ModelBuilder 提供了兩種快速原型設計的模式:
進程模式 – 在這種情況下,推斷直接在同一推斷過程中進行。這在快速測試通過 InferenceSpec 提供的推斷邏輯時非常有用,並在實驗過程中提供即時反饋。
本地模式 – 模型作為本地容器部署和運行。這是通過在構建模型時將模式設置為 LOCAL_CONTAINER 來實現的。這有助於模擬與 SageMaker 端點相同的環境。請參考以下筆記本以獲取示例。
以下代碼是使用進程模式進行推斷的示例,並使用自定義 InferenceSpec:
作為下一步,您可以按照以下代碼在本地容器模式下進行測試,通過添加 image_uri。當您包含 image_uri 時,您需要包括 model_server 參數。
部署模型
當測試完成後,您現在可以將模型部署到實時端點以進行預測,方法是將模式更新為 mode.SAGEMAKER_ENDPOINT 並提供實例類型和大小:
除了實時推斷外,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))
使用 InferenceComponent 部署多模型端點:
清理
如果您在遵循這篇文章時創建了任何端點,則在其運行時會產生費用。作為最佳實踐,如果不再需要,請刪除任何端點,可以使用 AWS 管理控制台,或使用以下代碼:
結論
在這兩部分的系列中,我們介紹了 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 資訊!