Compartir por


Personalizar un modelo con ajuste preciso

Azure OpenAI Service le permite adaptar nuestros modelos a sus conjuntos de datos personales mediante un proceso conocido como ajuste preciso. Este paso de personalización le permite sacar más provecho del servicio al proporcionarle:

  • Resultados de mayor calidad que los que puede obtener solo con la ingeniería de una solicitud
  • La capacidad de formarse con más ejemplos de los que caben en el límite máximo de contexto de solicitud de un modelo.
  • Ahorro de tokens debido a solicitudes más cortas
  • Solicitudes de baja latencia, especialmente cuando se usan modelos más pequeños.

A diferencia del aprendizaje en pocos pasos, el ajuste preciso mejora el modelo mediante el entrenamiento en muchos más ejemplos de los que pueden caber en una solicitud, lo que le permite lograr mejores resultados en un gran número de tareas. Dado que el ajuste preciso ajusta los pesos del modelo base para mejorar el rendimiento en la tarea específica, no tendrá que incluir tantos ejemplos o instrucciones en la solicitud. Esto significa que se envía menos texto y se procesan menos tokens en cada llamada API, lo que puede ahorrar costos y mejorar la latencia de las solicitudes.

Usaremos LoRA, o aproximación de rango bajo, para ajustar los modelos de forma que se reduzca su complejidad sin afectar significativamente a su rendimiento. Este método funciona aproximando la matriz de alto rango original a una de rango inferior, por lo que solo se ajusta un subconjunto más pequeño de parámetros "importantes" durante la fase de entrenamiento supervisado, lo que hace que el modelo sea más fácil de administrar y eficiente. Para los usuarios, esto hace que el entrenamiento sea más rápido y asequible que otras técnicas.

Nota:

Actualmente, Azure OpenAI solo admite el ajuste de texto a texto para todos los modelos compatibles, incluidos GPT-4o mini.

Requisitos previos

Modelos

Los modelos siguientes admiten el ajuste preciso:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (18-07-2024)

* El ajuste preciso de este modelo está actualmente en versión preliminar pública.

O bien, puede realizar el ajuste preciso de un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Consulte la página de modelos para comprobar qué regiones admiten actualmente el ajuste preciso.

Revisión del flujo de trabajo de Azure OpenAI Studio

Dedique un momento a revisar el flujo de trabajo de ajuste preciso para usar Azure OpenAI Studio:

  1. Prepare los datos de entrenamiento y validación.
  2. Use el Asistente para crear modelos personalizados en Azure OpenAI Studio para entrenar el modelo personalizado.
    1. Seleccione un modelo base.
    2. Elija los datos de entrenamiento.
    3. Opcionalmente, elija los datos de validación.
    4. Opcionalmente, configure los parámetros de la tarea para el trabajo de ajuste preciso.
    5. Revise las opciones y entrene el nuevo modelo personalizado.
  3. Compruebe el estado del modelo con ajuste preciso personalizado.
  4. Implemente el modelo personalizado para su uso.
  5. Use el modelo personalizado.
  6. Opcionalmente, analice el modelo personalizado para mejorar el rendimiento y ajustarlo.

Preparación de los datos de entrenamiento y validación

El conjunto de datos de validación y los datos de entrenamiento consisten en ejemplos de entrada y salida para el rendimiento del modelo.

Los distintos tipos de modelo requieren un formato diferente de datos de entrenamiento.

Los datos de entrenamiento y validación que usa deben tener formato como documento de líneas JSON (JSONL). En el caso de gpt-35-turbo (todas las versiones), gpt-4, gpt-4o y gpt-4o-mini, el conjunto de datos de ajuste preciso debe tener el formato conversacional que usa la API de finalizaciones de chat.

Si desea un tutorial paso a paso sobre cómo ajustar un modelo gpt-4o-mini (18/7/2024) consulte el Tutorial de ajuste detallado de Azure OpenAI.

Formato de archivo de ejemplo

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Formato de archivo de chat de varios turnos

También se admiten varios turnos de una conversación en una sola línea del archivo de entrenamiento jsonl. Para omitir el ajuste específico de los mensajes del asistente, agregue el par de valores de clave opcional weight. Actualmente, weight se puede establecer en 0 o 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Además del formato JSONL, los archivos de datos de entrenamiento y validación deben codificarse en UTF-8 e incluir una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Creación de conjuntos de datos de entrenamiento y validación

Cuantos más ejemplos de entrenamiento tenga, mejor. Los trabajos de ajuste preciso no se llevarán a cabo sin al menos 10 ejemplos de entrenamiento, pero un número tan pequeño no es suficiente para influir notablemente en las respuestas del modelo. Es recomendable proporcionar cientos, o incluso miles, de ejemplos de entrenamiento para llevarlos a cabo correctamente.

En general, al duplicar el tamaño del conjunto de datos se puede producir un aumento lineal de la calidad del modelo. Sin embargo, tenga en cuenta que los ejemplos de baja calidad pueden afectar negativamente al rendimiento. Si entrena el modelo en una gran cantidad de datos internos, sin eliminar primero el conjunto de datos solo para los ejemplos de mayor calidad, podría acabar con un modelo que funciona mucho peor de lo esperado.

Uso del Asistente para crear modelos personalizados

Azure OpenAI Studio proporciona el Asistente para crear modelos personalizados, por lo que puede crear y entrenar de forma interactiva un modelo ajustado de forma precisa para el recurso de Azure.

  1. Abra Azure OpenAI Studio en https://oai.azure.com/ e inicie sesión con las credenciales que le permitan obtener acceso al recurso de Azure OpenAI. Durante el flujo de trabajo de inicio de sesión, seleccione el directorio, la suscripción de Azure y el recurso de Azure OpenAI adecuados.

  2. En Azure OpenAI Studio, vaya al panel Herramientas > Ajuste preciso y seleccione Ajuste preciso del modelo.

    Captura de pantalla que muestra cómo acceder al Asistente para crear modelo personalizado en Azure OpenAI Studio.

Se abre el Asistente para crear modelos personalizados.

Selección del modelo base

El primer paso para crear un modelo personalizado es elegir un modelo base. El panel Modelo base le permite elegir un modelo base que se utilizará para el modelo personalizado. La elección influye tanto en el rendimiento como en el costo del modelo.

Seleccione un modelo base de la lista desplegable Tipo de modelo base y, a continuación, seleccione Siguiente para continuar.

Puede crear un modelo personalizado a partir de uno de los siguientes modelos base disponibles:

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • gpt-35-turbo (0125)

  • gpt-4 (0613)

  • O bien, puede realizar el ajuste preciso de un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Captura de pantalla de las opciones de modelo con un modelo personalizado ajustado.

Para obtener más información sobre los modelos base que se pueden ajustar, consulte Modelos.

Elección de los datos de entrenamiento

El siguiente paso consiste en elegir los datos de entrenamiento que ya están preparados o cargar nuevos datos de entrenamiento que se usarán al personalizar el modelo. En el panel Datos de entrenamiento se muestran los conjuntos de datos existentes cargados previamente, y también se proporcionan opciones para cargar nuevos datos de entrenamiento.

Captura de pantalla del panel Datos de entrenamiento del asistente para crear modelos personalizados en Azure OpenAI Studio.

En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Los archivos grandes pueden volverse inestables cuando se cargan a través de formularios multiparte porque las solicitudes son atómicas y no se pueden volver a intentar o reanudar. Para obtener más información acerca de Azure Blob Storage, consulte ¿Qué es Azure Blob Storage?

Nota:

Los archivos de datos de entrenamiento deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Carga de los datos de entrenamiento desde un archivo local

Puede cargar un nuevo conjunto de datos de entrenamiento en el servicio desde un archivo local mediante uno de los métodos siguientes:

  • Arrastre y coloque el archivo en el área cliente del panel Datos de entrenamiento y, a continuación, seleccione Cargar archivo.

  • Seleccione Buscar un archivo en el área cliente del panel Datos de entrenamiento, elija el archivo que quiere cargar en el cuadro de diálogo Abrir y, a continuación, seleccione Cargar archivo.

Después de seleccionar y cargar el conjunto de datos de entrenamiento, seleccione Siguiente para continuar.

Captura de pantalla del panel Datos de entrenamiento del asistente para crear modelos personalizados con opciones de archivos locales.

Importación de datos de entrenamiento desde el almacén de blobs de Azure

Puede importar un conjunto de datos de entrenamiento desde un blob de Azure u otra ubicación web compartida proporcionando el nombre y la ubicación del archivo.

  1. Escriba el nombre de archivo del archivo.

  2. Para la ubicación del archivo, proporcione la dirección URL del blob de Azure, la firma de acceso compartido (SAS) de Azure Storage u otro vínculo a una ubicación web compartida accesible.

  3. Seleccione Importar para importar el conjunto de datos de entrenamiento en el servicio.

Después de seleccionar y cargar el conjunto de datos de entrenamiento, seleccione Siguiente para continuar.

Captura de pantalla del panel Datos de entrenamiento del Asistente para crear modelos personalizados, con opciones de ubicación web compartida y blob de Azure.

Elección de los datos de validación

En el paso siguiente se proporcionan opciones para configurar el modelo que usará los datos de validación en el proceso de entrenamiento. Si no quiere usar datos de validación, puede elegir Siguiente para continuar a las opciones avanzadas del modelo. De lo contrario, si tiene un conjunto de datos de validación, puede elegir los datos de validación que ya están preparados o cargar nuevos datos de validación preparados para usarlos al personalizar el modelo.

En el panel Datos de validación se muestran los conjuntos de datos de entrenamiento y validación existentes cargados previamente, y se proporcionan opciones según las que puede cargar nuevos datos de validación.

Captura de pantalla del panel Datos de validación del asistente para crear modelos personalizados en Azure OpenAI Studio.

En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Los archivos grandes pueden volverse inestables cuando se cargan a través de formularios multiparte porque las solicitudes son atómicas y no se pueden volver a intentar o reanudar.

Nota:

Al igual que los archivos de datos de entrenamiento, los archivos de datos de validación deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Carga de los datos de validación desde un archivo local

Puede cargar un nuevo conjunto de datos de validación en el servicio desde un archivo local mediante uno de los métodos siguientes:

  • Arrastre y coloque el archivo en el área cliente del panel Datos de validación y, a continuación, seleccione Cargar archivo.

  • Seleccione Buscar un archivo en el área cliente del panel Datos de validación, elija el archivo que quiere cargar en el cuadro de diálogo Abrir y, a continuación, seleccione Cargar archivo.

Después de seleccionar y cargar el conjunto de datos de validación, seleccione Siguiente para continuar.

Captura de pantalla del panel Datos de validación del asistente para crear modelos personalizados con opciones de archivos locales.

Importación de datos de validación desde el almacén de blobs de Azure

Puede importar un conjunto de datos de validación desde un blob de Azure u otra ubicación web compartida proporcionando el nombre y la ubicación del archivo.

  1. Escriba el nombre de archivo del archivo.

  2. Para la ubicación del archivo, proporcione la dirección URL del blob de Azure, la firma de acceso compartido (SAS) de Azure Storage u otro vínculo a una ubicación web compartida accesible.

  3. Seleccione Importar para importar el conjunto de datos de entrenamiento en el servicio.

