View a markdown version of this page

SFT en Nova 2.0 - Amazon Nova

SFT en Nova 2.0

Amazon Nova Lite 2.0 ofrece capacidades mejoradas para llevar a cabo el refinamiento supervisado, como el modo de razonamiento avanzado, una mejor comprensión multimodal y una gestión del contexto ampliado. El SFT en Nova 2.0 le permite adaptar estas potentes capacidades a sus casos de uso específicos y, al mismo tiempo, mantener el rendimiento superior del modelo en tareas complejas.

Las principales características del SFT en Nova 2.0 incluyen las siguientes:

  • Compatibilidad con el modo de razonamiento: entrene los modelos para generar rastros de razonamiento explícitas antes de las respuestas finales a fin de mejorar las capacidades analíticas.

  • Entrenamiento multimodal avanzado: refine la comprensión de documentos (PDF), la comprensión de videos y las tareas basadas en imágenes con mayor precisión.

  • Capacidades de llamada a herramientas: entrene a los modelos para que utilicen de forma eficaz herramientas externas y funciones en flujos de trabajo complejos.

  • Compatibilidad contextual ampliada: aproveche las ventanas contextuales más largas con mayor estabilidad y precisión para aplicaciones con un uso intensivo de documentos.

nota

Para obtener más información sobre qué contenedores, imágenes o ejemplos de fórmulas se deben utilizar, vaya a Fórmulas de Amazon Nova.

A continuación se muestra un ejemplo de fórmula para el SFT. Puedes encontrar esta fórmula y otras en el repositorio de fórmulas.

run: name: my-full-rank-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # only and not compatible with SageMaker Training Jobs replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs) mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-full-rank-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-full-rank-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: ${oc.select:training_config.max_steps} # How many training steps the checkpoint will be saved save_top_k: 5 # Keep top K best checkpoints. Note supported only for 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 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "null" # Disable LoRA for PEFT

Selección del modo de razonamiento (solo en Nova 2.0)

Amazon Nova 2.0 admite el modo de razonamiento para capacidades analíticas mejoradas:

  • Modo de razonamiento (activado):

    • Establezca reasoning_enabled: true en la configuración de entrenamiento.

    • El modelo se entrena para generar rastros de razonamiento antes de las respuestas finales.

    • Mejora el rendimiento en tareas de razonamiento complejas.

  • Modo sin razonamiento (desactivado):

    • Establezca reasoning_enabled: false u omita el parámetro (opción predeterminada)

    • SFT estándar sin razonamiento explícito

    • Adecuado para tareas que no se benefician del razonamiento paso a paso

nota
  • Cuando el razonamiento está activado, funciona con un esfuerzo de razonamiento alto. No existe ninguna opción de razonamiento bajo para el SFT.

  • El contenido de razonamiento multimodal no es compatible con el SFT. El modo de razonamiento se aplica a las entradas de solo texto.

Se permita entrenar a Amazon Nova con un conjunto de datos sin razonamiento con reasoning_enabled: true. Sin embargo, hacerlo puede provocar que el modelo pierda sus capacidades de razonamiento, ya que Amazon Nova aprende principalmente a generar las respuestas presentadas en los datos sin aplicar el razonamiento.

Si entrena a Amazon Nova en un conjunto de datos sin razonamiento, pero aun así desea usar el razonamiento durante la inferencia:

  1. Desactive el razonamiento durante el entrenamiento (reasoning_enabled: false).

  2. Active el razonamiento más adelante durante la inferencia.

Si bien este enfoque permite el razonamiento en el momento de la inferencia, no garantiza un rendimiento mejorado en comparación con la inferencia sin razonamiento.

Práctica recomendada: active el razonamiento tanto para el entrenamiento como para la inferencia cuando utilice conjuntos de datos de razonamiento y desactívelo para ambos cuando utilice conjuntos de datos sin razonamiento.

nota

Para obtener más información sobre qué contenedores, imágenes o ejemplos de fórmulas se deben utilizar, vaya a Fórmulas de Amazon Nova.

