View a markdown version of this page

使用 SageMaker Python SDK 自訂 - Amazon Nova

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SageMaker Python SDK 自訂

SageMaker Python SDK v3 引入了現代化的模組化 API,用於在 SageMaker 上訓練、微調、部署和管理模型。開發套件支援多種訓練方法,包括持續訓練前 (CPT)、監督式微調 (SFT)、直接偏好最佳化 (DPO)、強化微調 (RFT) 和多迴轉強化學習 (MTRL)。您可以在 SageMaker 訓練任務和 SageMaker HyperPod 上執行訓練任務。

請依照下列步驟從安裝移至您的第一個訓練任務:

優勢

  • 模組化 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 使用分層組態系統來訓練配方。當您啟動訓練任務時,參數會依下列優先順序 (從最高到最低) 解析:

  1. 參數覆寫 – 直接透過訓練師建構函數中的overrides字典傳遞的值。這些會採用最高優先順序,並覆寫配方 YAML 或 Hub 預設值中的任何衝突值。

  2. 配方 YAML – 您提供的配方 YAML 檔案 (S3 路徑或本機檔案)。這定義了完整的訓練組態,但字典可以選擇性地覆寫overrides

  3. 中樞預設值 – 預設配方會根據您的模型和訓練方法,自動從 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 為基礎的自訂。

使用 ModelBuilderBedrockModelBuilder類別來部署訓練過的模型。

資料混合

注意

資料混合僅適用於 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