Después de seleccionar y cargar el conjunto de datos de validación, seleccione Siguiente para continuar.

Captura de pantalla del panel Datos de validación del Asistente para crear modelos personalizados, con opciones de ubicación web compartida y blob de Azure.

Configuración de los parámetros de la tarea

El asistente Crear modelo personalizado muestra los parámetros para entrenar el modelo con ajuste preciso en el panel Parámetros de tarea. Están disponibles los siguientes parámetros:

Nombre Tipo Descripción
batch_size integer El tamaño del lote a usar para el entrenamiento. El tamaño del lote es el número de ejemplos de entrenamiento usados para entrenar una sola pasada hacia adelante y hacia atrás. En general, hemos comprobado que los tamaños de lote más grandes tienden a funcionar mejor para conjuntos de datos más grandes. El valor predeterminado, así como el valor máximo de esta propiedad, son específicos de un modelo base. Un tamaño de lote mayor significa que los parámetros del modelo se actualizan con menos frecuencia, pero con una varianza menor.
learning_rate_multiplier number El multiplicador de la tasa de aprendizaje que se usará para el entrenamiento. La tasa de aprendizaje de ajuste es la tasa de aprendizaje original que se usó para el preentrenamiento multiplicada por este valor. Las tasas de aprendizaje más grandes tienden a mejorar con tamaños de lote más grandes. Se recomienda experimentar con valores en el rango de 0,02 a 0,2 para ver qué produce los mejores resultados. Una tasa de aprendizaje más pequeña puede ser útil para evitar el sobreajuste.
n_epochs integer El número de épocas para entrenar el modelo. Una época se refiere a un ciclo completo a través del conjunto de datos de entrenamiento.
seed integer La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente

Captura de pantalla del panel Opciones avanzadas del Asistente para crear modelos personalizados, con las opciones predeterminadas seleccionadas.

Seleccione Predeterminado para usar los valores predeterminados del trabajo de ajuste preciso o seleccione Personalizado para mostrar y editar los valores de los hiperparámetros. Cuando se seleccionan los valores predeterminados, determinamos el valor correcto de forma algorítmica en función de los datos de entrenamiento.

Después de configurar las opciones avanzadas, seleccione Siguiente para revisar las opciones y entrenar el modelo ajustado de forma precisa.

Revisión de las opciones y entrenamiento del modelo

El panel Revisar del asistente muestra información sobre las opciones de configuración.

Captura de pantalla del panel Revisión del asistente para crear modelos personalizados en Azure OpenAI Studio.

Si está listo para entrenar el modelo, seleccione Inicio del trabajo de entrenamiento para iniciar el trabajo de ajuste preciso y volver al panel Modelos.

Comprobación del estado del modelo personalizado

El panel Modelos muestra información sobre el modelo personalizado en la pestaña Modelos personalizados. La pestaña incluye información sobre el estado y el identificador de trabajo del trabajo de ajuste preciso del modelo personalizado. Una vez completado el trabajo, la pestaña muestra el identificador de archivo del archivo de resultados. Es posible que tenga que seleccionar Actualizar para ver un estado actualizado para el trabajo de entrenamiento de modelos.

Captura de pantalla de la página Modelos de Azure OpenAI Studio, en la que se muestra un modelo personalizado.

Después de haber iniciado un trabajo de ajuste preciso, puede tardar algo de tiempo en completarse. Es posible que el trabajo esté en cola detrás de otros trabajos del sistema. Entrenar el modelo puede tardar minutos u horas, dependiendo del modelo y del tamaño del conjunto de datos.

Estas son algunas de las tareas que puede realizar en el panel Modelos:

  • Compruebe el estado del trabajo de ajuste preciso del modelo personalizado en la columna Estado de la pestaña Modelos personalizados.

  • En la columna Nombre del modelo, seleccione el nombre del modelo para ver más información sobre el modelo personalizado. Puede ver el estado del trabajo de ajuste preciso, los resultados de entrenamiento, los eventos de entrenamiento y los hiperparámetros que se han usado en el trabajo.

  • Seleccione Descargar archivo de entrenamiento para descargar los datos de entrenamiento que usó para el modelo.

  • Seleccione Descargar resultados para descargar el archivo de resultados adjunto al trabajo de ajuste preciso del modelo y así analizar el modelo personalizado para el entrenamiento y el rendimiento de validación.

  • Seleccione Actualizar para actualizar la información de la página.

Captura de pantalla de la página Modelos en Azure OpenAI Studio, en la que se muestra un modelo personalizado.

Puntos de control

Cuando finaliza cada época de entrenamiento, se genera un punto de control. Un punto de control es una versión totalmente funcional de un modelo que puede implementarse y usarse como modelo de destino para posteriores trabajos de ajuste. Los puntos de control pueden ser especialmente útiles, ya que pueden proporcionar una instantánea de su modelo antes de que se haya producido el sobreajuste. Cuando finalice un trabajo de ajuste, dispondrá de las tres versiones más recientes del modelo para implementarlas.

Evaluación de seguridad: ajuste fino de GPT-4, GPT-4o y GPT-4o-mini: vista previa pública

GPT-4o, GPT-4o-mini y GPT-4 son nuestros modelos más avanzados que se pueden ajustar a sus necesidades. Al igual que con los modelos de Azure OpenAI generalmente, las funcionalidades avanzadas de los modelos optimizados incluyen mayores desafíos de inteligencia artificial responsables relacionados con contenido dañino, manipulación, comportamiento similar al humano, problemas de privacidad y mucho más. Obtenga más información sobre los riesgos, las funcionalidades y las limitaciones de la Introducción a las prácticas de inteligencia artificial responsable y Nota sobre transparencia. Para ayudar a mitigar los riesgos asociados a modelos avanzados ajustados, hemos implementado pasos de evaluación adicionales para ayudar a detectar y evitar contenido dañino en el entrenamiento y salidas de modelos ajustados. Estos pasos se basan en Microsoft Responsible AI Standard y el filtrado de contenido de Azure OpenAI Service.

  • Las evaluaciones se realizan en áreas de trabajo dedicadas, específicas del cliente y privadas;
  • Los puntos de conexión de evaluación se encuentran en la misma geografía que el recurso de Azure OpenAI;
  • Los datos de entrenamiento no se almacenan en conexión con la realización de evaluaciones; solo se conserva la evaluación final del modelo (que se puede implementar o no se puede implementar);

Los filtros de evaluación de modelos ajustados GPT-4o, GPT-4o-mini y GPT-4 están configurados según umbrales predefinidos y los clientes no pueden modificarlos; no están vinculados a ninguna configuración de filtrado de contenido personalizada que pueda haber creado.

Evaluación de datos

Antes de comenzar el entrenamiento, los datos se evalúan para contenido potencialmente dañino (violencia, sexual, odio y imparcialidad, ver: definiciones de categorías aquí). Si se detecta contenido perjudicial por encima del nivel de gravedad especificado, se producirá un error en el trabajo de entrenamiento y recibirá un mensaje que le informará de las categorías de error.

Mensaje de ejemplo:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Los datos de entrenamiento se evalúan automáticamente dentro del trabajo de importación de datos como parte de proporcionar la funcionalidad de ajuste preciso.

Si se produce un error en el trabajo de ajuste debido a la detección de contenido dañino en los datos de entrenamiento, no se le cobrará.

Evaluación del modelo

Una vez completado el entrenamiento, pero antes de que el modelo optimizado esté disponible para la implementación, el modelo resultante se evalúa para las respuestas potencialmente perjudiciales mediante las métricas de riesgo y seguridad de Azure integradas. Con el mismo enfoque para probar que usamos para los modelos de lenguaje grandes base, nuestra capacidad de evaluación simula una conversación con su modelo ajustado para evaluar el potencial de generar contenido perjudicial, de nuevo usando contenido dañino especificado categorías (violencia, violencia, odio y equidad, autolesiones).

Si se encuentra un modelo para generar una salida que contenga contenido detectado como perjudicial por encima de una tasa aceptable, se le informará de que el modelo no está disponible para la implementación, con información sobre las categorías específicas de daño detectadas:

Mensajes de ejemplo:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Captura de pantalla de un trabajo de ajuste correcto con errores debido a la evaluación de seguridad

Al igual que con la evaluación de datos, el modelo se evalúa automáticamente dentro del trabajo de ajuste preciso como parte de proporcionar la funcionalidad de ajuste preciso. El servicio registra solo la evaluación resultante (implementable o no implementable). Si se produce un error en la implementación del modelo optimizado debido a la detección de contenido dañino en las salidas del modelo, no se le cobrará por la ejecución de entrenamiento.

Implementación de un modelo ajustado

Cuando el trabajo de ajuste preciso se haya realizado correctamente, puede implementar el modelo personalizado desde el panel Modelos. Debe implementar el modelo personalizado para poder usarlo con las llamadas de finalización.

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

Nota:

Solo se permite una implementación para un modelo personalizado. Se muestra un mensaje de error si selecciona un modelo personalizado ya implementado.

Para implementar el modelo personalizado, seleccione el modelo personalizado que se va a implementar y, a continuación, seleccione Implementar modelo.

Captura de pantalla que muestra cómo implementar un modelo personalizado en Azure OpenAI Studio.

Se abre el cuadro de diálogo Implementar modelo. En el cuadro de diálogo, escriba el Nombre de la implementación y seleccione Crear para iniciar la implementación del modelo personalizado.

Captura de pantalla del cuadro de diálogo Implementar modelo en Azure OpenAI Studio.

Puede supervisar el progreso de la implementación en el panel Implementaciones en Azure OpenAI Studio.

Implementación entre regiones

El ajuste preciso admite la implementación de un modelo ajustado en una región diferente a la de la ubicación en la que originalmente se ha ajustado el modelo. También puede implementar en otra suscripción o región.

Las únicas limitaciones son que la nueva región también debe admitir el ajuste preciso y, al implementar entre suscripciones, la cuenta que genera el token de autorización para la implementación debe tener acceso a las suscripciones de origen y de destino.

La implementación entre suscripciones o regiones se puede realizar a través de Python o REST.

Uso de un modelo personalizado implementado

Cuando su modelo personalizado se implemente, puede usarlo como cualquier otro modelo implementado. Puede usar Área de juegos en Azure OpenAI Studio para experimentar con la nueva implementación. Puede seguir usando los mismos parámetros con el modelo personalizado, como temperature y max_tokens, como puede hacer con otros modelos implementados. Para los modelos babbage-002 y davinci-002 con ajuste preciso, usará el área de juegos Finalizaciones y la API de finalizaciones. Para los modelos gpt-35-turbo-0613 con ajuste preciso, usará el área de juegos Chat y la API de finalización de chat.

Captura de pantalla del panel Área de juegos en Azure OpenAI Studio con secciones resaltadas.

Análisis del modelo personalizado

Azure OpenAI asocia un archivo de resultado denominado results.csv a cada trabajo de ajuste preciso una vez completado. Puede usar el archivo de resultados para analizar el rendimiento de entrenamiento y validación del modelo personalizado. El id. del archivo de resultados aparece en cada modelo personalizado en la columna Id. del archivo de resultados del panel Modelos para Azure OpenAI Studio. Puede usar el id. de archivo para identificar y descargar el archivo de resultados desde el panel Archivos de datos de Azure OpenAI Studio.

