View a markdown version of this page

Refinamiento supervisado (SFT) de Nova 2.0 en los trabajos de entrenamiento de SageMaker - Amazon Nova

Refinamiento supervisado (SFT) de Nova 2.0 en los trabajos de entrenamiento de SageMaker

Requisitos previos

Antes de empezar un trabajo de entrenamiento, tenga en cuenta lo siguiente.

  • Buckets de Amazon S3 para almacenar sus datos de entrada y la salida de los trabajos de entrenamiento. Puede utilizar un bucket para ambos o buckets separados para cada tipo de datos. Asegúrese de que sus buckets estén en la misma región Región de AWS donde creó el resto de recursos para el entrenamiento. Para obtener más información, consulte Creación de un bucket de uso general.

  • Un rol de IAM con permisos para ejecutar un trabajo de entrenamiento. Asegúrese de asociar una política de IAM con AmazonSageMakerFullAccess. Para obtener más información, consulte How to use SageMaker AI execution roles.

  • Fórmulas básicas de Amazon Nova, consulte Obtención de fórmulas de Amazon Nova.

¿Qué es el SFT?

El refinamiento supervisado (SFT) entrena un modelo de lenguaje mediante pares de entrada y salida etiquetados. El modelo aprende a partir de ejemplos de demostración que consisten en peticiones y respuestas, y refina sus capacidades para alinearlas con tareas, instrucciones o comportamientos deseados específicos.

Para determinar si SFT es adecuada para su caso de uso, consulte Refinamiento supervisado (SFT).

Inicio de un trabajo de entrenamiento

Preparación de los datos de entrada

Para obtener información sobre el formato de datos, las características compatibles, las restricciones y las prácticas recomendadas para preparar los datos de entrenamiento de SFT, consulte Preparación de datos para el SFT en Amazon Nova 2.

Cargar los datos

Los conjuntos de datos deben cargarse en un bucket al que puedan acceder los trabajos de entrenamiento de SageMaker. Para obtener información sobre cómo establecer los permisos adecuados, consulte Requisitos previos.

Selección de hiperparámetros y actualización de la fórmula

La configuración de Nova 2.0 es prácticamente la misma que la de Nova 1.0. Una vez que los datos de entrada se hayan cargado en S3, utilice la fórmula de fórmulas de SageMaker HyperPod en GitHub en la carpeta Refinamiento. En el caso de Nova 2.0 Lite, a continuación se muestran algunos de los hiperparámetros clave que puede actualizar en función del caso de uso. A continuación se muestra un ejemplo de fórmula de PEFT del SFT de Nova 2.0 Lite. Para el URI de la imagen de contenedor, utilice 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-V2-latest para ejecutar un trabajo de refinamiento SFT.

Ejemplo de entrada

run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0

La fórmula también contiene prácticamente los mismos hiperparámetros que Nova 1.0. Los hiperparámetros más destacados son:

  • max_steps: número de pasos para los que quiere ejecutar el trabajo. Por lo general, para una época (una ejecución de todo el conjunto de datos), el número de pasos es igual al número de muestras de datos dividido entre el tamaño del lote global. Cuanto mayor sea el número de pasos y menor sea el tamaño del lote global, más tardará en ejecutarse el trabajo.

  • reasoning_enabled: controla el modo de razonamiento del conjunto de datos. Opciones:

    • true: habilita el modo de razonamiento (equivalente a un razonamiento alto).

    • false: deshabilita el modo de razonamiento.

    Nota: En el caso del SFT, no existe ningún control detallado sobre los niveles de esfuerzo de razonamiento. Al configurar reasoning_enabled: true, se habilita una capacidad de razonamiento completa.

  • peft.peft_scheme: al configurarlo como “lora”, se permite un refinamiento basado en PEFT. Al configurarlo en nulo (sin comillas), se habilita el refinamiento de rango completo.

Inicio del trabajo de entrenamiento

from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
nota

No se admite la transferencia de un conjunto de datos de validación para el refinamiento supervisado de Nova 2.0 Lite.

Para comenzar el trabajo:

  • Actualice la fórmula con las rutas e hiperparámetros del conjunto de datos.

  • Ejecute las celdas especificadas en el cuaderno para enviar el trabajo de entrenamiento.

El cuaderno gestiona el envío de trabajos y proporciona un seguimiento del estado.