本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 SageMaker Python SDK 自訂
SageMaker Python SDK v3 引入了現代化的模組化 API,用於在 SageMaker 上訓練、微調、部署和管理模型。開發套件支援多種訓練方法,包括持續訓練前 (CPT)、監督式微調 (SFT)、直接偏好最佳化 (DPO)、強化微調 (RFT) 和多迴轉強化學習 (MTRL)。您可以在 SageMaker 訓練任務和 SageMaker HyperPod 上執行訓練任務。
快速連結
請依照下列步驟從安裝移至您的第一個訓練任務:
-
適用於 SageMaker Python SDK 的 Read the Docs 網站上的 SDK 參考
-
GitHub 上的快速入門筆記本
– 用於實作探索的互動式 Python 筆記本
優勢
-
模組化 SDK,適用於從訓練到部署和監控的整個模型自訂生命週期。
-
多平台支援 SageMaker 訓練任務和 SageMaker HyperPod,具有自動資源管理和基礎設施組態。
-
不再為您的訓練技術尋找正確的配方或容器 URI。
-
使用您自己的訓練配方,或使用預設值搭配參數覆寫。
-
開發套件會根據支援的模型和執行個體組合來驗證您的組態,避免在訓練開始之前發生錯誤。
-
支援多種訓練方法,包括持續預先訓練 (CPT)、監督式微調 (SFT)、直接偏好最佳化 (DPO)、強化微調 (RFT) 和多迴轉強化學習 (MTRL),同時採用 LoRA 和全階方法。
-
整合式 Amazon CloudWatch 監控可讓您即時追蹤訓練進度。
-
整合 MLflow 以使用 SageMaker AI MLflow 追蹤伺服器追蹤訓練實驗。
要求
支援的 Python 版本
SageMaker Python SDK 支援 Python 3.10 和更新版本。
安裝
若要安裝 SageMaker Python SDK,請執行下列命令:
pip install "sagemaker>=3.19.0"
支援的模型和技術
開發套件支援 Amazon Nova 系列中的下列模型和技術:
| Method | 支援模型 |
|---|---|
| 持續預先訓練 | 所有 Nova 模型 (僅限 SMHP) |
| 監督微調 LoRA | 所有 Nova 模型 |
| 受監督的微調全執行緒 | 所有 Nova 模型 |
| 直接偏好設定最佳化 LoRA | Nova 1.0 模型 |
| 直接偏好設定最佳化完整排名 | Nova 1.0 模型 |
| 強化微調 LoRA | Nova Lite 2.0 |
| 強化微調完整範圍 | Nova Lite 2.0 |
| 多迴轉強化微調 LoRA | Nova Lite 2.0 |
| 多迴轉強化微調全執行 | Nova Lite 2.0 |
多迴轉強化學習輸出
受限制模型套件 (RMP) 是一種 SageMaker AI 模型套件,可在平台受管託管儲存體中包裝專屬模型成品。RMPs 可讓您透過 IAM 政策授權和控制這些模型的使用,而無需授予對基礎成品的直接存取權。模型資料無法直接下載、匯出或檢視。它只能在授權 AWS 的服務內使用。RMPs存在於標記為 的模型套件群組中StorageType: "Restricted"。
當您在 SageMaker Training Jobs Serverless 上使用多迴轉強化學習 (MTRL) 訓練模型時,輸出會在模型套件群組中以 RMP ARN 的形式交付,而不是以 S3 路徑交付。這與其他訓練方法 (例如 SFT、DPO 或 RFT) 不同,其中輸出是模型檢查點的 S3 路徑。
若要使用 MTRL,請使用 MultiTurnRLTrainer類別。在 SageMaker Training Jobs Serverless 上訓練時,您可以選擇指定 output_model_package_group來控制輸出 RMP 的註冊位置。如果省略,軟體開發套件會自動為您建立模型套件群組。如需詳細資訊和程式碼範例,請參閱受限制模型套件。
開始使用
1. 設定您的基礎設施
開發套件支援三個運算平台。將適當的組態傳遞給培訓人員的 compute 參數。
SageMaker HyperPod
from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=4, )
SageMaker 訓練任務 (Serverful)
from sagemaker.core.training.configs import TrainingJobCompute compute = TrainingJobCompute( instance_type="ml.p5.48xlarge", instance_count=2, )
SageMaker 訓練任務 (無伺服器)
完全受管且不需要運算組態。省略 compute 參數,且 SDK 預設使用無伺服器:
# No compute parameter needed as serverless is the default trainer = SFTTrainer( model="nova-textgeneration-lite-v2", training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", )
2. 訓練
開始使用 SFTTrainer類別進行監督式微調。提供您的模型、運算組態、訓練資料集和輸出路徑。
from sagemaker.train import SFTTrainer from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=4, ) trainer = SFTTrainer( model="nova-textgeneration-lite-v2", compute=compute, training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", ) job = trainer.train(wait=False)
軟體開發套件也CPTTrainer提供持續的預先訓練、DPOTrainer直接最佳化偏好、RLVRTrainer強化微調,以及MultiTurnRLTrainer多迴轉強化學習。每個 都遵循相同的模式:提供模型、運算組態、訓練資料集和輸出路徑。
3. 監控
直接從 SDK 追蹤您的訓練進度。使用 stream_logs() 即時串流 Amazon CloudWatch logs,或繪製訓練指標show_metrics(),例如任務完成後的損失和學習率。
# Stream CloudWatch logs in real-time (blocks until job completes) trainer.stream_logs(poll=5) # Or stream only the last N lines trainer.stream_logs(tail_lines=50) # Plot training metrics (training_loss, lr, reward_score) df = trainer.show_metrics()
4. 評估
使用 BenchMarkEvaluator類別,針對內建基準測試任務評估您的訓練模型。支援的基準包括 MMLU (基本多任務語言理解)、BBH (進階推理任務) 和 GPQA (研究生等級 Google 證明問答)。如需其他評估選項,請參閱評估者。
from sagemaker.train.evaluate import BenchMarkEvaluator, get_benchmarks # Get the trained model s3 path from the completed training job s3_path = job.model_artifacts.s3_model_artifacts Benchmark = get_benchmarks() evaluator = BenchMarkEvaluator( benchmark=Benchmark.MMLU, model=s3_path, s3_output_path="s3://my-bucket/eval-output/", ) execution = evaluator.evaluate()
5. 部署
訓練後,將自訂模型部署至生產環境。使用 SageMaker Python SDK,您可以部署到 SageMaker 即時推論端點和 Amazon Bedrock 隨需。選擇最適合您的延遲、輸送量和成本需求的部署選項。
SageMaker 即時推論
部署到 SageMaker 即時推論端點,以完全控制執行個體類型、擴展政策和端點組態。使用 ModelBuilder建立和部署 SageMaker 端點:
from sagemaker.serve import ModelBuilder # Get the trained model checkpoint path s3_path = job.model_artifacts.s3_model_artifacts # Deploy to SageMaker Real-time Inference endpoint builder = ModelBuilder( model=s3_path, instance_type="ml.p5.48xlarge", env_vars={ "CONTEXT_LENGTH": "8000", "MAX_CONCURRENCY": "2", }, ) builder.build().deploy() # Build the model and deploy to an endpoint
Bedrock 隨需
隨需推論提供pay-per-use定價,無需佈建容量。此選項適用於以 LoRA 為基礎的自訂。當您有可變或無法預測的流量模式時,請使用隨需:
from sagemaker.serve import BedrockModelBuilder # Deploy with Bedrock On-Demand builder = BedrockModelBuilder( model=s3_path, throughput_type="on-demand", ) deployment = builder.deploy()
關鍵功能
配方覆寫優先順序
SageMaker Python SDK 使用分層組態系統來訓練配方。當您啟動訓練任務時,參數會依下列優先順序 (從最高到最低) 解析:
-
參數覆寫 – 直接透過訓練師建構函數中的
overrides字典傳遞的值。這些會採用最高優先順序,並覆寫配方 YAML 或 Hub 預設值中的任何衝突值。 -
配方 YAML – 您提供的配方 YAML 檔案 (S3 路徑或本機檔案)。這定義了完整的訓練組態,但字典可以選擇性地覆寫
overrides。 -
中樞預設值 – 預設配方會根據您的模型和訓練方法,自動從 SageMaker Model Hub 解析。這些可在未指定自訂配方或覆寫時提供合理的啟動組態。
例如,若要在所有其他參數使用 Hub 預設值時覆寫訓練步驟上限和學習率:
from sagemaker.train import SFTTrainer from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=2, ) trainer = SFTTrainer( model="nova-textgeneration-lite-v2", training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", base_job_name="my-sft-training-job", overrides={ "training_config.trainer.max_epochs": 1, "training_config.model.optim.lr": 1e-5, }, ) job = trainer.train(wait=False)
在此範例中,透過覆寫明確設定 optim.lr max_epochs和 。所有其他訓練參數 (批次大小、暖機步驟、模型平行等) 都屬於nova-textgeneration-lite-v2模型的 Hub 預設配方。
企業基礎設施支援
開發套件支援多個運算平台,可自動管理基礎設施組態、驗證和任務協同運作:
-
SageMaker 訓練任務 – 具有自動執行個體佈建和縮減功能的完整受管訓練。支援隨需和無伺服器模式。
-
SageMaker HyperPod – 持久性叢集,適用於內建容錯能力和自動節點復原的大型分散式訓練。
在所有平台上,SDK 會在提交任務之前驗證執行個體類型、配方組態和資料集格式,以防止工作流程早期發生錯誤。
全面評估
根據標準基準評估您的自訂模型。開發套件提供下列評估工具:
-
BenchMarkEvaluator– 執行標準化效能基準,例如 MMLU、BBH 和 GPQA -
LLMAsJudgeEvaluator– 使用大型語言模型來評估模型輸出 -
InspectAIEvaluator– 執行 InspectAI 或自訂基準測試任務 -
CustomScorerEvaluator– 套用自訂定義的評估器函數 -
MultiTurnRLEvaluator– 使用推展型指標評估多迴轉代理程式模型
生產部署
使用 SageMaker Python SDK,您可以使用多個部署選項來部署自訂模型:
-
SageMaker 即時推論 – 完全控制執行個體類型、擴展政策和端點組態,以滿足自訂託管需求。
-
Bedrock 隨需 – Pay-per-use定價。適用於以 LoRA 為基礎的自訂。
使用 ModelBuilder或 BedrockModelBuilder類別來部署訓練過的模型。
資料混合
注意
資料混合僅適用於 Nova Forge 訂閱者。
SageMaker Python SDK 提供 DataMixingConfig類別來設定資料混合。
與您的培訓人員DataMixingConfig搭配使用,以指定客戶資料的百分比,以及跨 Nova 資料類別的分佈:
from sagemaker.train import SFTTrainer from sagemaker.train.data_mixing_config import DataMixingConfig from sagemaker.core.training.configs import HyperPodCompute data_mixing = DataMixingConfig( customer_data_percent=70.0, nova_data_percentages={ "code": 40.0, "reasoning": 30.0, "instruction-following": 30.0, }, ) trainer = SFTTrainer( model="nova-textgeneration-lite-v2", compute=HyperPodCompute( cluster_name="my-cluster", instance_type="ml.p5.48xlarge", node_count=4, ), training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", data_mixing_config=data_mixing, ) job = trainer.train(wait=False)
進一步了解
準備好開始使用 SageMaker Python SDK 自訂 Nova 模型了嗎? 如需詳細指南、API 參考和其他範例,請參閱 GitHub 上的 sagemaker-python-sdk