View a markdown version of this page

Personalización con SageMaker Python SDK - Amazon Nova

Personalización con SageMaker Python SDK

SageMaker Python SDK v3 presenta una API moderna y modular para entrenar, refinar, implementar y gestionar modelos en SageMaker. El SDK admite varios métodos de entrenamiento, como el entrenamiento previo continuo (CPT), el refinamiento supervisado (SFT), la optimización de preferencias directas (DPO), el refinamiento por refuerzo (RFT) y el aprendizaje por refuerzo de varios turnos (MTRL). Puede ejecutar trabajos de entrenamiento en Trabajos de entrenamiento de SageMaker y en SageMaker HyperPod.

Siga estos pasos para pasar de la instalación al primer trabajo de entrenamiento:

Ventajas

  • SDK modular para todo el ciclo de vida de la personalización del modelo, desde el entrenamiento hasta la implementación y la supervisión.

  • Soporte multiplataforma para Trabajos de entrenamiento de SageMaker y SageMaker HyperPod, con administración automática de recursos y configuración de la infraestructura.

  • Ya no tendrá que buscar las fórmulas o el URI de contenedor correctos para sus técnicas de entrenamiento.

  • Cree sus propias fórmulas de entrenamiento o use los valores predeterminados con modificaciones de parámetros.

  • El SDK valida la configuración con las combinaciones de modelos e instancias compatibles para evitar errores antes de que comience el entrenamiento.

  • Compatibilidad con varios métodos de entrenamiento, como el entrenamiento previo continuo (CPT), el refinamiento supervisado (SFT), la optimización de preferencias directas (DPO), el refinamiento por refuerzo (RFT) y el aprendizaje por refuerzo de varios turnos (MTRL), con enfoques LoRA y de rango completo.

  • La supervisión integrada de Amazon CloudWatch le permite hacer un seguimiento del progreso del entrenamiento en tiempo real.

  • MLflow integrado para hacer un seguimiento de los experimentos de entrenamiento con los servidores de seguimiento MLflow de SageMaker AI.

Requisitos

Versiones de Python compatibles

SageMaker Python SDK es compatible con Python 3.10 y versiones posteriores.

Instalación

Ejecute el siguiente comando para instalar SageMaker Python SDK:

pip install "sagemaker>=3.19.0"

Modelos y técnicas compatibles

El SDK admite los siguientes modelos y técnicas de la familia Amazon Nova:

Método Modelos compatibles
Entrenamiento previo continuo Todos los modelos de Nova (solo SMHP)
Refinamiento supervisado (LoRA) Todos los modelos de Nova
Refinamiento supervisado (rango completo) Todos los modelos de Nova
Optimización de preferencias directas (LoRA) Modelos de Nova 1.0
Optimización de preferencias directas (rango completo) Modelos de Nova 1.0
Refinamiento por refuerzo (LoRA) Nova Lite 2.0
Refinamiento por refuerzo (rango completo) Nova Lite 2.0
Refinamiento por refuerzo de varios turnos (LoRA) Nova Lite 2.0
Refinamiento por refuerzo de varios turnos (rango completo) Nova Lite 2.0

Salida de aprendizaje por refuerzo multiturno

Un paquete de modelos restringido (RMP) es un paquete de modelos de SageMaker AI que encapsula artefactos de modelos propietarios en un almacenamiento de depósito en garantía gestionado por la plataforma. Los RMP permiten autorizar y controlar el uso de estos modelos mediante políticas de IAM sin conceder acceso directo a los artefactos subyacentes. Los datos del modelo no se pueden descargar, exportar ni ver directamente. Solo puede usarse en los servicios de AWS autorizados. Los RMP existen dentro de grupos de paquetes de modelos marcados con StorageType: "Restricted".