Formato de los datos de llamadas a herramientas

El SFT admite modelos de entrenamiento para usar herramientas (llamadas a funciones). A continuación se muestra un ejemplo de formato de entrada para la llamada a herramientas:

Ejemplo de entrada:

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

Consideraciones importantes sobre los datos de llamadas a herramientas:

  • ToolUse solo debe aparecer en los turnos del asistente.

  • ToolResult solo debe aparecer en los turnos del usuario.

  • ToolResult debe ser solo de texto o JSON, no se admiten actualmente otras modalidades para los modelos de Amazon Nova

  • inputSchema en toolSpec debe ser un objeto de esquema JSON válido

  • Cada ToolResult debe hacer referencia a un toolUseId válido de un ToolUse de asistente anterior, y cada toolUseId debe usarse exactamente una vez por conversación.

nota

Para obtener más información sobre qué contenedores, imágenes o ejemplos de fórmulas se deben utilizar, vaya a Fórmulas de Amazon Nova.

Formato de datos de la comprensión de documentos

El SFT admite modelos de entrenamiento en tareas de comprensión de documentos. A continuación se muestra un formato de entrada:

Ejemplo de entrada

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }

Consideraciones importantes para la comprensión de documentos:

  • Solo se admiten archivos PDF.

  • El tamaño máximo del documento es de 10 MB.

  • Una muestra puede contener documentos y texto, pero no puede mezclar documentos con otras modalidades (como imágenes o videos).

nota

Para obtener más información sobre qué contenedores, imágenes o ejemplos de fórmulas se deben utilizar, vaya a Fórmulas de Amazon Nova.

Comprensión de videos para el SFT

El SFT admite modelos de refinamiento para tareas de comprensión de videos. A continuación se muestra un formato de entrada:

Ejemplo de entrada

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }

Consideraciones importantes para la comprensión de videos:

  • El tamaño máximo del video es de 50 MB.

  • Los videos pueden durar hasta 15 minutos.

  • Solo se permite un video por muestra; no se admiten varios videos en la misma muestra.

  • Una muestra puede contener video y texto, pero no puede mezclar video con otras modalidades (como imágenes o documentos).

nota

Para obtener más información sobre qué contenedores, imágenes o ejemplos de fórmulas se deben utilizar, vaya a Fórmulas de Amazon Nova.

Instrucciones para la carga de datos

Cargue conjuntos de datos de entrenamiento y validación en un bucket de S3. Especifique estas ubicaciones en el bloque run de la fórmula:

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"

Nota: Sustituya <bucket-name>, <training-directory>, <validation-directory>, <training-file> y <validation-file> por las rutas de S3 reales.

Nota: Los conjuntos de datos de validación no son compatibles actualmente con el SFT con Amazon Nova 2.0. Si se proporciona un conjunto de datos de validación, se ignorará.

Creación de un trabajo de refinamiento

Defina el modelo base mediante los campos model_type y model_name_or_path del bloque run:

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

Parámetros de ajuste del SFT

Entre los parámetros de Amazon Nova disponibles para el ajuste con SFT, se incluyen los siguientes:

