Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Personalizzazione con SageMaker Python SDK
L'SDK SageMaker Python v3 introduce un'API moderna e modulare per l'addestramento, la messa a punto, l'implementazione e la gestione dei modelli su. SageMaker L'SDK supporta diversi metodi di formazione, tra cui il pre-training continuo (CPT), il supervised fine-tuning (SFT), l'ottimizzazione diretta delle preferenze (DPO), la regolazione fine del rinforzo (RFT) e l'apprendimento per rinforzo a più turni (MTRL). Puoi SageMaker eseguire lavori di formazione SageMaker HyperPod su Training Jobs e.
Collegamenti rapidi
Segui questi passaggi per passare dall'installazione al tuo primo lavoro di formazione:
-
Riferimento SDK
sul sito Web Read the Docs per SageMaker Python SDK -
Quick Start Notebook on GitHub
: taccuino Python interattivo per un'esplorazione pratica
Vantaggi
-
Un SDK modulare per l'intero ciclo di vita della personalizzazione del modello, dalla formazione all'implementazione e al monitoraggio.
-
Multi-platform supporto per SageMaker Training Jobs e SageMaker HyperPod, con gestione automatica delle risorse e configurazione dell'infrastruttura.
-
Non dovrai più trovare le ricette o l'URI del contenitore giusti per le tue tecniche di formazione.
-
Porta le tue ricette di allenamento o usa le impostazioni predefinite con le sostituzioni dei parametri.
-
L'SDK convalida la configurazione rispetto alle combinazioni di modelli e istanze supportate, prevenendo gli errori prima dell'inizio del training.
-
Supporto per diversi metodi di formazione, tra cui il pre-training continuo (CPT), il supervised fine-tuning (SFT), l'ottimizzazione diretta delle preferenze (DPO), il reinforcement fine-tuning (RFT) e l'apprendimento per rinforzo a più turni (MTRL), con approcci LoRa e full-rank.
-
Il monitoraggio integrato di Amazon CloudWatch consente di monitorare i progressi della formazione in tempo reale.
-
MLFlow integrato per tenere traccia degli esperimenti di formazione con i server di tracciamento SageMaker AI MLFlow.
Requisiti
Versioni Python supportate
L'SDK SageMaker Python supporta Python 3.10 e versioni successive.
Installazione
Per installare SageMaker Python SDK, esegui il seguente comando:
pip install "sagemaker>=3.19.0"
Modelli e tecniche supportati
L'SDK supporta i seguenti modelli e tecniche all'interno della famiglia Amazon Nova:
| Metodo | Modelli supportati |
|---|---|
| Continua Pre-training | Tutti i modelli Nova (solo SMHP) |
| LoRa supervisionato Fine-tuning | Tutti i modelli Nova |
| Supervisionato Fine-tuning Full-Rank | Tutti i modelli Nova |
| Ottimizzazione diretta delle preferenze LoRa | Modelli Nova 1.0 |
| Ottimizzazione diretta delle preferenze Full-Rank | Modelli Nova 1.0 |
| Rinforzo Fine-tuning LoRa | Nova Lite 2.0 |
| Rinforzo Fine-tuning Full-Rank | Nova Lite 2.0 |
| Multi-turn Rinforzo Fine-tuning LoRa | Nova Lite 2.0 |
| Multi-turn Rinforzo Fine-tuning Full-Rank | Nova Lite 2.0 |
Multi-turn Risultato dell'apprendimento per rinforzo
Un Restricted Model Package (RMP) è un pacchetto di modelli SageMaker AI che racchiude gli artefatti del modello proprietario in un deposito a garanzia gestito dalla piattaforma. Gli RMP consentono di autorizzare e controllare l'utilizzo di questi modelli tramite policy IAM senza concedere l'accesso diretto agli artefatti sottostanti. I dati del modello non possono essere scaricati, esportati o visualizzati direttamente. Può essere utilizzato solo all'interno di AWS servizi autorizzati. Gli RMP esistono all'interno dei Model Package Groups contrassegnati con. StorageType: "Restricted"
Quando si addestra un modello utilizzando il multi-turn reinforcement learning (MTRL) su SageMaker Training Jobs Serverless, l'output viene fornito come ARN RMP all'interno di un Model Package Group, anziché come percorso S3. Questo è diverso da altri metodi di addestramento (come SFT, DPO o RFT) in cui l'output è un percorso S3 verso il checkpoint del modello.
Per usare MTRL, usa la classe. MultiTurnRLTrainer Durante l'addestramento su SageMaker Training Jobs Serverless, è possibile specificare facoltativamente un output_model_package_group per controllare dove è registrato l'output RMP. Se omesso, l'SDK crea automaticamente un Model Package Group per te. Per ulteriori informazioni ed esempi di codice, consulta Pacchetti di modelli con restrizioni.
Nozioni di base
Argomenti
1. Configura la tua infrastruttura
L'SDK supporta tre piattaforme di elaborazione. Passa la configurazione appropriata al compute parametro del tuo trainer.
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 Lavori di formazione (Serverful)
from sagemaker.core.training.configs import TrainingJobCompute compute = TrainingJobCompute( instance_type="ml.p5.48xlarge", instance_count=2, )
SageMaker Lavori di formazione (senza server)
Completamente gestito e non è richiesta alcuna configurazione di elaborazione. Ometti il compute parametro e l'SDK utilizza il serverless per impostazione predefinita:
# 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. Addestramento
Inizia la messa a punto supervisionata con la classe. SFTTrainer Fornisci il tuo modello, la configurazione di calcolo, il set di dati di addestramento e il percorso di output.
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)
L'SDK prevede anche la formazione preliminare continua, CPTTrainer l'ottimizzazione diretta delle preferenze, DPOTrainer la messa a punto del rinforzo e l'apprendimento RLVRTrainer per rinforzo a più turni. MultiTurnRLTrainer Ciascuno segue lo stesso schema: fornisce un modello, una configurazione di calcolo, un set di dati di addestramento e un percorso di output.
3. Monitoraggio
Tieni traccia dei tuoi progressi di formazione direttamente dall'SDK. Usalo stream_logs() per trasmettere in streaming CloudWatch i log di Amazon in tempo reale o show_metrics() per tracciare metriche di formazione come il tasso di perdita e di apprendimento dopo il completamento del lavoro.
# 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. Valuta
Valuta il tuo modello addestrato rispetto alle attività di benchmark integrate utilizzando la BenchMarkEvaluator classe. I benchmark supportati includono MMLU (Massive Multitask Language Understanding), BBH (Advanced Reasoning Tasks) e GPQA (Q&A). Graduate-Level Google-Proof Per altre opzioni di valutazione, vedi Valutatori.
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. Implementazione
Dopo l'addestramento, implementa il modello personalizzato in produzione. Con l'SDK SageMaker Python, puoi eseguire la distribuzione su endpoint SageMaker Real-time Inference e Amazon Bedrock. On-Demand Scegli l'opzione di distribuzione più adatta ai tuoi requisiti di latenza, throughput e costi.
SageMaker Real-time Inferenza
Esegui l'implementazione su un endpoint SageMaker Real-time Inference per il pieno controllo sui tipi di istanza, sulle policy di scalabilità e sulla configurazione degli endpoint. Usalo ModelBuilder per creare e distribuire un endpoint: 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 On-Demand
On-Demand l'inferenza fornisce prezzi pay-per-use senza capacità prevista. Questa opzione è applicabile alle personalizzazioni. LoRA-based Da utilizzare On-Demand in presenza di modelli di traffico variabili o imprevedibili:
from sagemaker.serve import BedrockModelBuilder # Deploy with Bedrock On-Demand builder = BedrockModelBuilder( model=s3_path, throughput_type="on-demand", ) deployment = builder.deploy()
Funzionalità chiave
La ricetta Ignora la precedenza
L'SDK SageMaker Python utilizza un sistema di configurazione a più livelli per le ricette di addestramento. Quando si avvia un processo di formazione, i parametri vengono risolti nel seguente ordine di precedenza (dal più alto al più basso):
-
Sostituzioni dei parametri: valori passati direttamente tramite il
overridesdizionario nel costruttore del trainer. Questi hanno la massima priorità e sovrascrivono qualsiasi valore in conflitto dai valori predefiniti YAML o Hub della ricetta. -
Recipe YAML: un file YAML di ricetta fornito (un percorso S3 o un file locale). Questo definisce la configurazione completa dell'allenamento ma può essere sovrascritto selettivamente dal dizionario.
overrides -
Impostazioni predefinite dell'hub: la ricetta predefinita viene risolta automaticamente dal Model Hub in base al SageMaker modello e al metodo di addestramento. Questi forniscono configurazioni iniziali ragionevoli quando non vengono specificate ricette o sostituzioni personalizzate.
Ad esempio, per sovrascrivere i passaggi e la frequenza di apprendimento massimi durante l'utilizzo delle impostazioni predefinite di Hub per tutti gli altri parametri:
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)
In questo esempio, max_epochs e optim.lr sono impostati esplicitamente tramite sostituzioni. Tutti gli altri parametri di addestramento (dimensione del batch, fasi di riscaldamento, parallelo al modello e così via) rientrano nella ricetta predefinita di Hub per il modello. nova-textgeneration-lite-v2
Supporto per l'infrastruttura aziendale
L'SDK supporta più piattaforme di elaborazione, gestendo automaticamente la configurazione, la convalida e l'orchestrazione dei lavori dell'infrastruttura:
-
SageMaker Lavori di formazione: formazione completamente gestita con provisioning e smontaggio automatici delle istanze. Supporta sia la modalità on-demand che quella serverless.
-
SageMaker HyperPod— Cluster persistenti per una formazione distribuita su larga scala con tolleranza agli errori integrata e ripristino automatico dei nodi.
Su tutte le piattaforme, l'SDK convalida i tipi di istanze, le configurazioni delle ricette e i formati dei set di dati prima di inviare i lavori, prevenendo gli errori nelle prime fasi del flusso di lavoro.
Valutazione completa
Valuta i tuoi modelli personalizzati rispetto ai benchmark Valutazione del modello SageMaker AI-trained standard. L'SDK fornisce i seguenti valutatori:
-
BenchMarkEvaluator— Esegui benchmark prestazionali standardizzati come MMLU, BBH e GPQA -
LLMAsJudgeEvaluator— Utilizza modelli linguistici di grandi dimensioni per valutare i risultati dei modelli -
InspectAIEvaluator— Esegui InspectAI o attività di benchmark personalizzate -
CustomScorerEvaluator— Applica funzioni di valutazione definite personalizzate -
MultiTurnRLEvaluator— Valuta i modelli di agenti a più turni con metriche basate sull'implementazione
Implementazione in produzione
Con SageMaker Python SDK, puoi distribuire i tuoi modelli personalizzati utilizzando diverse opzioni di distribuzione:
-
SageMaker Real-time Inferenza: controllo completo sui tipi di istanze, sulle politiche di scalabilità e sulla configurazione degli endpoint per requisiti di hosting personalizzati.
-
Bedrock On-Demand: Pay-per-use prezzi senza capacità prevista. Applicabile alle personalizzazioni. LoRA-based
Usa BedrockModelBuilder le ModelBuilder nostre classi per distribuire modelli addestrati.
Miscelazione dei dati
Nota
La miscelazione dei dati è disponibile esclusivamente per gli abbonati a Nova Forge.
L'SDK SageMaker Python fornisce la DataMixingConfig classe per configurare la miscelazione dei dati.
Usala DataMixingConfig con il tuo trainer per specificare la percentuale di dati dei clienti e la distribuzione tra le categorie di dati 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)
Ulteriori informazioni
Sei pronto per iniziare a personalizzare i modelli Nova con SageMaker Python SDK? Per guide dettagliate, riferimenti alle API ed esempi aggiuntivi, consulta sagemaker-python-sdk on.