El archivo de resultados es un archivo CSV que contiene una fila de encabezado y una fila para cada paso de entrenamiento que realizó el trabajo de ajuste preciso. El archivo de resultados contiene las columnas siguientes:

Nombre de la columna Descripción
step El número del paso de entrenamiento. Un paso de entrenamiento representa un solo paso, hacia delante y hacia atrás, en un lote de datos de entrenamiento.
train_loss La pérdida del lote de entrenamiento.
train_mean_token_accuracy El porcentaje de token del lote de entrenamiento que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
valid_loss La pérdida del lote de validación.
validation_mean_token_accuracy El porcentaje de tokens en el lote de validación que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
full_valid_loss La pérdida de validación calculada al final de cada época. Cuando el entrenamiento va bien, la pérdida debe disminuir.
full_valid_mean_token_accuracy La precisión media válida de los tokens calculada al final de cada época. Cuando el entrenamiento va bien, la precisión del token debe aumentar.

También puede ver los datos en el archivo results.csv como trazados de Azure OpenAI Studio. Seleccione el vínculo del modelo entrenado y verá tres gráficos: pérdida, precisión media del token y precisión del token. Si proporcionó datos de validación, ambos conjuntos de datos aparecerán en el mismo trazado.

Intente disminuir la pérdida con el tiempo y aumentar la precisión. Si ve una divergencia entre los datos de entrenamiento y los de validación, puede indicar que existe un sobreajuste. Pruebe un entrenamiento con menos épocas o un multiplicador de velocidad de aprendizaje más pequeño.

Limpieza de implementaciones, modelos personalizados y archivos de entrenamiento

Cuando haya terminado con su modelo personalizado, puede eliminar la implementación y el modelo. También puede eliminar los archivos de entrenamiento y validación que cargó en el servicio, si es necesario.

Eliminar la implementación de modelo

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

Puede eliminar la implementación del modelo personalizado en el panel Implementaciones en Azure OpenAI Studio. Seleccione la implementación que quiera eliminar y, a continuación, seleccione Eliminar para eliminarla.

Eliminación del modelo personalizado

Puede eliminar un modelo personalizado en el panel Modelos de Azure OpenAI Studio. Seleccione el modelo personalizado que quiera eliminar en la pestaña Modelos personalizados y, a continuación, seleccione Eliminar para eliminarlo.

Nota:

No se puede eliminar un modelo personalizado si tiene una implementación existente. Primero debe eliminar la implementación del modelo para poder eliminar el modelo personalizado.

Eliminación de los archivos de entrenamiento

Opcionalmente, puede eliminar los archivos de entrenamiento y validación que ha cargado para el entrenamiento y los archivos de resultados generados durante el entrenamiento, en el panel Administración>Archivos de datos en Azure OpenAI Studio. Seleccione el archivo que quiera eliminar y, a continuación, seleccione Eliminar para eliminarlo.

Ajuste preciso continuo

Una vez que haya creado un modelo ajustado, es posible que desee seguir refinando el modelo a lo largo del tiempo a través de un ajuste más preciso. El ajuste continuo es el proceso iterativo de seleccionar un modelo ya ajustado como modelo base y ajustarlo más adelante en nuevos conjuntos de ejemplos de entrenamiento.

Para realizar un ajuste preciso en un modelo que ha ajustado previamente, usaría el mismo proceso que se describe en creación de un modelo personalizado pero, en lugar de especificar el nombre de un modelo base genérico, especificaría el modelo ya optimizado. Un modelo personalizado ajustado tendría un aspecto similar a gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

Captura de pantalla de la interfaz de usuario Crear un modelo personalizado con un modelo optimizado resaltado.

También se recomienda incluir el parámetro suffix para facilitar la distinción entre diferentes iteraciones del modelo ajustado. suffix toma una cadena y se establece para identificar el modelo ajustado. Con la API de Python de OpenAI, se admite una cadena de hasta 18 caracteres que se agregará al nombre del modelo optimizado.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Requisitos previos

Modelos

Los modelos siguientes admiten el ajuste preciso:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (18-07-2024)

* El ajuste preciso de este modelo está actualmente en versión preliminar pública.

O bien, puede realizar el ajuste preciso de un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Consulte la página de modelos para comprobar qué regiones admiten actualmente el ajuste preciso.

Revisión del flujo de trabajo de Azure AI Studio

Dedique un momento a revisar el flujo de trabajo de ajuste para usar Azure AI Studio:

  1. Prepare los datos de entrenamiento y validación.
  2. Use el asistente para Ajustar modelo en Azure AI Studio para entrenar el modelo personalizado.
    1. Seleccione un modelo.
    2. Elija los datos de entrenamiento.
    3. Opcionalmente, elija los datos de validación.
    4. Opcionalmente, configurar los parámetros para el trabajo de ajuste preciso.
    5. Revise las opciones y entrene el nuevo modelo personalizado.
  3. Compruebe el estado del modelo ajustado.
  4. Opcionalmente, analice el modelo ajustado para mejorar el rendimiento y ajustarlo.
  5. Implemente el modelo optimizado para su uso.
  6. Use el modelo ajustado.

Preparación de los datos de entrenamiento y validación

El conjunto de datos de validación y los datos de entrenamiento consisten en ejemplos de entrada y salida para el rendimiento del modelo.

Los distintos tipos de modelo requieren un formato diferente de datos de entrenamiento.

Los datos de entrenamiento y validación que usa deben tener formato como documento de líneas JSON (JSONL). Para gpt-35-turbo-0613, el conjunto de datos de ajuste preciso debe tener el formato conversacional que usa la API de finalizaciones de chat.

Si desea un tutorial paso a paso sobre cómo ajustar un modelo gpt-35-turbo-0613 consulte el Tutorial de ajuste detallado de Azure OpenAI.

Formato de archivo de ejemplo

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Formato de archivo de chat de varios turnos

También se admiten varios turnos de una conversación en una sola línea del archivo de entrenamiento jsonl. Para omitir el ajuste específico de los mensajes del asistente, agregue el par de valores de clave opcional weight. Actualmente, weight se puede establecer en 0 o 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Además del formato JSONL, los archivos de datos de entrenamiento y validación deben codificarse en UTF-8 e incluir una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Creación de conjuntos de datos de entrenamiento y validación

Cuantos más ejemplos de entrenamiento tenga, mejor. Los trabajos de ajuste fino no continuarán sin al menos 10 ejemplos de entrenamiento, pero un número tan pequeño no es suficiente para influir notablemente en las respuestas del modelo. Es recomendable proporcionar cientos, o incluso miles, de ejemplos de entrenamiento para llevarlos a cabo correctamente.

En general, al duplicar el tamaño del conjunto de datos se puede producir un aumento lineal de la calidad del modelo. Sin embargo, tenga en cuenta que los ejemplos de baja calidad pueden afectar negativamente al rendimiento. Si entrena el modelo en una gran cantidad de datos internos, sin eliminar primero el conjunto de datos solo para los ejemplos de mayor calidad, podría acabar con un modelo que funciona mucho peor de lo esperado.

Creación del modelo optimizado

Para ajustar un modelo de Azure OpenAI en un proyecto de Azure AI Studio existente, siga estos pasos:

  1. Inicie sesión en Inteligencia artificial de Azure Studio y seleccione el proyecto. Si aún no tiene un proyecto, primero debe crear un proyecto.

  2. En el menú izquierdo contraíble, seleccione Ajuste>+ Ajustar modelo.

    Captura de pantalla de la opción para empezar a crear un nuevo modelo ajustado.

Selección del modelo base

  1. Seleccione un modelo base para ajustarlo. La elección influye tanto en el rendimiento como en el costo del modelo. En este ejemplo, se elige el modelo gpt-35-turbo. Seleccione Confirmar.

    Captura de pantalla de la opción para seleccionar un modelo para ajustarlo.

  2. Para gpt-35-turbo tenemos diferentes versiones disponibles para ajustar, así que elija la versión que le gustaría ajustar. Se seleccionará (0301).

  3. También se recomienda incluir el parámetro suffix para facilitar la distinción entre diferentes iteraciones del modelo ajustado. suffix toma una cadena y se establece para identificar el modelo ajustado. Con la API de Python de OpenAI, se admite una cadena de hasta 18 caracteres que se agregará al nombre del modelo optimizado.

Si tiene más de una conexión de Azure OpenAI habilitada para ajustarla, elija qué recurso desea usar. Tenga en cuenta que todos los usuarios con acceso al recurso de Azure OpenAI tendrán acceso a este modelo ajustado.

  1. Luego, seleccione Siguiente.

    Captura de pantalla de la configuración básica para ajustar un modelo.

Elección de los datos de entrenamiento

El siguiente paso consiste en elegir los datos de entrenamiento que ya están preparados o cargar nuevos datos de entrenamiento que se usarán al personalizar el modelo. En el panel Datos de entrenamiento se muestran los conjuntos de datos existentes cargados previamente, y también se proporcionan opciones para cargar nuevos datos de entrenamiento.

Captura de pantalla del panel Datos de entrenamiento para el asistente para ajustar modelos en Azure AI Studio.

  • Si los datos de entrenamiento ya están en el proyecto, seleccione Datos en Azure AI Studio.

    • Seleccione el archivo de la lista que se muestra en el panel Datos de entrenamiento.
  • Si los datos de entrenamiento ya se han cargado en el servicio Azure OpenAI, seleccione la conexión de Azure OpenAI en Conexión de Azure OpenAI.

  • Para cargar datos de entrenamiento para ajustar el modelo, seleccione Cargar datos y a continuación, seleccione Cargar archivo.

    • Asegúrese de que todos los ejemplos de entrenamiento siguen el formato esperado para la inferencia. Para realizar el ajuste preciso de los modelos de forma eficaz, asegúrese de contar con un conjunto de datos equilibrado y diverso. Esto supone mantener el equilibrio de los datos, lo que incluye varios escenarios, y refinar periódicamente los datos de entrenamiento para que estén en consonancia con las expectativas del mundo real, lo que en última instancia conduce a respuestas de los modelos más precisas y equilibradas. Para más información, consulte Preparación de datos.
    • En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Los archivos grandes pueden volverse inestables cuando se cargan a través de formularios multiparte porque las solicitudes son atómicas y no se pueden volver a intentar o reanudar. Para obtener más información acerca de Azure Blob Storage, consulte ¿Qué es Azure Blob Storage?

Nota:

Los archivos de datos de entrenamiento deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Captura de pantalla de la opción para cargar datos de entrenamiento localmente.

Después de cargar archivos, verá una vista previa de los datos de entrenamiento. Seleccione Siguiente para continuar.

Captura de pantalla de la vista previa de datos de entrenamiento.

Elección de los datos de validación

Opcionalmente, puede optar por proporcionar datos de validación para ajustar el modelo. Si no desea usar datos de validación, puede seleccionar Ninguno y seleccionar Siguiente para continuar con las opciones avanzadas del modelo.