Configuración de una ejecución

  • name: nombre descriptivo para el trabajo de entrenamiento. Ayuda a identificar el trabajo en la Consola de administración de AWS.

  • model_type: variante del modelo de Amazon Nova que desea utilizar. Las opciones disponibles son amazon.nova-2-lite-v1:0:256k.

  • model_name_or_path: ruta al modelo base que desea utilizar para el entrenamiento. Las opciones disponibles son nova-lite-2/prod o la ruta de S3 para el punto de comprobación de entrenamiento posterior (s3://customer-escrow-bucket-unique_id/training_run_name).

  • replicas: número de instancias de computación que desea utilizar para entrenamiento distribuido. Los valores disponibles varían en función del modelo que elija. Amazon Nova Lite 2.0 admite 4, 8, 16 o 32 réplicas.

  • data_s3_path: ubicación de S3 del conjunto de datos de entrenamiento, que es un archivo JSONL. Este archivo debe residir en la misma región y cuenta de AWS que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región.

  • validation_data_s3_path (opcional): ubicación de S3 del conjunto de datos de validación, que es un archivo JSONL. Este archivo debe residir en la misma cuenta y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región.

  • output_s3_path: ubicación de S3 donde se almacenan el manifiesto y los registros de TensorBoard. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta de AWS y región de AWS.

  • mlflow_tracking_uri: ARN de la aplicación de MLFlow que se usará para los registros de MLFlow.

  • mlflow_experiment_name: nombre del experimento de MLFlow.

  • mlflow_run_name: nombre de la ejecución de MLFlow.

Configuración de entrenamiento

  • max_steps: número de pasos de entrenamiento que se ejecutarán. Cada paso entrenará al modelo con el número de elementos de global_batch_size.

  • save_steps: frecuencia (en pasos) con la que se guardan los puntos de control del modelo durante el entrenamiento.

  • save_top_k: número máximo de los mejores puntos de control que se deben retener en función de las métricas de validación.

  • max_length: longitud máxima de la secuencia en tokens. Determina el tamaño de la ventana de contexto para entrenamiento. El valor máximo admitido es de 32 768 tokens para el SFT.

    Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Es recomendable que el parámetro max_length coincida con la distribución de datos.

  • global_batch_size: número total de muestras de entrenamiento procesadas juntas en una sola pasada hacia delante o hacia atrás en todos los dispositivos y trabajadores.

    Este valor multiplica el tamaño del lote por dispositivo y el número de dispositivos. Afecta a la estabilidad del entrenamiento y al rendimiento. Le recomendamos que comience con un tamaño de lote que se ajuste fácilmente a la memoria y, a partir de ahí, se escale verticalmente. En el caso de datos específicos de un dominio, es posible que los lotes de mayor tamaño suavicen en exceso los gradientes.

  • reasoning_enabled: indicador booleano para habilitar las capacidades de razonamiento durante el entrenamiento.

Programación de la tasa de aprendizaje

  • warmup_steps: número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento.

  • min_lr: tasa mínima de aprendizaje al final de la degradación. Los valores válidos van de 0 a 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.

Configuración del optimizador

  • lr: tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. Los valores válidos van de 0 a 1, ambos inclusive.

  • weight_decay: fuerza de regularización de L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización.

  • adam_beta1: tasa de decremento exponencial para las estimaciones del primer momento en el optimizador Adam. El valor predeterminado es 0.9.

  • adam_beta2: tasa de reducción exponencial para las estimaciones del segundo momento en el optimizador Adam. El valor predeterminado es 0.95.

Configuración del PEFT

  • peft_scheme: el esquema de refinamiento preciso que se debe utilizar con eficiencia de parámetros. Las opciones son 'null' para un refinamiento de rango completo o lora para un refinamiento basado en LoRA.

Ajuste de LoRA (cuando peft_scheme es “lora”)

  • alpha: parámetro de escalado de LoRA. Controla la magnitud de la adaptación de rango bajo. Los valores típicos están comprendidos entre 8 y 128.

  • lora_plus_lr_ratio: porcentaje de tasa de aprendizaje para la optimización de LoRA+. Este multiplicador ajusta la tasa de aprendizaje específicamente para los parámetros de LoRA.

Guía de hiperparámetros

Utilice los siguientes hiperparámetros recomendados en función del enfoque de entrenamiento:

Entrenamiento de rango completo

  • Épocas: 1

  • Tasa de aprendizaje (lr): 1e-5

  • Tasa mínima de aprendizaje (min_lr): 1e-6

LoRA (adaptación de rango bajo)

  • Épocas: 2

  • Tasa de aprendizaje (lr): 5e-5

  • Tasa mínima de aprendizaje (min_lr): 1e-6

Nota: Ajuste estos valores en función del tamaño del conjunto de datos y del rendimiento de la validación. Supervise las métricas de entrenamiento para evitar el sobreajuste.