Al entrenar un modelo mediante el aprendizaje por refuerzo multiturno (MTRL) en trabajos de entrenamiento sin servidor de SageMaker, la salida se entrega como un ARN de RMP dentro de un grupo de paquetes de modelos, en lugar de como una ruta de S3. Esto difiere de otros métodos de entrenamiento (como SFT, DPO o RFT), en los que la salida es una ruta de S3 al punto de control del modelo.

Para utilizar el MTRL, utilice la clase MultiTurnRLTrainer. Al entrenar en Trabajo de entrenamiento de SageMaker sin servidor, puede especificar de forma opcional un output_model_package_group para controlar dónde se registra el RMP de salida. Si se omite, el SDK crea automáticamente un grupo de paquetes de modelos para usted. Para obtener más información y ejemplos de código, consulte Paquetes de modelos restringidos.

Introducción

1. Configuración de la infraestructura

El SDK admite tres plataformas informáticas. Transfiera la configuración adecuada al parámetro compute de su entrenador.

SageMaker HyperPod

from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=4, )

Trabajos de entrenamiento de SageMaker (con servidor)

from sagemaker.core.training.configs import TrainingJobCompute compute = TrainingJobCompute( instance_type="ml.p5.48xlarge", instance_count=2, )

Trabajos de entrenamiento de SageMaker (sin servidor)

Totalmente administrado y no se requiere ninguna configuración informática. Si omite el parámetro compute, el SDK utilizará la tecnología sin servidor de forma predeterminada:

# 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. Entrenamiento

Comience el refinamiento supervisado con la clase SFTTrainer. Proporcione su modelo, configuración de cómputo, conjunto de datos de entrenamiento y ruta de salida.

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)

El SDK también proporciona CPTTrainer para el entrenamiento previo continuo, DPOTrainer para la optimización de preferencias directas, RLVRTrainer para el refinamiento por refuerzo y MultiTurnRLTrainer para el aprendizaje por refuerzo de varios turnos. Cada uno sigue el mismo patrón: proporciona un modelo, una configuración informática, un conjunto de datos de entrenamiento y una ruta de salida.

3. Supervisión

Haga un seguimiento del progreso del entrenamiento directamente desde el SDK. Use stream_logs() para transmitir los registros de Amazon CloudWatch en tiempo real o show_metrics() para trazar métricas de entrenamiento, como la tasa de aprendizaje y de pérdida, una vez finalizado el trabajo.

# 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. Evaluación

Evalúe su modelo entrenado comparándolo con las tareas de referencia integradas mediante la clase BenchMarkEvaluator. Los puntos de referencia compatibles incluyen MMLU (comprensión masiva del lenguaje multitarea), BBH (tareas de razonamiento avanzado) y GPQA (preguntas y respuestas de posgrado diseñadas por Google). Para ver otras opciones de evaluación, consulte Evaluadores.

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. Implementación

Tras el entrenamiento, implemente su modelo personalizado en producción. Con SageMaker Python SDK, puede realizar la implementación en los puntos de conexión de inferencia en tiempo real de SageMaker y en Amazon Bedrock según la demanda. Elija la opción de implementación que mejor se adapte a sus requisitos de latencia, rendimiento y costos.

Inferencia en tiempo real con SageMaker

Implemente en un punto de conexión de inferencia en tiempo real de SageMaker para tener control total sobre los tipos de instancias, las políticas de escalado y la configuración del punto de conexión. Use ModelBuilder para crear e implementar un punto de conexión de 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 según la demanda

La inferencia bajo demanda proporciona precios de pago por uso sin capacidad aprovisionada. Esta opción se aplica a las personalizaciones basadas en LoRA. Utilice bajo demanda cuando tenga patrones de tráfico variables o impredecibles:

from sagemaker.serve import BedrockModelBuilder # Deploy with Bedrock On-Demand builder = BedrockModelBuilder( model=s3_path, throughput_type="on-demand", ) deployment = builder.deploy()

Capacidades clave

Prioridad de anulación de fórmulas