De lo contrario, si tiene un conjunto de datos de validación, puede elegir entre los datos cargados previamente o cargar los datos de validación recién preparados para usarlos para ajustar el modelo.

Nota:

Al igual que los archivos de datos de entrenamiento, los archivos de datos de validación deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Configuración de los parámetros

Opcionalmente, configure parámetros para el trabajo de ajuste preciso. Estas son las funciones disponibles:

Nombre Tipo Descripción
batch_size integer El tamaño del lote a usar para el entrenamiento. El tamaño del lote es el número de ejemplos de entrenamiento usados para entrenar una sola pasada hacia adelante y hacia atrás. En general, hemos comprobado que los tamaños de lote más grandes tienden a funcionar mejor para conjuntos de datos más grandes. El valor predeterminado, así como el valor máximo de esta propiedad, son específicos de un modelo base. Un tamaño de lote mayor significa que los parámetros del modelo se actualizan con menos frecuencia, pero con una varianza menor. Cuando se establece en -1, batch_size se calcula como un 0,2 % de los ejemplos del conjunto de entrenamiento y el máximo es 256.
learning_rate_multiplier number El multiplicador de la tasa de aprendizaje que se usará para el entrenamiento. La tasa de aprendizaje de ajuste es la tasa de aprendizaje original que se usó para el preentrenamiento multiplicada por este valor. Las tasas de aprendizaje más grandes tienden a mejorar con tamaños de lote más grandes. Se recomienda experimentar con valores en el rango de 0,02 a 0,2 para ver qué produce los mejores resultados. Una tasa de aprendizaje más pequeña puede ser útil para evitar el sobreajuste.
n_epochs integer El número de épocas para entrenar el modelo. Una época se refiere a un ciclo completo a través del conjunto de datos de entrenamiento. Si se establece en -1, el número de épocas se determina dinámicamente en función de los datos de entrada.
seed integer La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente.

Puede elegir dejar la configuración predeterminada o personalizar los valores a su preferencia. Después de terminar de realizar las configuraciones, seleccione Siguiente.

Revisión de las opciones y entrenamiento del modelo

Revise las opciones y seleccione Enviar para empezar a entrenar el nuevo modelo optimizado.

Comprobación del estado del modelo ajustado

Después de enviar el trabajo de ajuste, verá una página con detalles sobre el modelo ajustado. Puede encontrar el estado y más información sobre el modelo ajustado en la página Ajuste preciso>Modelos de Inteligencia artificial de Azure Studio.

Es posible que el trabajo esté en cola detrás de otros trabajos del sistema. Entrenar el modelo puede tardar minutos u horas, dependiendo del modelo y del tamaño del conjunto de datos.

Análisis del modelo optimizado

Una vez completado correctamente el ajuste, puede descargar un archivo de resultados denominado results.csv desde la página del modelo ajustado en la pestaña Detalles. Puede usar el archivo de resultados para analizar el rendimiento de entrenamiento y validación del modelo personalizado.

El archivo de resultados es un archivo CSV que contiene una fila de encabezado y una fila para cada paso de entrenamiento que realizó el trabajo de ajuste preciso. El archivo de resultados contiene las columnas siguientes:

Nombre de la columna Descripción
step El número del paso de entrenamiento. Un paso de entrenamiento representa un solo paso, hacia delante y hacia atrás, en un lote de datos de entrenamiento.
train_loss La pérdida del lote de entrenamiento.
train_mean_token_accuracy El porcentaje de token del lote de entrenamiento que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
valid_loss La pérdida del lote de validación.
validation_mean_token_accuracy El porcentaje de tokens en el lote de validación que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
full_valid_loss La pérdida de validación calculada al final de cada época. Cuando el entrenamiento va bien, la pérdida debe disminuir.
full_valid_mean_token_accuracy La precisión media válida de los tokens calculada al final de cada época. Cuando el entrenamiento va bien, la precisión del token debe aumentar.

También puede ver los datos en el archivo de results.csv como trazados en Azure AI Studio en la pestaña Métricas del modelo optimizado. Seleccione el vínculo del modelo entrenado y verá dos gráficos: pérdida y precisión del token. Si proporcionó datos de validación, ambos conjuntos de datos aparecerán en el mismo trazado.

Captura de pantalla de la UI de métricas.

Intente disminuir la pérdida con el tiempo y aumentar la precisión. Si ve una divergencia entre los datos de entrenamiento y validación que pueden indicar que está sobreajustando. Pruebe un entrenamiento con menos épocas o un multiplicador de velocidad de aprendizaje más pequeño.

Puntos de control

Cuando finaliza cada época de entrenamiento, se genera un punto de control. Un punto de control es una versión totalmente funcional de un modelo que puede implementarse y usarse como modelo de destino para posteriores trabajos de ajuste. Los puntos de control pueden ser especialmente útiles, ya que pueden proporcionar una instantánea de su modelo antes de que se haya producido el sobreajuste. Cuando finalice un trabajo de ajuste, dispondrá de las tres versiones más recientes del modelo para implementarlas.

Captura de pantalla de la interfaz de usuario de puntos de control.

Evaluación de seguridad GPT-4, GPT-4o, GPT-4o-mini ajuste - versión preliminar pública

GPT-4o, GPT-4o-mini y GPT-4 son nuestros modelos más avanzados que se pueden ajustar a sus necesidades. Al igual que con los modelos de Azure OpenAI generalmente, las funcionalidades avanzadas de los modelos optimizados incluyen mayores desafíos de inteligencia artificial responsables relacionados con contenido dañino, manipulación, comportamiento similar al humano, problemas de privacidad y mucho más. Obtenga más información sobre los riesgos, las funcionalidades y las limitaciones de la Introducción a las prácticas de inteligencia artificial responsable y Nota sobre transparencia. Para ayudar a mitigar los riesgos asociados a modelos avanzados ajustados, hemos implementado pasos de evaluación adicionales para ayudar a detectar y evitar contenido dañino en el entrenamiento y salidas de modelos ajustados. Estos pasos se basan en Microsoft Responsible AI Standard y el filtrado de contenido de Azure OpenAI Service.

  • Las evaluaciones se realizan en áreas de trabajo dedicadas, específicas del cliente y privadas;
  • Los puntos de conexión de evaluación se encuentran en la misma geografía que el recurso de Azure OpenAI;
  • Los datos de entrenamiento no se almacenan en conexión con la realización de evaluaciones; solo se conserva la evaluación final del modelo (que se puede implementar o no se puede implementar);

Los filtros de evaluación de modelos ajustados GPT-4o, GPT-4o-mini y GPT-4 están configurados según umbrales predefinidos y los clientes no pueden modificarlos; no están vinculados a ninguna configuración de filtrado de contenido personalizada que pueda haber creado.

Evaluación de datos

Antes de comenzar el entrenamiento, los datos se evalúan para contenido potencialmente dañino (violencia, sexual, odio y imparcialidad, ver: definiciones de categorías aquí). Si se detecta contenido perjudicial por encima del nivel de gravedad especificado, se producirá un error en el trabajo de entrenamiento y recibirá un mensaje que le informará de las categorías de error.

Mensaje de ejemplo:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Los datos de entrenamiento se evalúan automáticamente dentro del trabajo de importación de datos como parte de proporcionar la funcionalidad de ajuste preciso.

Si se produce un error en el trabajo de ajuste debido a la detección de contenido dañino en los datos de entrenamiento, no se le cobrará.

Evaluación del modelo

Una vez completado el entrenamiento, pero antes de que el modelo optimizado esté disponible para la implementación, el modelo resultante se evalúa para las respuestas potencialmente perjudiciales mediante las métricas de riesgo y seguridad de Azure integradas. Con el mismo enfoque para probar que usamos para los modelos de lenguaje grandes base, nuestra capacidad de evaluación simula una conversación con su modelo ajustado para evaluar el potencial de generar contenido perjudicial, de nuevo usando contenido dañino especificado categorías (violencia, violencia, odio y equidad, autolesiones).

Si se encuentra un modelo para generar una salida que contenga contenido detectado como perjudicial por encima de una tasa aceptable, se le informará de que el modelo no está disponible para la implementación, con información sobre las categorías específicas de daño detectadas:

Mensajes de ejemplo:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Captura de pantalla de un trabajo de ajuste correcto con errores debido a la evaluación de seguridad

Al igual que con la evaluación de datos, el modelo se evalúa automáticamente dentro del trabajo de ajuste preciso como parte de proporcionar la funcionalidad de ajuste preciso. El servicio registra solo la evaluación resultante (implementable o no implementable). Si se produce un error en la implementación del modelo optimizado debido a la detección de contenido dañino en las salidas del modelo, no se le cobrará por la ejecución de entrenamiento.

Implementación de un modelo ajustado

Una vez ajustado el modelo, puede implementar el modelo y usarlo en su propia aplicación. No se puede implementar un modelo ajustado desde la página de implementaciones o la página del área de juegos en Inteligencia artificial de Azure Studio. La única manera, actualmente, de implementar un modelo ajustado es desde la página de detalles de ese modelo.

Al implementar el modelo, se hace que el modelo esté disponible para la inferencia y que incurra en un cargo por hospedaje por hora. Sin embargo, los modelos optimizados se pueden almacenar en Azure AI Studio sin costo alguno hasta que esté listo para usarlos.

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

Nota:

Solo se permite una implementación para un modelo ajustado. Se muestra un mensaje de error si selecciona un modelo ya implementado optimizado.

Puede supervisar el progreso de la implementación en la página Deployments en Azure AI Studio.

Uso de un modelo optimizado implementado

Después de implementar el modelo optimizado, puede usarlo como cualquier otro modelo implementado. Puede usar el Playground en Azure AI Studio para experimentar con la nueva implementación. También puede usar la API de REST para llamar al modelo ajustado desde su propia aplicación. Incluso puede empezar a usar este nuevo modelo ajustado en el flujo de avisos para compilar la aplicación de IA generativa.

Nota:

En el caso de los modelos de chat, el mensaje del sistema que usa para guiar el modelo ajustado (ya sea implementado o disponible para las pruebas en el área de juegos) debe ser el mismo que el mensaje del sistema que usó para el entrenamiento. Si usa un mensaje de sistema diferente, es posible que el modelo no funcione según lo previsto.

Limpieza de las implementaciones, modelos optimizados y archivos de entrenamiento

Cuando haya terminado con el modelo ajustado, puede eliminar la implementación y el modelo. También puede eliminar los archivos de entrenamiento y validación que cargó en el servicio, si es necesario.

Eliminación de la implementación de modelo ajustado

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

Puede eliminar la implementación del modelo optimizado en la página Deployments en Azure AI Studio. Seleccione la implementación que quiera eliminar y, a continuación, seleccione Eliminar para eliminarla.

Eliminación del modelo con ajuste preciso

Puede eliminar un modelo ajustado en la página Ajuste en Azure AI Studio. Seleccione el modelo optimizado para eliminar y a continuación, seleccione Eliminar para eliminar el modelo ajustado.

Nota:

No se puede eliminar un modelo ajustado si tiene una implementación existente. Primero debe eliminar la implementación de modelo antes de poder eliminar el modelo ajustado.

