Los agentes de IA pueden manejar de forma autónoma tareas complejas de varios pasos, pero su efectividad depende de llamar a las herramientas adecuadas para recuperar información o tomar medidas. Cuando un agente elige la herramienta equivocada, formatea los parámetros incorrectamente o rompe una cadena de flujo de trabajo, los tiempos de finalización de las tareas aumentan, las tasas de error aumentan, los costos de soporte aumentan y la experiencia del usuario se degrada. A medida que más organizaciones trasladan aplicaciones de agentes del piloto a la producción, contar con agentes que seleccionen la herramienta adecuada para cada solicitud es esencial para una automatización confiable.
En esta publicación, aprenderá a utilizar el ajuste fino supervisado (SFT) y la optimización directa de preferencias (DPO) juntos para mejorar la precisión de las llamadas a herramientas de un modelo de lenguaje pequeño (SLM). El ejemplo utiliza trabajos de capacitación de IA de Amazon SageMaker, por lo que puede concentrarse en el código de capacitación en lugar de administrar su propia infraestructura de capacitación. También aprenderá a evaluar la precisión de las llamadas a herramientas y a comparar un modelo base con varias variantes ajustadas, para que pueda tomar decisiones basadas en datos sobre la calidad del modelo.
Metodologías de ajuste
El ajuste supervisado implica seleccionar un conjunto de datos de alta calidad que se alinea estrechamente con la función prevista del modelo, proporcionando ejemplos explícitos de cómo el modelo debe realizar ciertas tareas o interactuar con herramientas específicas. Este método es particularmente eficaz para enseñar al modelo a reconocer los matices del lenguaje, los comandos y las restricciones específicos de la herramienta.
La optimización directa de preferencias refina estas interacciones incorporando comentarios humanos u objetivos predefinidos directamente en el ciclo de capacitación. DPO alinea más estrechamente el resultado del modelo con los resultados objetivo al enfatizar una preferencia por ciertos tipos de respuestas o comportamientos sobre otros. Los datos de entrenamiento en DPO contienen una preferencia "así, no así", que optimiza los mismos objetivos que el aprendizaje por refuerzo sin funciones de recompensa ni modelos de recompensa. Este enfoque reduce los requisitos de recursos y el tiempo de capacitación manteniendo la calidad.
Fuente: arXiv:2305.18290 [cs.LG]
Por ejemplo, la biblioteca HuggingFace TRL para DPO toma muestras de capacitación en el siguiente formato:
Este enfoque basado en retroalimentación permite la mejora iterativa de las capacidades de interacción de herramientas del modelo en función de patrones de uso del mundo real en los datos de entrenamiento.
Juntos, SFT y DPO forman un marco sólido para ajustar los modelos de lenguaje para interactuar con una amplia gama de herramientas digitales. Al utilizar estas técnicas, se pueden crear sistemas de IA que comprendan y generen texto similar al humano y que realicen tareas complejas interactuando de forma autónoma con aplicaciones externas, ampliando el alcance y la utilidad de la IA tanto en entornos de consumo como empresariales.
Para comprender los costos asociados con las computadoras portátiles de Amazon SageMaker Studio y los trabajos de capacitación de Amazon SageMaker AI, consulte la página de precios de SageMaker AI.
Descripción general de la solución
En esta sección, explicamos cómo ajustar Qwen3 1.7B en trabajos de capacitación de IA de Amazon SageMaker, un servicio totalmente administrado que admite configuraciones distribuidas de múltiples GPU y múltiples nodos. Con los trabajos de entrenamiento de IA de SageMaker, puede activar clústeres de alto rendimiento a pedido, entrenar modelos de mil millones de parámetros más rápido y cerrar recursos automáticamente cuando finaliza el trabajo. Las métricas de la infraestructura y del interior del circuito de capacitación se envían a MLflow en SageMaker AI para su posterior análisis.
Requisitos previos
Para ajustar los modelos de llamada de funciones en SageMaker AI, necesita los siguientes requisitos previos:
Configura tu entorno
En las siguientes secciones, ejecutamos el código desde una instancia de notebook de SageMaker Studio JupyterLab. También puede utilizar su IDE preferido, como VS Code o PyCharm. Asegúrese de que su entorno local esté configurado para funcionar con AWS, como se indica en los requisitos previos.
Complete los siguientes pasos para configurar su entorno:
En la consola de SageMaker AI, elija Dominios en el panel de navegación y luego abra su dominio. En el panel de navegación, en Aplicaciones e IDE, elija Studio. En la pestaña Perfiles de usuario, busque su perfil de usuario y luego elija Iniciar y Studio. En SageMaker Studio, inicie una instancia de notebook JupyterLab ml.t3.medium con al menos 50 GB de almacenamiento. No se requiere una instancia de notebook grande porque el trabajo de ajuste se ejecuta en una instancia de trabajo de entrenamiento efímera separada con aceleradores NVIDIA. Para comenzar a realizar ajustes, clone el repositorio de GitHub: git clone https://github.com/aws-samples/amazon-sagemaker-generativeai.git. Navegue hasta el directorio 6_use_cases/usecases/function-calling-sft-dpo. Inicie el cuaderno run_training_job.ipynb con un kernel Python 3.12 o superior.
Preparación del conjunto de datos
Elegir y crear el conjunto de datos correcto es un primer paso importante para ajustar los modelos básicos (FM). Este ejemplo utiliza el conjunto de datos When2Call publicado por NVIDIA, un punto de referencia diseñado para evaluar la toma de decisiones de llamadas de herramientas para FM. Incluye cuándo generar una llamada de herramienta, cuándo hacer preguntas de seguimiento, cuándo indicar que la pregunta no se puede responder con las herramientas proporcionadas y qué hacer si la pregunta parece requerir el uso de una herramienta pero no se puede realizar una llamada de herramienta.
El código de evaluación y los scripts de generación de datos sintéticos utilizados para generar los conjuntos de datos se encuentran en el repositorio GitHub de NVIDIA.
Los conjuntos de datos contienen tres partes diferentes.
Conjunto de datos para ajuste fino supervisado (SFT), que contiene 15.000 muestras.
Conjunto de datos para la alineación de preferencias, que utiliza la optimización directa de preferencias (DPO) en este ejemplo. Estos datos contienen 9.000 muestras.
El conjunto de datos para el rendimiento de las pruebas tiene dos archivos: evaluación de preguntas de opción múltiple (mcq) y LLM-as-a-judge (llm_judge), que es un subconjunto del conjunto de evaluación de MCQ y se puede descargar como un único DatasetDict.
Para este caso de uso, necesitamos realizar un poco de preprocesamiento en el conjunto de datos para que coincida con los formatos esperados para SFTTrainer y DPOTrainer de TRL. Para hacer eso, necesitamos crear un mensaje del sistema que contenga la lista de herramientas disponibles y agregar el mensaje del sistema a las listas de mensajes del conjunto de datos original.
Además de lo que hicimos para SFT, necesitamos preparar los datos para DPO. El DPOTrainer de TRL acepta un formato específico que incluye columnas etiquetadas como elegidas y rechazadas además de mensajes, por lo que necesitamos crear la columna de mensajes y cambiar el nombre de respuesta_elegida y respuesta_rechazada.
Ahora, guarde los conjuntos de datos SFT y DPO en Amazon Simple Storage Service (Amazon S3) para que estén disponibles para capacitación.
Ajuste supervisado (SFT) en el modelo base
El siguiente ejemplo demuestra cómo ajustar el modelo Qwen3-1.7B. El repositorio contiene la receta en el directorio de scripts, donde puede modificar el modelo base y los parámetros de entrenamiento para SFT. Este ejemplo utiliza una receta de ajuste fino basada en Spectrum, pero también puede utilizar otras técnicas PEFT como LoRA o QLoRA.
La receta contiene la configuración del modelo y los parámetros de entrenamiento:
Cree un trabajo de capacitación con SageMaker AI ModelTrainer
A continuación, utilizamos un trabajo de entrenamiento de IA de SageMaker para poner en marcha un grupo de entrenamiento y ejecutar el ajuste del modelo. Las API ModelTrainer del SDK Python de SageMaker AI ejecutan trabajos de capacitación en una infraestructura totalmente administrada, manejando la configuración del entorno, el escalado y la administración de artefactos. Al utilizar ModelTrainer, puede especificar scripts de entrenamiento, datos de entrada y recursos informáticos sin aprovisionar servidores manualmente.
Primero, configure el entorno de formación:
Para habilitar el seguimiento de experimentos en MLflow, proporcione el ARN del servidor de seguimiento de MLflow al trabajo.
La sección Compute de la configuración de capacitación determina los requisitos de infraestructura para la capacitación. En la sección Código fuente, definimos las rutas locales al código que se importará al trabajo de capacitación.
La siguiente es la estructura de directorios para realizar ajustes en los trabajos de capacitación de SageMaker AI. También proporcionamos el archivo requisitos.txt en el directorio de scripts, que ModelTrainer detecta e instala automáticamente las dependencias enumeradas en tiempo de ejecución. Para escenarios avanzados, como deshabilitar el aislamiento de compilación, puede proporcionar un script bash como punto de entrada para ejecutar comandos de shell antes de comenzar el entrenamiento.
A continuación, especifique la ubicación de Amazon Elastic Container Registry (Amazon ECR) para el contenedor de capacitación, dónde almacenar los puntos de control del modelo y cómo nombrar el trabajo de capacitación de SageMaker AI. Estos valores se proporcionan a la API ModelTrainer para configurar el trabajo.
Finalmente, configure los parámetros de datos de entrada donde residen los datos de entrenamiento e inicie el trabajo de entrenamiento SFT con .train().
Para realizar ajustes en múltiples GPU, utilizamos Hugging Face Accelerate y DeepSpeed ZeRO-3, que trabajan juntos para entrenar modelos en múltiples GPU o nodos de manera más eficiente. Hugging Face Accelerate agiliza los lanzamientos de capacitación distribuida al manejar automáticamente la ubicación del dispositivo, la gestión de procesos y configuraciones de precisión mixtas. DeepSpeed ZeRO-3 reduce el uso de memoria al dividir los estados, gradientes y parámetros del optimizador en las GPU, de modo que los modelos de mil millones de parámetros se ajusten y entrenen más rápido.
Puede ejecutar su script SFTTrainer con Hugging Face Accelerate usando un comando como el siguiente:
Con el artefacto del modelo SFT listo, ahora puede usarlo como modelo base para el entrenamiento de DPO. La receta de capacitación de DPO es similar a la de SFT con algunos pequeños cambios.
beta: este es un hiperparámetro específico de DPO, generalmente limitado entre 0 y 2, que controla la agresividad con la que el modelo adopta nuevas preferencias. Un valor más cercano a 0 es más agresivo y un valor más cercano a 2 es más conservador. Un punto de partida típico es de 0,1 a 0,5, lo que puede generar cambios significativos en el comportamiento. Sin embargo, esto puede provocar una gran variación o incluso una degradación. El valor óptimo depende en gran medida del conjunto de datos. learning_rate: DPO se beneficia de tasas de aprendizaje más bajas (por ejemplo, 5e-7) con un warmup_ratio para evitar el sobreajuste. Este valor contrasta con el SFT learning_rate de la ejecución anterior de 5e-5. Aunque este ejemplo utiliza una constante lr_scheduler_type, el recocido de coseno es otra opción común. lote_size: los lotes de gran tamaño tienden a funcionar mejor. El tamaño del lote en este ejemplo es intencionalmente pequeño para reducir los requisitos de recursos.
Opcionalmente, puede proporcionar una combinación de valores de pérdida para realizar una optimización de preferencias mixtas, que permite la combinación y ponderación de múltiples tipos de pérdidas. En este ejemplo, hay datos de entrenamiento de SFT y datos de entrenamiento de DPO que se ejecutan por separado. Si solo tiene datos de entrenamiento de DPO, puede usar MPO con el tipo de pérdida sft para usar la columna aceptada en los datos de DPO para SFT. Si es posible, proporcionar conjuntos de datos únicos y separados da como resultado un corpus de datos más grande y mejores resultados.
Si se omite loss_weights, todos los tipos de pérdida tendrán pesos iguales (1.0 por defecto).
Capacitación en optimización de preferencias directas (DPO) en el modelo entrenado con SFT
En el ejemplo de DPO, mostramos cómo se pueden pasar datos de configuración al contenedor de entrenamiento como hiperparámetros o como variables de entorno. El primero se recoge en el script de entrenamiento con TRLParser y el segundo con referencias de Python os.environ.
La configuración de formación del DPO se define de la siguiente manera:
Luego inicie el trabajo de capacitación para DPO:
Resultados
Realizamos el experimento para tres modelos diferentes, utilizando el script proporcionado por NVIDIA para la evaluación, con los siguientes resultados. Entre los modelos base, Qwen3-0.6B tuvo el mejor desempeño desde el primer momento a pesar de ser el más pequeño, superando al Qwen3-1.7B en aproximadamente un 6 por ciento y al Llama-3.2-3B-instruct en aproximadamente un 1 por ciento.
Después de un ciclo de ajustes, las clasificaciones cambian. El modelo Qwen3-1.7B gana aproximadamente un 19 por ciento en precisión y supera a los demás entre un 4 y un 7 por ciento aproximadamente. La ronda de optimización de preferencias también fue efectiva, agregando otra precisión de aproximadamente 10,5 por ciento y finalizando el experimento con una ventaja de aproximadamente 8 a 9 por ciento sobre los otros modelos.
Esto muestra la eficacia de un enfoque de varios pasos para la personalización del modelo. Qwen3-1.7B ganó un 30 por ciento en precisión general y funcionó un 9 por ciento mejor que el modelo Llama-3.2-3B, que tiene casi el doble de parámetros. Lograr un rendimiento similar o mejor con un modelo más pequeño puede reducir el costo y mejorar el rendimiento cuando llega el momento de alojar el modelo.
Modelo Técnica de sintonización Acc-Norm Llama 3.2 3B Instruct Base 46.50% Llama 3.2 3B Instruct Spectrum SFT 53.41% Llama 3.2 3B Instruct Spectrum SFT + DPO 62.67% Qwen3-0.6B Base 47.64% Qwen3-0.6B Spectrum SFT 56.10% Qwen3-0.6B Spectrum SFT + DPO 62,02% Qwen3-1.7B Base 41,57% Qwen3-1.7B Espectro SFT 60,43% Qwen3-1.7B Espectro SFT + DPO 71,06%
Limpiar
Para evitar incurrir en cargos por recursos que ya no necesita, complete los siguientes pasos de limpieza:
Elimine cualquier trabajo de capacitación de SageMaker AI que haya iniciado. Los trabajos de capacitación que se completan exitosamente no continúan generando cargos, pero puede limpiar registros desde la consola de SageMaker AI o con la CLI de AWS. Elimine los conjuntos de datos que cargó en Amazon S3:
Detenga o elimine la instancia del cuaderno SageMaker Studio JupyterLab para evitar cargos inactivos. Elimine cualquier punto de control de modelo almacenado en Amazon S3 que ya no necesite.
Conclusión
En esta publicación, mostramos cómo mejorar la precisión de las llamadas de herramientas de un agente combinando el ajuste fino supervisado (SFT) con la optimización de preferencias directas (DPO) en Amazon SageMaker AI. SFT utiliza conjuntos de datos etiquetados para refinar los parámetros del modelo, de modo que el modelo desarrolle una comprensión fundamental al aprender de ejemplos anotados por expertos. Luego, DPO alinea los resultados del modelo con las preferencias humanas o criterios de desempeño específicos a través de retroalimentación directa, sin la necesidad de definir funciones de recompensa.
Al integrar estas dos metodologías, se obtiene un modelo de mejor rendimiento que se beneficia del enfoque estructurado y basado en el conocimiento de SFT y la adaptabilidad y el refinamiento centrado en el usuario de DPO. El resultado es un modelo más preciso, más relevante y mejor alineado con cómo los usuarios quieren que se comporte.
Para obtener más ejemplos sobre cómo ajustar los modelos básicos, visite el repositorio de GitHub de muestras de IA generativa de SageMaker AI. Para obtener más información sobre modelos de entrenamiento en SageMaker AI, consulte la documentación de SageMaker AI.