SageMaker Python SDK utiliza un sistema de configuración por capas para las fórmulas de entrenamiento. Al lanzar un trabajo de entrenamiento, los parámetros se resuelven en el siguiente orden de prioridad (de mayor a menor):

  1. Modificaciones de parámetros: valores que se transmiten directamente a través del diccionario overrides en el constructor del entrenador. Tienen la máxima prioridad y anulan cualquier valor conflictivo de los valores predeterminados de la YAML de fórmulas o del Hub.

  2. YAML de fórmulas: un archivo YAML de fórmulas que se proporcione (ya sea una ruta de S3 o un archivo local). Esto define la configuración de entrenamiento completa, pero el diccionario overrides puede anularla de forma selectiva.

  3. Valores predeterminados de Hub: la fórmula predeterminada se resuelve automáticamente desde el SageMaker Model Hub en función del modelo y del método de entrenamiento. Estos proporcionan configuraciones de partida razonables cuando no se especifica una fórmula personalizada ni ninguna modificación.

Por ejemplo, para anular los pasos de entrenamiento y la tasa de aprendizaje máximos mientras se utilizan los valores predeterminados de Hub para todos los demás parámetros:

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)

En este ejemplo, max_epochs y optim.lr se configuran de forma explícita mediante anulaciones. Todos los demás parámetros de entrenamiento (tamaño del lote, pasos de calentamiento, paralelismo de modelos, etc.) se incluyen en la fórmula predeterminada de Hub para el modelo nova-textgeneration-lite-v2.

Soporte para infraestructura empresarial

El SDK es compatible con varias plataformas informáticas y gestiona automáticamente la configuración, la validación y la orquestación de los trabajos de la infraestructura:

  • Trabajos de entrenamiento de SageMaker: entrenamiento totalmente administrado con aprovisionamiento y desmontaje automáticos de instancias. Admite los modos bajo demanda y sin servidor.

  • SageMaker HyperPod: clústeres persistentes para el entrenamiento distribuido a gran escala con tolerancia a errores integrada y recuperación automática de nodos.

En todas las plataformas, el SDK valida los tipos de instancias, las configuraciones de fórmulas y los formatos de los conjuntos de datos antes de enviar los trabajos, lo que evita errores al principio del flujo de trabajo.

Evaluación completa

Evalúe sus modelos personalizados con pruebas comparativas estándar. El SDK proporciona los siguientes evaluadores:

  • BenchMarkEvaluator: ejecute pruebas de rendimiento estandarizadas, como MMLU, BBH y GPQA

  • LLMAsJudgeEvaluator: utilice modelos de lenguaje de gran tamaño para evaluar los resultados de los modelos

  • InspectAIEvaluator: ejecute tareas de InspectAI o de referencia personalizadas

  • CustomScorerEvaluator: aplique funciones de evaluación personalizadas y definidas

  • MultiTurnRLEvaluator: evalúe modelos de agentes de varios turnos con métricas basadas en el despliegue

Implementación en entornos de producción

Con SageMaker Python SDK, puede implementar modelos personalizados mediante varias opciones de implementación:

  • Inferencia en tiempo real de SageMaker: control total sobre los tipos de instancias, las políticas de escalado y la configuración de puntos de conexión para requisitos de alojamiento personalizados.

  • Bedrock según demanda: precios de pago por uso sin capacidad aprovisionada. Se aplica a las personalizaciones basadas en LoRA.

Utilice las clases ModelBuilder o BedrockModelBuilder para implementar modelos entrenados.

Mezcla de datos

nota

La mezcla de datos está disponible exclusivamente para los suscriptores de Nova Forge.

SageMaker Python SDK proporciona la clase DataMixingConfig para configurar la mezcla de datos.

Use DataMixingConfig con su entrenador para especificar el porcentaje de datos de los clientes y la distribución entre las categorías de datos de 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)

Más información

¿Todo listo para empezar a personalizar los modelos de Nova con SageMaker Python SDK? Para obtener guías detalladas, referencias de la API y más ejemplos, consulte sagemaker-python-sdk en GitHub.