Eliminación de los archivos de entrenamiento

Opcionalmente, puede eliminar los archivos de entrenamiento y validación que cargó para el entrenamiento y los archivos de resultados generados durante el entrenamiento. Para ello, debe ir a Azure OpenAI Studio e ir al panel Administración>Archivos de datos. Seleccione el archivo que quiera eliminar y, a continuación, seleccione Eliminar para eliminarlo.

Requisitos previos

Models

Los modelos siguientes admiten el ajuste preciso:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (18-07-2024)

* El ajuste preciso de este modelo está actualmente en versión preliminar pública.

O bien, puede ajustar un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Captura de pantalla de las opciones de modelo con un modelo personalizado ajustado.

Consulte la página de modelos para comprobar qué regiones admiten actualmente el ajuste preciso.

Revisión del flujo de trabajo del SDK de Python

Dedique un momento a revisar el flujo de trabajo de ajuste preciso para usar el SDK de Python con Azure OpenAI:

  1. Prepare los datos de entrenamiento y validación.
  2. Seleccione un modelo base.
  3. Cargue los datos de entrenamiento.
  4. Entrene el nuevo modelo personalizado.
  5. Compruebe el estado del modelo personalizado.
  6. Implemente el modelo personalizado para usarlo.
  7. Use el modelo personalizado.
  8. Opcionalmente, analice el modelo personalizado para mejorar el rendimiento y ajustarlo.

Preparación de los datos de entrenamiento y validación

El conjunto de datos de validación y los datos de entrenamiento consisten en ejemplos de entrada y salida para el rendimiento del modelo.

Los distintos tipos de modelo requieren un formato diferente de datos de entrenamiento.

Los datos de entrenamiento y validación que usa deben tener formato como documento de líneas JSON (JSONL). Para gpt-35-turbo-0613, el conjunto de datos de ajuste preciso debe tener el formato conversacional que usa la API de finalizaciones de chat.

Si desea un tutorial detallado del ajuste preciso de un modelo gpt-35-turbo-0613, consulte el tutorial de ajuste preciso de Azure OpenAI

Formato de archivo de ejemplo

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Formato de archivo de chat de varios turnos

También se admiten varios turnos de una conversación en una sola línea del archivo de entrenamiento jsonl. Para omitir el ajuste específico de los mensajes del asistente, agregue el par de valores de clave opcional weight. Actualmente, weight se puede establecer en 0 o 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Además del formato JSONL, los archivos de datos de entrenamiento y validación deben codificarse en UTF-8 e incluir una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Creación de conjuntos de datos de entrenamiento y validación

Cuantos más ejemplos de entrenamiento tenga, mejor. Los trabajos de ajuste preciso no se llevarán a cabo sin al menos 10 ejemplos de entrenamiento, pero un número tan pequeño no es suficiente para influir notablemente en las respuestas del modelo. Es recomendable proporcionar cientos, o incluso miles, de ejemplos de entrenamiento para llevarlos a cabo correctamente.

En general, al duplicar el tamaño del conjunto de datos se puede producir un aumento lineal de la calidad del modelo. Sin embargo, tenga en cuenta que los ejemplos de baja calidad pueden afectar negativamente al rendimiento. Si entrena el modelo en una gran cantidad de datos internos, sin eliminar primero el conjunto de datos solo para los ejemplos de mayor calidad, podría acabar con un modelo que funciona mucho peor de lo esperado.

Carga de los datos de aprendizaje

El siguiente paso consiste en elegir los datos de entrenamiento que ya están preparados o cargar nuevos datos de entrenamiento que se usarán al personalizar el modelo. Cuando haya preparado los datos de entrenamiento, puede cargar los archivos en el servicio. Hay dos maneras de cargar los datos de entrenamiento:

En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Los archivos grandes pueden volverse inestables cuando se cargan a través de formularios multiparte porque las solicitudes son atómicas y no se pueden volver a intentar o reanudar. Para obtener más información acerca de Azure Blob Storage, consulte ¿Qué es Azure Blob Storage?

Nota:

Los archivos de datos de entrenamiento deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

En el siguiente ejemplo de Python se cargan archivos de entrenamiento y validación locales mediante el SDK de Python y se recuperan los identificadores de archivo devueltos.

# Upload fine-tuning files

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-05-01-preview"  # This API version or later is required to access seed/events/checkpoint capabilities
)

training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

# Upload the training and validation dataset files to Azure OpenAI with the SDK.

training_response = client.files.create(
    file=open(training_file_name, "rb"), purpose="fine-tune"
)
training_file_id = training_response.id

validation_response = client.files.create(
    file=open(validation_file_name, "rb"), purpose="fine-tune"
)
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Creación de un modelo personalizado

Después de cargar los archivos de entrenamiento y validación, ya estará listo para iniciar el trabajo de ajuste preciso.

El siguiente código de Python muestra un ejemplo de cómo crear un nuevo trabajo de ajuste preciso con el SDK de Python:

En este ejemplo también se pasa el parámetro de inicialización. La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente.

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
    seed = 105  # seed parameter controls reproducibility of the fine-tuning job. If no seed is specified one will be generated automatically.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

También puede pasar parámetros opcionales adicionales, como hiperparámetros, para tomar un mayor control del proceso de ajuste preciso. Para el entrenamiento inicial, se recomienda usar los valores predeterminados automáticos que están presentes sin especificar estos parámetros.

Los hiperparámetros admitidos actualmente para el ajuste preciso son:

Nombre Tipo Descripción
batch_size integer El tamaño del lote a usar para el entrenamiento. El tamaño del lote es el número de ejemplos de entrenamiento usados para entrenar una sola pasada hacia adelante y hacia atrás. En general, hemos comprobado que los tamaños de lote más grandes tienden a funcionar mejor para conjuntos de datos más grandes. El valor predeterminado, así como el valor máximo de esta propiedad, son específicos de un modelo base. Un tamaño de lote mayor significa que los parámetros del modelo se actualizan con menos frecuencia, pero con una varianza menor.
learning_rate_multiplier number El multiplicador de la tasa de aprendizaje que se usará para el entrenamiento. La tasa de aprendizaje de ajuste es la tasa de aprendizaje original que se usó para el preentrenamiento multiplicada por este valor. Las tasas de aprendizaje más grandes tienden a mejorar con tamaños de lote más grandes. Se recomienda experimentar con valores en el rango de 0,02 a 0,2 para ver qué produce los mejores resultados. Una velocidad de aprendizaje más pequeña puede ser útil para evitar el sobreajuste.
n_epochs integer El número de épocas para entrenar el modelo. Una época se refiere a un ciclo completo a través del conjunto de datos de entrenamiento.
seed integer La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente.

Para establecer hiperparámetros personalizados con la versión 1.x de la API de Python de OpenAI:

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
  hyperparameters={
    "n_epochs":2
  }
)

Comprobación del estado del trabajo de ajuste preciso

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Enumeración de eventos de ajuste preciso

Para examinar los eventos individuales de ajuste que se generaron durante el entrenamiento:

Es posible que tenga que actualizar la biblioteca cliente de OpenAI a la versión más reciente con pip install openai --upgrade para ejecutar este comando.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Puntos de control

Cuando finaliza cada época de entrenamiento, se genera un punto de control. Un punto de control es una versión totalmente funcional de un modelo que puede implementarse y usarse como modelo de destino para posteriores trabajos de ajuste. Los puntos de control pueden ser especialmente útiles, ya que pueden proporcionar una instantánea de su modelo antes de que se haya producido el sobreajuste. Cuando finalice un trabajo de ajuste, dispondrá de las tres versiones más recientes del modelo para implementarlas. La última época estará representada por su modelo ajustado, las dos épocas anteriores estarán disponibles como puntos de control.

Puede ejecutar el comando para listar puntos de control para recuperar la lista de puntos de control asociados a un trabajo de ajuste individual:

Es posible que tenga que actualizar la biblioteca cliente de OpenAI a la versión más reciente con pip install openai --upgrade para ejecutar este comando.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Evaluación de seguridad GPT-4, GPT-4o, GPT-4o-mini ajuste - versión preliminar pública

GPT-4o, GPT-4o-mini y GPT-4 son nuestros modelos más avanzados que se pueden ajustar a sus necesidades. Al igual que con los modelos de Azure OpenAI generalmente, las funcionalidades avanzadas de los modelos optimizados incluyen mayores desafíos de inteligencia artificial responsables relacionados con contenido dañino, manipulación, comportamiento similar al humano, problemas de privacidad y mucho más. Obtenga más información sobre los riesgos, las funcionalidades y las limitaciones de la Introducción a las prácticas de inteligencia artificial responsable y Nota sobre transparencia. Para ayudar a mitigar los riesgos asociados a modelos avanzados ajustados, hemos implementado pasos de evaluación adicionales para ayudar a detectar y evitar contenido dañino en el entrenamiento y salidas de modelos ajustados. Estos pasos se basan en Microsoft Responsible AI Standard y el filtrado de contenido de Azure OpenAI Service.

  • Las evaluaciones se realizan en áreas de trabajo dedicadas, específicas del cliente y privadas;
  • Los puntos de conexión de evaluación se encuentran en la misma geografía que el recurso de Azure OpenAI;
  • Los datos de entrenamiento no se almacenan en conexión con la realización de evaluaciones; solo se conserva la evaluación final del modelo (que se puede implementar o no se puede implementar);

Los filtros de evaluación de modelos ajustados GPT-4o, GPT-4o-mini y GPT-4 están configurados según umbrales predefinidos y los clientes no pueden modificarlos; no están vinculados a ninguna configuración de filtrado de contenido personalizada que pueda haber creado.

Evaluación de datos

Antes de comenzar el entrenamiento, los datos se evalúan para contenido potencialmente dañino (violencia, sexual, odio y imparcialidad, ver: definiciones de categorías aquí). Si se detecta contenido perjudicial por encima del nivel de gravedad especificado, se producirá un error en el trabajo de entrenamiento y recibirá un mensaje que le informará de las categorías de error.

Mensaje de ejemplo:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Los datos de entrenamiento se evalúan automáticamente dentro del trabajo de importación de datos como parte de proporcionar la funcionalidad de ajuste preciso.

Si se produce un error en el trabajo de ajuste debido a la detección de contenido dañino en los datos de entrenamiento, no se le cobrará.

Evaluación del modelo

Una vez completado el entrenamiento, pero antes de que el modelo optimizado esté disponible para la implementación, el modelo resultante se evalúa para las respuestas potencialmente perjudiciales mediante las métricas de riesgo y seguridad de Azure integradas. Con el mismo enfoque para probar que usamos para los modelos de lenguaje grandes base, nuestra capacidad de evaluación simula una conversación con su modelo ajustado para evaluar el potencial de generar contenido perjudicial, de nuevo usando contenido dañino especificado categorías (violencia, violencia, odio y equidad, autolesiones).

Si se encuentra un modelo para generar una salida que contenga contenido detectado como perjudicial por encima de una tasa aceptable, se le informará de que el modelo no está disponible para la implementación, con información sobre las categorías específicas de daño detectadas:

Mensajes de ejemplo:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Captura de pantalla de un trabajo de ajuste correcto con errores debido a la evaluación de seguridad

