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 HyperPod708977205387.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.