AWS 推出 v3 SDK 簡化 SageMaker 模型開發
核心重點
2024 年 AWS 重新設計了 SageMaker Python SDK(v3),以 單一統一的 ModelTrainer 取代過去的框架專屬 Estimator(如 SKLearn、PyTorch、XGBoost),同時提供 ModelBuilder 進行模型部署。最關鍵的 SourceCode 物件讓本機程式碼目錄在執行時自動同步至訓練或推論容器,免除重新建置 Docker 映像的繁瑣流程。
背景與技術演進
在 2021 年的「Bring your own model with Amazon SageMaker script mode」部落格中,AWS 首次引入 script mode:使用受管框架容器撰寫自訂訓練與推論程式碼,使用者不必自行維護 Docker 映像。v3 SDK 在此基礎上 從零重新設計,將工作流程進一步精簡:
| 變更項目 | 舊版 SDK | v3 SDK |
|----------|----------|--------|
| 訓練類別 | SKLearnEstimator、PyTorchEstimator…等多個類別 | ModelTrainer(單一入口) |
| 部署類別 | 多種 FrameworkModel | ModelBuilder(統一介面) |
| 程式碼注入方式 | 必須自行建構映像或使用 script mode 指定入口腳本 | SourceCode 物件自動同步本機 source_dir,支援 command(訓練)或 entry_script(推論) |
使用者只需在 Amazon Elastic Container Registry (ECR) 中提供一個容器映像(自建、AWS Deep Learning Container 或第三方),SDK 會在作業啟動時把本機程式碼注入容器,實現 「代碼不烘焙於映像」 的彈性開發模式。
實作範例:隨機森林模型的全流程
-
建立最小化的 scikit‑learn 容器
-
Dockerfile 只安裝執行時與框架函式庫,未包含任何訓練程式碼。
-
建置後推送至 ECR,作為所有 scikit‑learn 模型的共用執行環境。
-
-
撰寫本機程式碼
-
source_dir內放置載入糖尿病資料集、訓練 隨機森林(Random Forest)分類器的 Python 檔案。 -
透過
SourceCode(source_dir=".", command="python train.py")讓 SDK 在提交訓練作業時自動同步此目錄。
-
-
使用 ModelTrainer 訓練
trainer = ModelTrainer( image_uri=ECR_IMAGE, role=IAM_ROLE, instance_type="ml.m5.large", source_code=SourceCode(source_dir=".", command="python train.py") ) trainer.fit() -
ModelBuilder 部署即時端點
builder = ModelBuilder( image_uri=ECR_IMAGE, role=IAM_ROLE, source_code=SourceCode(source_dir=".", entry_script="inference.py") ) endpoint = builder.deploy(initial_instance_count=1, instance_type="ml.m5.large")
整個流程只需 一次建置容器,之後每次修改訓練或推論程式碼皆不必重新打包映像,極大提升迭代速度。
未來展望與讀者啟示
v3 SDK 的 統一模型介面 與 即時程式碼同步,不僅降低了 DevOps 成本,也讓資料科學家能更專注於演算法本身。未來 AWS 可能會擴充 SourceCode 支援的語言與框架,甚至加入自動化測試與版本追蹤功能。對於希望在 雲端 AI 平台 快速驗證模型的企業而言,現在是把握 SageMaker v3 SDK 重新規劃開發流程的最佳時機。