Al igual que con la evaluación de datos, el modelo se evalúa automáticamente dentro del trabajo de ajuste preciso como parte de proporcionar la funcionalidad de ajuste preciso. El servicio registra solo la evaluación resultante (implementable o no implementable). Si se produce un error en la implementación del modelo optimizado debido a la detección de contenido dañino en las salidas del modelo, no se le cobrará por la ejecución de entrenamiento.

Implementación de un modelo ajustado

Cuando el trabajo de ajuste se realiza correctamente, el valor de la variable fine_tuned_model en el cuerpo de la respuesta se establece en el nombre del modelo personalizado. Ya tiene el modelo disponible para la detección de elementos en la API de modelos de lista. Sin embargo, no puede emitir llamadas de finalización al modelo personalizado hasta que implemente este. Debe implementar el modelo personalizado para poder usarlo con las llamadas de finalización.

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

También puede utilizar Estudio de IA de Azure o CLI de Azure para implementar su modelo personalizado.

Nota:

Solo se permite una implementación para un modelo personalizado. Se produce un error si selecciona un modelo personalizado ya implementado.

A diferencia de los comandos de SDK anteriores, la implementación debe realizarse mediante la API del plano de control que requiere una autorización independiente, una ruta de acceso de API diferente y otra versión de API.

variable Definición
token Hay varias maneras de generar un token de autorización. El método más sencillo para las pruebas iniciales es iniciar Cloud Shell desde Azure Portal. A continuación, ejecute az account get-access-token. Puede usar este token como token de autorización temporal para las pruebas de API. Se recomienda su almacenamiento en una nueva variable de entorno.
subscription Identificador de suscripción para el recurso de Azure OpenAI asociado.
resource_group Nombre del grupo de recursos para el recurso de Azure OpenAI.
resource_name El nombre del recurso de Azure OpenAI.
model_deployment_name Nombre personalizado para la nueva implementación de modelos con ajuste preciso. Este es el nombre al que se hará referencia en el código al efectuar llamadas de finalización de chat.
fine_tuned_model Recupere este valor de los resultados del trabajo de ajuste preciso del paso anterior. Tendrá el siguiente aspecto: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Tendrá que agregar ese valor al archivo JSON deploy_data. Como alternativa, también puede implementar un punto de control, pasando el id. del punto de control que aparecerá en el formato ftchkpt-e559c011ecc04fc68eaa339d8227d02d
import json
import os
import requests

token= os.getenv("<TOKEN>") 
subscription = "<YOUR_SUBSCRIPTION_ID>"  
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}

deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83
            "version": "1"
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Implementación entre regiones

El ajuste preciso admite la implementación de un modelo ajustado en una región diferente a la de la ubicación en la que originalmente se ha ajustado el modelo. También puede implementar en otra suscripción o región.

Las únicas limitaciones son que la nueva región también debe admitir el ajuste preciso y, al implementar entre suscripciones, la cuenta que genera el token de autorización para la implementación debe tener acceso a las suscripciones de origen y de destino.

A continuación se muestra un ejemplo de implementación de un modelo que se ha ajustado en una suscripción o de una región a otra.

import json
import os
import requests

token= os.getenv("<TOKEN>") 

subscription = "<DESTINATION_SUBSCRIPTION_ID>"  
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"

source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"


source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'

model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}



deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"FINE_TUNED_MODEL_NAME">, # This value will look like gpt-35-turbo-0613.ft-0ab3f80e4f2242929258fff45b56a9ce 
            "version": "1",
            "source": source
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Para realizar la implementación entre la misma suscripción, pero distintas regiones, solo tendría que tener grupos de recursos y suscripciones son idénticos para las variables de origen y destino, y solo los nombres de recursos de origen y destino tendrían que ser únicos.

Implementación de un modelo con la CLI de Azure

En el siguiente ejemplo se muestra cómo usar la CLI de Azure para implementar el modelo personalizado. Con la CLI de Azure, debe especificar un nombre para la implementación del modelo personalizado. Para obtener más información sobre cómo usar la CLI de Azure para implementar modelos personalizados, consulte az cognitiveservices account deployment.

Para ejecutar este comando de la CLI de Azure en una ventana de la consola, debe reemplazar los siguientes <marcadores de posición> por los valores correspondientes para el modelo personalizado:

Marcador de posición Valor
<YOUR_AZURE_SUBSCRIPTION> El nombre o id. de la suscripción de Azure.
<YOUR_RESOURCE_GROUP> El nombre del grupo de recursos de Azure.
<YOUR_RESOURCE_NAME> El nombre del recurso de Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> El nombre que quiere usar para la implementación del modelo.
<YOUR_FINE_TUNED_MODEL_ID> El nombre del modelo personalizado.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Uso de un modelo personalizado implementado

Cuando su modelo personalizado se implemente, puede usarlo como cualquier otro modelo implementado. Puede utilizar las Área de juegos de Estudio de IA de Azure para experimentar con su nueva implementación. Puede seguir usando los mismos parámetros con el modelo personalizado, como temperature y max_tokens, como puede hacer con otros modelos implementados. Para los modelos babbage-002 y davinci-002 con ajuste preciso, usará el área de juegos Finalizaciones y la API de finalizaciones. Para los modelos gpt-35-turbo-0613 con ajuste preciso, usará el área de juegos Chat y la API de finalización de chat.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

Análisis del modelo personalizado

Azure OpenAI asocia un archivo de resultado denominado results.csv a cada trabajo de ajuste preciso una vez completado. Puede usar el archivo de resultados para analizar el rendimiento de entrenamiento y validación del modelo personalizado. El id. del archivo de resultados se muestra para cada modelo personalizado; igualmente, puede usar el SDK de Python para recuperar el id. de archivo y descargar el archivo de resultados para su análisis.

En el siguiente ejemplo de Python se recupera el id. del primer archivo de resultados adjunto al trabajo de ajuste preciso del modelo personalizado y, a continuación, se usa el SDK de Python para descargar el archivo en el directorio de trabajo para su análisis.

# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
    result_file_id = response.result_files[0]

retrieve = client.files.retrieve(result_file_id)

# Download the result file.
print(f'Downloading result file: {result_file_id}')

with open(retrieve.filename, "wb") as file:
    result = client.files.content(result_file_id).read()
    file.write(result)

El archivo de resultados es un archivo CSV que contiene una fila de encabezado y una fila para cada paso de entrenamiento que realizó el trabajo de ajuste preciso. El archivo de resultados contiene las columnas siguientes:

Nombre de la columna Descripción
step El número del paso de entrenamiento. Un paso de entrenamiento representa un solo paso, hacia delante y hacia atrás, en un lote de datos de entrenamiento.
train_loss La pérdida del lote de entrenamiento.
train_mean_token_accuracy El porcentaje de token del lote de entrenamiento que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
valid_loss La pérdida del lote de validación.
validation_mean_token_accuracy El porcentaje de tokens en el lote de validación que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
full_valid_loss La pérdida de validación calculada al final de cada época. Cuando el entrenamiento va bien, la pérdida debe disminuir.
full_valid_mean_token_accuracy La precisión media válida de los tokens calculada al final de cada época. Cuando el entrenamiento va bien, la precisión del token debe aumentar.

También puede ver los datos en el archivo de results.csv como trazados en Estudio de IA de Azure. Seleccione el vínculo del modelo entrenado y verá tres gráficos: pérdida, precisión media del token y precisión del token. Si proporcionó datos de validación, ambos conjuntos de datos aparecerán en el mismo trazado.

Intente disminuir la pérdida con el tiempo y aumentar la precisión. Si ve una divergencia entre los datos de entrenamiento y validación que pueden indicar que está sobreajustando. Pruebe un entrenamiento con menos épocas o un multiplicador de velocidad de aprendizaje más pequeño.

Limpieza de implementaciones, modelos personalizados y archivos de entrenamiento

Cuando haya terminado con su modelo personalizado, puede eliminar la implementación y el modelo. También puede eliminar los archivos de entrenamiento y validación que cargó en el servicio, si es necesario.

Eliminar la implementación de modelo

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

Puede usar varios métodos para eliminar la implementación del modelo personalizado:

Eliminación de un modelo personalizado

Del mismo modo, puede usar varios métodos para eliminar el modelo personalizado:

Nota:

No se puede eliminar un modelo personalizado si tiene una implementación existente. Primero debe eliminar la implementación del modelo para poder eliminar el modelo personalizado.

Eliminación de los archivos de entrenamiento

Opcionalmente, puede eliminar los archivos de entrenamiento y validación que cargó para el entrenamiento y los archivos de resultados que se crearon durante el entrenamiento, desde su suscripción a Azure OpenAI. Puede usar los métodos siguientes para eliminar los archivos de entrenamiento, validación y resultado:

En el siguiente ejemplo de Python se usa el SDK de Python para eliminar los archivos de entrenamiento, validación y resultado del modelo personalizado:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
for item in files:
    if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
        results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')

# Enumerate the file IDs for our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Ajuste preciso continuo

Una vez que haya creado un modelo ajustado, es posible que quiera seguir refinando el modelo a lo largo del tiempo a través de un ajuste más preciso. El ajuste continuo es el proceso iterativo de seleccionar un modelo ya ajustado como modelo base y ajustarlo más adelante en nuevos conjuntos de ejemplos de entrenamiento.

Para realizar un ajuste preciso en un modelo que ha ajustado previamente, usaría el mismo proceso que se describe en creación de un modelo personalizado pero, en lugar de especificar el nombre de un modelo base genérico, especificaría el identificador del modelo ya optimizado. El identificador del modelo ajustado es similar a gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  
)

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

También se recomienda incluir el parámetro suffix para facilitar la distinción entre diferentes iteraciones del modelo ajustado. suffix toma una cadena y se establece para identificar el modelo ajustado. Con la API de Python de OpenAI, se admite una cadena de hasta 18 caracteres que se agregará al nombre del modelo optimizado.

Si no está seguro del id. del modelo optimizado existente, esta información se puede encontrar en la página Modelos de Estudio de IA de Azure, o puede generar una lista de modelos para un recurso de Azure OpenAI determinado mediante la API de REST.

Requisitos previos

Models

Los modelos siguientes admiten el ajuste preciso:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (18-07-2024)

* El ajuste preciso de este modelo está actualmente en versión preliminar pública.

O bien, puede realizar el ajuste preciso de un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Consulte la página de modelos para comprobar qué regiones admiten actualmente el ajuste preciso.

Revisión del flujo de trabajo de la API REST

Dedique un momento a revisar el flujo de trabajo de ajuste preciso para usar las API REST y Python con Azure OpenAI:

  1. Prepare los datos de entrenamiento y validación.
  2. Seleccione un modelo base.
  3. Cargue los datos de entrenamiento.
  4. Entrene el nuevo modelo personalizado.
  5. Compruebe el estado del modelo personalizado.
  6. Implemente el modelo personalizado para usarlo.
  7. Use el modelo personalizado.
  8. Opcionalmente, analice el modelo personalizado para mejorar el rendimiento y ajustarlo.

Preparación de los datos de entrenamiento y validación

El conjunto de datos de validación y los datos de entrenamiento consisten en ejemplos de entrada y salida para el rendimiento del modelo.

Los distintos tipos de modelo requieren un formato diferente de datos de entrenamiento.

Los datos de entrenamiento y validación que usa deben tener formato como documento de líneas JSON (JSONL). Para gpt-35-turbo-0613 y otros modelos relacionados, el conjunto de datos de ajuste preciso debe tener el formato conversacional que usa la API de finalizaciones de chat.

Si desea un tutorial detallado del ajuste preciso de un modelo gpt-35-turbo-0613, consulte el tutorial de ajuste preciso de Azure OpenAI.

Formato de archivo de ejemplo

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Formato de archivo de chat de varios turnos

También se admiten varios turnos de una conversación en una sola línea del archivo de entrenamiento jsonl. Para omitir el ajuste específico de los mensajes del asistente, agregue el par de valores de clave opcional weight. Actualmente, weight se puede establecer en 0 o 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Además del formato JSONL, los archivos de datos de entrenamiento y validación deben codificarse en UTF-8 e incluir una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Creación de conjuntos de datos de entrenamiento y validación

Cuantos más ejemplos de entrenamiento tenga, mejor. Los trabajos de ajuste preciso no se llevarán a cabo sin al menos 10 ejemplos de entrenamiento, pero un número tan pequeño no es suficiente para influir notablemente en las respuestas del modelo. Es recomendable proporcionar cientos, o incluso miles, de ejemplos de entrenamiento para llevarlos a cabo correctamente.

En general, al duplicar el tamaño del conjunto de datos se puede producir un aumento lineal de la calidad del modelo. Sin embargo, tenga en cuenta que los ejemplos de baja calidad pueden afectar negativamente al rendimiento. Si entrena el modelo en una gran cantidad de datos internos, sin eliminar primero el conjunto de datos solo para los ejemplos de mayor calidad, podría acabar con un modelo que funciona mucho peor de lo esperado.

Selección del modelo base

El primer paso para crear un modelo personalizado es elegir un modelo base. El panel Modelo base le permite elegir un modelo base que se utilizará para el modelo personalizado. La elección influye tanto en el rendimiento como en el costo del modelo.

Seleccione un modelo base de la lista desplegable Tipo de modelo base y, a continuación, seleccione Siguiente para continuar.

Puede crear un modelo personalizado a partir de uno de los siguientes modelos base disponibles:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (2023-07-18)

O bien, puede realizar el ajuste preciso de un modelo previamente ajustado, con el formato base-model.ft-{jobid}.

Captura de pantalla de las opciones de modelo con un modelo personalizado ajustado.

Para obtener más información sobre los modelos base que se pueden ajustar, consulte Modelos.

Carga de los datos de aprendizaje

El siguiente paso consiste en elegir los datos de entrenamiento que ya están preparados o cargar nuevos datos de entrenamiento que se usarán al realizar el ajuste preciso del modelo. Cuando haya preparado los datos de entrenamiento, puede cargar los archivos en el servicio. Hay dos maneras de cargar los datos de entrenamiento:

En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Los archivos grandes pueden volverse inestables cuando se cargan a través de formularios multiparte porque las solicitudes son atómicas y no se pueden volver a intentar o reanudar. Para obtener más información acerca de Azure Blob Storage, consulte ¿Qué es Azure Blob Storage?

Nota:

Los archivos de datos de entrenamiento deben tener el formato JSONL, estar codificados en UTF-8 con una marca de orden de bytes (BOM). El archivo debe tener un tamaño inferior a 512 MB.

Cargar datos de entrenamiento

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"

Cargar datos de validación

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"

Creación de un modelo personalizado

Después de cargar los archivos de entrenamiento y validación, ya estará listo para iniciar el trabajo de ajuste preciso. El siguiente código muestra un ejemplo de cómo crear un nuevo trabajo de ajuste preciso con la API de REST.

En este ejemplo también se pasa el parámetro de inicialización. La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

También puede pasar parámetros opcionales adicionales, como hiperparámetros, para tomar un mayor control del proceso de ajuste preciso. Para el entrenamiento inicial, se recomienda usar los valores predeterminados automáticos que están presentes sin especificar estos parámetros.

Los hiperparámetros admitidos actualmente para el ajuste preciso son:

Nombre Tipo Descripción
batch_size integer El tamaño del lote a usar para el entrenamiento. El tamaño del lote es el número de ejemplos de entrenamiento usados para entrenar una sola pasada hacia adelante y hacia atrás. En general, hemos comprobado que los tamaños de lote más grandes tienden a funcionar mejor para conjuntos de datos más grandes. El valor predeterminado, así como el valor máximo de esta propiedad, son específicos de un modelo base. Un tamaño de lote mayor significa que los parámetros del modelo se actualizan con menos frecuencia, pero con una varianza menor.
learning_rate_multiplier number El multiplicador de la tasa de aprendizaje que se usará para el entrenamiento. La tasa de aprendizaje de ajuste es la tasa de aprendizaje original que se usó para el preentrenamiento multiplicada por este valor. Las tasas de aprendizaje más grandes tienden a mejorar con tamaños de lote más grandes. Se recomienda experimentar con valores en el rango de 0,02 a 0,2 para ver qué produce los mejores resultados. Una velocidad de aprendizaje más pequeña puede ser útil para evitar el sobreajuste.
n_epochs integer El número de épocas para entrenar el modelo. Una época se refiere a un ciclo completo a través del conjunto de datos de entrenamiento.
seed integer La inicialización controla la reproducibilidad del trabajo. Pasar los mismos parámetros de inicialización y trabajo debe generar los mismos resultados, pero puede diferir en raras ocasiones. Si no se especifica un valor de inicialización, se generará uno automáticamente.

Compruebe el estado del modelo personalizado

Después de haber iniciado un trabajo de ajuste preciso, puede tardar algo de tiempo en completarse. Es posible que el trabajo esté en cola detrás de otros trabajos del sistema. Entrenar el modelo puede tardar minutos u horas, dependiendo del modelo y del tamaño del conjunto de datos. En el siguiente ejemplo se usa la API REST para comprobar el estado del trabajo de ajuste preciso. En el ejemplo se recupera información sobre el trabajo mediante el id. de trabajo devuelto del ejemplo anterior:

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Enumeración de eventos de ajuste preciso

Para examinar los eventos individuales de ajuste que se generaron durante el entrenamiento:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/events?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Puntos de control

Cuando finaliza cada época de entrenamiento, se genera un punto de control. Un punto de control es una versión totalmente funcional de un modelo que puede implementarse y usarse como modelo de destino para posteriores trabajos de ajuste. Los puntos de control pueden ser especialmente útiles, ya que pueden proporcionar una instantánea de su modelo antes de que se haya producido el sobreajuste. Cuando finalice un trabajo de ajuste, dispondrá de las tres versiones más recientes del modelo para implementarlas. La última época estará representada por su modelo ajustado, las dos épocas anteriores estarán disponibles como puntos de control.

Puede ejecutar el comando para listar puntos de control para recuperar la lista de puntos de control asociados a un trabajo de ajuste individual:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Evaluación de seguridad GPT-4, GPT-4o, GPT-4o-mini ajuste - versión preliminar pública

GPT-4o, GPT-4o-mini y GPT-4 son nuestros modelos más avanzados que se pueden ajustar a sus necesidades. Al igual que con los modelos de Azure OpenAI generalmente, las funcionalidades avanzadas de los modelos optimizados incluyen mayores desafíos de inteligencia artificial responsables relacionados con contenido dañino, manipulación, comportamiento similar al humano, problemas de privacidad y mucho más. Obtenga más información sobre los riesgos, las funcionalidades y las limitaciones de la Introducción a las prácticas de inteligencia artificial responsable y Nota sobre transparencia. Para ayudar a mitigar los riesgos asociados a modelos avanzados ajustados, hemos implementado pasos de evaluación adicionales para ayudar a detectar y evitar contenido dañino en el entrenamiento y salidas de modelos ajustados. Estos pasos se basan en Microsoft Responsible AI Standard y el filtrado de contenido de Azure OpenAI Service.

  • Las evaluaciones se realizan en áreas de trabajo dedicadas, específicas del cliente y privadas;
  • Los puntos de conexión de evaluación se encuentran en la misma geografía que el recurso de Azure OpenAI;
  • Los datos de entrenamiento no se almacenan en conexión con la realización de evaluaciones; solo se conserva la evaluación final del modelo (que se puede implementar o no se puede implementar);

Los filtros de evaluación de modelos ajustados GPT-4o, GPT-4o-mini y GPT-4 están configurados según umbrales predefinidos y los clientes no pueden modificarlos; no están vinculados a ninguna configuración de filtrado de contenido personalizada que pueda haber creado.

Evaluación de datos

Antes de comenzar el entrenamiento, los datos se evalúan para contenido potencialmente dañino (violencia, sexual, odio y imparcialidad, ver: definiciones de categorías aquí). Si se detecta contenido perjudicial por encima del nivel de gravedad especificado, se producirá un error en el trabajo de entrenamiento y recibirá un mensaje que le informará de las categorías de error.

Mensaje de ejemplo:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Los datos de entrenamiento se evalúan automáticamente dentro del trabajo de importación de datos como parte de proporcionar la funcionalidad de ajuste preciso.

Si se produce un error en el trabajo de ajuste debido a la detección de contenido dañino en los datos de entrenamiento, no se le cobrará.

Evaluación del modelo

Una vez completado el entrenamiento, pero antes de que el modelo optimizado esté disponible para la implementación, el modelo resultante se evalúa para las respuestas potencialmente perjudiciales mediante las métricas de riesgo y seguridad de Azure integradas. Con el mismo enfoque para probar que usamos para los modelos de lenguaje grandes base, nuestra capacidad de evaluación simula una conversación con su modelo ajustado para evaluar el potencial de generar contenido perjudicial, de nuevo usando contenido dañino especificado categorías (violencia, violencia, odio y equidad, autolesiones).

Si se encuentra un modelo para generar una salida que contenga contenido detectado como perjudicial por encima de una tasa aceptable, se le informará de que el modelo no está disponible para la implementación, con información sobre las categorías específicas de daño detectadas:

Mensajes de ejemplo:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Captura de pantalla de un trabajo de ajuste correcto con errores debido a la evaluación de seguridad

Al igual que con la evaluación de datos, el modelo se evalúa automáticamente dentro del trabajo de ajuste preciso como parte de proporcionar la funcionalidad de ajuste preciso. El servicio registra solo la evaluación resultante (implementable o no implementable). Si se produce un error en la implementación del modelo optimizado debido a la detección de contenido dañino en las salidas del modelo, no se le cobrará por la ejecución de entrenamiento.

Implementación de un modelo ajustado

Importante

Después de implementar un modelo personalizado, si en cualquier momento la implementación permanece inactiva durante más de quince (15) días, la implementación se eliminará automáticamente. La implementación de un modelo personalizado es inactivasi el modelo se ha implementado hace más de quince (15) días y no se han realizado finalizaciones ni llamadas de finalización de chat durante un período continuo de 15 días.

La eliminación de una implementación inactiva no elimina ni afecta al modelo personalizado subyacente, y el modelo personalizado se puede volver a implementar en cualquier momento. Como se describe en Precios de Azure OpenAI Service, cada modelo personalizado (ajustado a sus preferencias) que se implementa incurre en un costo de hospedaje por hora, independientemente de si se realizan finalizaciones o llamadas de finalización de chat al modelo. Para obtener más información sobre cómo planear y administrar los costos con Azure OpenAI, consulte la guía de Planeamiento para administrar los costos Azure OpenAI Service.

En el siguiente ejemplo de Python se muestra cómo usar la API de REST para crear una implementación de modelos para el modelo personalizado. La API de REST genera un nombre para la implementación del modelo personalizado.

variable Definición
token Hay varias maneras de generar un token de autorización. El método más sencillo para las pruebas iniciales es iniciar Cloud Shell desde Azure Portal. A continuación, ejecute az account get-access-token. Puede usar este token como token de autorización temporal para las pruebas de API. Se recomienda su almacenamiento en una nueva variable de entorno.
subscription Identificador de suscripción para el recurso de Azure OpenAI asociado.
resource_group Nombre del grupo de recursos para el recurso de Azure OpenAI.
resource_name El nombre del recurso de Azure OpenAI.
model_deployment_name Nombre personalizado para la nueva implementación de modelos con ajuste preciso. Este es el nombre al que se hará referencia en el código al efectuar llamadas de finalización de chat.
fine_tuned_model Recupere este valor de los resultados del trabajo de ajuste preciso del paso anterior. Tendrá el siguiente aspecto: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Tendrá que agregar ese valor al archivo JSON deploy_data. Como alternativa, también puede implementar un punto de control, pasando el id. del punto de control que aparecerá en el formato ftchkpt-e559c011ecc04fc68eaa339d8227d02d
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

Implementación entre regiones

El ajuste preciso admite la implementación de un modelo ajustado en una región diferente a la de la ubicación en la que originalmente se ha ajustado el modelo. También puede implementar en otra suscripción o región.

Las únicas limitaciones son que la nueva región también debe admitir el ajuste preciso y, al implementar entre suscripciones, la cuenta que genera el token de autorización para la implementación debe tener acceso a las suscripciones de origen y de destino.

A continuación se muestra un ejemplo de implementación de un modelo que se ha ajustado en una suscripción o de una región a otra.

curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>", 
            "version": "1",
            "source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}" 
        }
    }
}'

Para realizar la implementación entre la misma suscripción, pero distintas regiones, solo tendría que tener grupos de recursos y suscripciones son idénticos para las variables de origen y destino, y solo los nombres de recursos de origen y destino tendrían que ser únicos.

Implementación de un modelo con la CLI de Azure

En el siguiente ejemplo se muestra cómo usar la CLI de Azure para implementar el modelo personalizado. Con la CLI de Azure, debe especificar un nombre para la implementación del modelo personalizado. Para obtener más información sobre cómo usar la CLI de Azure para implementar modelos personalizados, consulte az cognitiveservices account deployment.

Para ejecutar este comando de la CLI de Azure en una ventana de la consola, debe reemplazar los siguientes <marcadores de posición> por los valores correspondientes para el modelo personalizado:

Marcador de posición Valor
<YOUR_AZURE_SUBSCRIPTION> El nombre o id. de la suscripción de Azure.
<YOUR_RESOURCE_GROUP> El nombre del grupo de recursos de Azure.
<YOUR_RESOURCE_NAME> El nombre del recurso de Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> El nombre que quiere usar para la implementación del modelo.
<YOUR_FINE_TUNED_MODEL_ID> El nombre del modelo personalizado.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Uso de un modelo personalizado implementado

Cuando su modelo personalizado se implemente, puede usarlo como cualquier otro modelo implementado. Puede utilizar las Área de juegos de Estudio de IA de Azure para experimentar con su nueva implementación. Puede seguir usando los mismos parámetros con el modelo personalizado, como temperature y max_tokens, como puede hacer con otros modelos implementados. Para los modelos babbage-002 y davinci-002 con ajuste preciso, usará el área de juegos Finalizaciones y la API de finalizaciones. Para los modelos gpt-35-turbo-0613 con ajuste preciso, usará el área de juegos Chat y la API de finalización de chat.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

Análisis del modelo personalizado

Azure OpenAI asocia un archivo de resultado denominado results.csv a cada trabajo de ajuste preciso una vez completado. Puede usar el archivo de resultados para analizar el rendimiento de entrenamiento y validación del modelo personalizado. El id. del archivo de resultados se muestra para cada modelo personalizado; igualmente, puede usar la API de REST para recuperar el id. de archivo y descargar el archivo de resultados para su análisis.

En el siguiente ejemplo de Python se usa la API de REST para recuperar el id. del primer archivo de resultados adjunto al trabajo de ajuste preciso del modelo personalizado y, a continuación, se descarga el archivo en el directorio de trabajo para su análisis.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

El archivo de resultados es un archivo CSV que contiene una fila de encabezado y una fila para cada paso de entrenamiento que realizó el trabajo de ajuste preciso. El archivo de resultados contiene las columnas siguientes:

Nombre de la columna Descripción
step El número del paso de entrenamiento. Un paso de entrenamiento representa un solo paso, hacia delante y hacia atrás, en un lote de datos de entrenamiento.
train_loss La pérdida del lote de entrenamiento.
train_mean_token_accuracy El porcentaje de token del lote de entrenamiento que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
valid_loss La pérdida del lote de validación.
validation_mean_token_accuracy El porcentaje de tokens en el lote de validación que el modelo predijo correctamente.
Por ejemplo, si el tamaño del lote se establece en 3 y los datos contienen finalizaciones de tipo [[1, 2], [0, 5], [4, 2]], este valor se establece en 0,83 (5 de 6) si el modelo predijo [[1, 1], [0, 5], [4, 2]].
full_valid_loss La pérdida de validación calculada al final de cada época. Cuando el entrenamiento va bien, la pérdida debe disminuir.
full_valid_mean_token_accuracy La precisión media válida de los tokens calculada al final de cada época. Cuando el entrenamiento va bien, la precisión del token debe aumentar.

También puede ver los datos en el archivo de results.csv como trazados en Estudio de IA de Azure. Seleccione el vínculo del modelo entrenado y verá tres gráficos: pérdida, precisión media del token y precisión del token. Si proporcionó datos de validación, ambos conjuntos de datos aparecerán en el mismo trazado.

Intente disminuir la pérdida con el tiempo y aumentar la precisión. Si ve una divergencia entre los datos de entrenamiento y validación que pueden indicar que está sobreajustando. Pruebe un entrenamiento con menos épocas o un multiplicador de velocidad de aprendizaje más pequeño.

Limpieza de implementaciones, modelos personalizados y archivos de entrenamiento

Cuando haya terminado con su modelo personalizado, puede eliminar la implementación y el modelo. También puede eliminar los archivos de entrenamiento y validación que cargó en el servicio, si es necesario.

Eliminar la implementación de modelo

Puede usar varios métodos para eliminar la implementación del modelo personalizado:

Eliminación de un modelo personalizado

Del mismo modo, puede usar varios métodos para eliminar el modelo personalizado:

Nota:

No se puede eliminar un modelo personalizado si tiene una implementación existente. Primero debe eliminar la implementación del modelo para poder eliminar el modelo personalizado.

Eliminación de los archivos de entrenamiento

Opcionalmente, puede eliminar los archivos de entrenamiento y validación que cargó para el entrenamiento y los archivos de resultados que se crearon durante el entrenamiento, desde su suscripción a Azure OpenAI. Puede usar los métodos siguientes para eliminar los archivos de entrenamiento, validación y resultado:

Ajuste preciso continuo

Una vez que haya creado un modelo ajustado, es posible que quiera seguir refinando el modelo a lo largo del tiempo a través de un ajuste más preciso. El ajuste continuo es el proceso iterativo de seleccionar un modelo ya ajustado como modelo base y ajustarlo más adelante en nuevos conjuntos de ejemplos de entrenamiento.

Para realizar un ajuste preciso en un modelo que ha ajustado previamente, usaría el mismo proceso que se describe en creación de un modelo personalizado pero, en lugar de especificar el nombre de un modelo base genérico, especificaría el identificador del modelo ya optimizado. El identificador del modelo ajustado es similar a gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

También se recomienda incluir el parámetro suffix para facilitar la distinción entre diferentes iteraciones del modelo ajustado. suffix toma una cadena y se establece para identificar el modelo ajustado. El sufijo puede contener hasta 40 caracteres (a-z, A-Z, 0-9 y _) que se agregarán al nombre del modelo ajustado.

Si no está seguro del identificador del modelo optimizado, esta información se puede encontrar en la página Modelos de Estudio de IA de Azure, o puede generar una lista de modelos para un recurso de Azure OpenAI determinado mediante la API de REST.

Solución de problemas

¿Cómo se habilita el ajuste preciso? ¿Está atenuada la opción para crear un modelo personalizado en Azure OpenAI Studio?

Para acceder correctamente al ajuste preciso, necesita Colaborador de OpenAI de Cognitive Services asignado. Incluso alguien con permisos de administrador de servicios de alto nivel necesitaría esta cuenta establecida explícitamente para acceder al ajuste preciso. Para más información, consulte las instrucciones de control de acceso basado en rol.

¿Por qué se produjo un error en la carga?

Si se produce un error en la carga de archivos en Azure OpenAI Studio, puede ver el mensaje de error en "archivos de datos". Mantenga el mouse sobre la zona que pone "error" (en la columna de estado) y aparecerá una explicación del error.

Captura de pantalla del mensaje de error de ajuste preciso.

Mi modelo con ajuste preciso no parece haber mejorado

  • Mensaje de sistema que falta: tiene que proporcionar un mensaje de sistema cuando realice un ajuste preciso; posiblemente querrá proporcionar ese mismo mensaje de sistema cuando use el modelo con ajuste preciso. Si proporciona un mensaje de sistema diferente, es posible que vea resultados diferentes a aquellos para los que realizó el ajuste.

  • Datos insuficientes: mientras que 10 es el mínimo para que se ejecute la canalización, necesita cientos de puntos de datos, o incluso miles, para enseñar al modelo una nueva aptitud. Con muy pocos puntos de datos se corre el riesgo de un sobreajuste y una generalización deficiente. El modelo con ajuste preciso puede funcionar bien en los datos de entrenamiento pero de manera deficiente en otros datos porque ha memorizado los ejemplos de entrenamiento en lugar de los patrones de aprendizaje. Para obtener los mejores resultados, planee preparar un conjunto de datos con cientos o miles de puntos de datos.

  • Datos incorrectos: un conjunto de datos mal mantenido o no representativo producirá un modelo de baja calidad. El modelo puede aprender patrones inexactos o sesgados del conjunto de datos. Por ejemplo, si está entrenando un bot de chat para el servicio al cliente, pero solo proporciona datos de entrenamiento para un escenario (por ejemplo, devoluciones de artículos), no sabrá cómo responder en otros escenarios. O, si los datos de entrenamiento son incorrectos (contiene respuestas incorrectas), el modelo aprenderá a proporcionar resultados incorrectos.

Pasos siguientes