Compartir a través de


Ajuste de los modelos mediante implementaciones estándar en Azure AI Foundry

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 para las versiones preliminares de Microsoft Azure.

Azure AI Foundry le permite personalizar modelos de lenguaje de gran tamaño a los conjuntos de datos específicos a través de un proceso denominado ajuste preciso. Este proceso ofrece ventajas significativas al permitir la personalización y la optimización adaptadas a tareas y aplicaciones específicas. Las ventajas incluyen rendimiento mejorado, rentabilidad, latencia reducida y salidas adaptadas.

Rentabilidad: el ajuste fino de Azure AI Foundry puede ser más rentable, especialmente para implementaciones a gran escala, gracias a los precios estándar.

Variedad de modelos: la optimización estándar de la implementación estándar de Azure AI Foundry ofrece compatibilidad con modelos propietarios y de código abierto, lo que proporciona a los usuarios la flexibilidad de seleccionar los modelos que mejor se adapten a sus necesidades sin restringirse a un solo tipo.

Personalización y control: Azure AI Foundry proporciona una mayor personalización y control sobre el proceso de ajuste preciso, lo que permite a los usuarios adaptar modelos de forma más precisa a sus requisitos específicos.

En este artículo, descubrirá cómo ajustar los modelos que se implementan mediante implementaciones estándar en Azure AI Foundry.

Prerrequisitos

  • Una suscripción de Azure con un método de pago válido. Las suscripciones gratuitas o de evaluación de Azure no funcionarán. Si no tiene una suscripción de Azure, cree una cuenta de Azure de pago para comenzar.

  • Acceso a Azure Portal.

  • Un proyecto de Azure AI Foundry.

  • Los controles de acceso basados en roles de Azure (Azure RBAC) se utilizan para otorgar acceso a las operaciones en el portal de Azure AI Foundry. Para realizar los pasos descritos en este artículo, la cuenta de usuario debe tener asignado el rol de propietario o colaborador para la suscripción de Azure. Para más información sobre los permisos, consulte el control de acceso basado en roles en el portal de Azure AI Foundry.

Comprobación del registro del proveedor de suscripciones

Compruebe que la suscripción está registrada en el proveedor de recursos Microsoft.Network.

  1. Inicie sesión en Azure Portal.
  2. Seleccione Suscripciones en el menú izquierdo.
  3. Seleccione la suscripción que quiere usar.
  4. Seleccione Configuración>Proveedores de recursos en el menú izquierdo.
  5. Agregue Microsoft.Network a la lista de proveedores de recursos si no está en la lista.

Búsqueda de modelos con compatibilidad con ajuste preciso

El catálogo de modelos de AI Foundry ofrece compatibilidad con la optimización de varios tipos de modelos, incluidas las finalizaciones de chat y la generación de texto. Para obtener una lista de los modelos que admiten el ajuste preciso y las regiones de Azure compatibles con el ajuste preciso, consulte Disponibilidad de regiones para los modelos como implementación estándar. Las tareas de ajuste preciso solo están disponibles para los usuarios cuya suscripción de Azure pertenece a una cuenta de facturación en un país o región en el que el proveedor de modelos ha puesto la oferta a disposición. Si la oferta está disponible en la región pertinente, el usuario debe tener un recurso de proyecto en la región de Azure donde el modelo esté disponible para la implementación u optimización, según corresponda.

También puede ir al portal de Azure AI Foundry para ver todos los modelos que contienen compatibilidad con el ajuste preciso:

  1. Inicie sesión en Azure AI Foundry.

  2. Si aún no estás en tu proyecto, selecciónalo.

  3. Vaya al catálogo de modelos.

  4. Seleccione el filtro tareas de ajuste.

    Captura de pantalla de las opciones de filtro de ajuste del catálogo de modelos.

  5. Seleccione Todos o seleccione una tarea específica.

Preparar datos para el ajuste preciso

Preparación de los datos de entrenamiento y validación para el ajuste preciso del modelo Los datos de entrenamiento y validación constan de ejemplos de entrada y salida para saber cómo desea que se realice el modelo.

Asegúrese de que todos los ejemplos de entrenamiento siguen el formato esperado para la inferencia. Para ajustar los modelos de forma eficaz, asegúrese de un conjunto de datos diverso manteniendo el equilibrio de datos, incluidos varios escenarios, y refinando periódicamente los datos de entrenamiento para alinearse con las expectativas del mundo real. Estas acciones, en última instancia, conducen a respuestas de modelo más precisas y equilibradas.

Sugerencia

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

Formato de archivo de ejemplo

El tipo de archivo admitido es líneas JSON. Los archivos se cargan en el almacén de datos predeterminado y están disponibles en el proyecto.

    {"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?"}]}

Usar el Asistente para el ajuste preciso de modelos

El portal de Azure AI Foundry proporciona el Asistente para crear modelos personalizados, por lo que puede crear y entrenar de forma interactiva un modelo optimizado para el recurso de Azure.

Selección del modelo base

  1. Elija el modelo que quiera ajustar del catálogo de modelo del portal de Azure AI Foundry.
  2. En la página Detalles del modelo, seleccione Ajustar. Algunos modelos básicos admiten la implementación estándar y el proceso administrado, mientras que otros admiten uno o otro.
  3. Si se le presentan las opciones de implementación estándar y computación gestionada, seleccione implementación estándar para ajustes. Esta acción abre un asistente que muestra información sobre el ajuste estándar del 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.

  • Si los datos de entrenamiento ya se han cargado en el servicio, seleccione Archivos en Azure AI Foundry.
    • Seleccione el archivo en la lista desplegable que se muestra.
  • Para cargar nuevos datos de entrenamiento, use una de las siguientes opciones:
    • Seleccione Archivo local para cargar datos de entrenamiento desde un archivo local.
    • Seleccione Blob de Azure u otras ubicaciones web compartidas para importar datos de entrenamiento desde Azure Blob u otra ubicación web compartida.

En cuanto a los archivos de datos grandes, le recomendamos que los importe desde el almacén de blobs de Azure. Para obtener más información acerca de Azure Blob Storage, consulte ¿Qué es Azure Blob Storage?

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 Examinar un archivo en el área cliente del panel Datos de entrenamiento, elija el archivo que se va a 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.

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.

Dividir datos de entrenamiento

Puede dividir automáticamente los datos de entrenamiento para generar un conjunto de datos de validación. Después de seleccionar División automática de datos de entrenamiento, seleccione Siguiente para continuar.

Uso de datos existentes en Azure AI Foundry

  • Si los datos de validación ya se han cargado en el servicio, seleccione Elegir conjunto de datos.
    • Seleccione el archivo de la lista que se muestra en el panel Datos de validación.
  • Para cargar nuevos datos de validación, use una de las siguientes opciones:
    • Seleccione Archivo local para cargar datos de validación desde un archivo local.
    • Seleccione Blob de Azure u otras ubicaciones web compartidas para importar datos de validación desde azure Blob u otra ubicación web compartida. 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:

  • De forma similar a los archivos de datos de entrenamiento, los archivos de datos de validación deben tener el formato JSONL,
  • codificado 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 Examinar un archivo en el área cliente del panel Datos de validación , elija el archivo que se va a cargar en el cuadro de diálogo Open y, a continuación, seleccione Cargar archivo. Después de seleccionar y cargar el conjunto de datos de validación, seleccione Siguiente para continuar.

Configuración de los parámetros de la tarea

El Asistente para el ajuste preciso de modelos muestra los parámetros para entrenar el modelo optimizado en el panel Parámetros de tarea. Están disponibles los siguientes parámetros:

Nombre Tipo Descripción
batch_size entero El tamaño del lote a usar para el entrenamiento. El tamaño del lote es el número de ejemplos de entrenamiento utilizados para entrenar una 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 número El multiplicador de la tasa de aprendizaje que se usará para el entrenamiento. La tasa de aprendizaje de ajuste fino 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 entero 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.

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.

Si está listo para entrenar el modelo, seleccione Iniciar trabajo de entrenamiento para iniciar el trabajo de ajuste preciso y volver a la pestaña Modelos .

Comprobación del estado del modelo personalizado

La pestaña Ajuste preciso muestra información sobre el modelo personalizado. La pestaña incluye información sobre el estado y el id. de trabajo del proceso de ajuste preciso para el 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 del panel de proyectos en ejecución.

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 la pestaña Modelos :

  • Compruebe el estado del trabajo de ajuste para el 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 Actualizar para actualizar la información de la página.

Captura de pantalla del panel de detalles de ajuste.

Escenarios empresariales compatibles para el ajuste preciso

Se admiten varios escenarios empresariales para la optimización de la implementación estándar. En la tabla siguiente se describen las configuraciones admitidas para la conexión en red y la autenticación de almacenamiento de usuarios para garantizar un funcionamiento sin problemas en escenarios empresariales:

Nota:

  • La autenticación de conexiones de datos se puede cambiar a través de AI Foundry haciendo clic en la conexión de almacén de datos donde está guardado su conjunto de datos y navegando a la configuración Detalles de acceso>Método de autenticación.
  • La autenticación de almacenamiento se puede cambiar en Azure Storage >Configuración> página Configuraciones>Permitir el acceso a la clave de la cuenta de almacenamiento.
  • La conexión en red de almacenamiento se pueden cambiar en Azure Storage > página Redes.
Conexión en red de almacenamiento. Autenticación de almacenamiento Autenticación de conexión de datos Apoyo
Acceso a la red pública: habilitado Clave de cuenta habilitada SAS/clave de cuenta Sí, experiencia de usuario y SDK
Acceso a la red pública: habilitado Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK

Nota: Para la experiencia de usuario, es posible que tenga que agregar el rol de lector de datos de Storage Blob o de colaborador de datos de Storage Blob para el identificador de usuario de la cuenta de almacenamiento, o bien cambiar la autenticación de la conexión para usar la clave de cuenta o el token de SAS.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta habilitada Clave de cuenta Sí, experiencia de usuario y SDK

Nota: para la experiencia del usuario, la dirección IP del proceso que ejecuta el explorador debe estar en la lista seleccionada.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta habilitada SAS Sí, experiencia de usuario y SDK

Nota: para la experiencia del usuario, la dirección IP del proceso que ejecuta el explorador debe estar en la lista seleccionada.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK.

Nota: Para la experiencia de usuario, es posible que tenga que agregar el rol de lector de datos de Storage Blob o de colaborador de datos de Storage Blob para el identificador de usuario de la cuenta de almacenamiento, o bien cambiar la autenticación de la conexión para usar la clave de cuenta o el token de SAS. Asegúrese también de que la dirección IP del proceso que ejecuta el explorador esté en la lista seleccionada.
Acceso a la red pública: deshabilitado Clave de cuenta habilitada SAS/clave de cuenta Sí, experiencia de usuario y SDK.

Nota: Para que la carga y el envío de datos de la experiencia de usuario funcionen, es necesario tener acceso al área de trabajo desde la red virtual que tenga el acceso adecuado al almacenamiento.
Acceso a la red pública: deshabilitado Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK.

Nota: Para que la carga y el envío de datos de la experiencia de usuario funcionen, es necesario tener acceso al área de trabajo desde la red virtual que tenga el acceso adecuado al almacenamiento.

Los escenarios anteriores también deben funcionar en un área de trabajo de red virtual administrada. Consulte la configuración de Managed Vnet AI Foundry Hub aquí: Configuración de una red administrada para centros de Azure AI Foundry

Las claves administradas por el cliente (CMK) no son un escenario empresarial compatible con el ajuste preciso de la implementación estándar.

Los problemas al realizar ajustes precisos con configuraciones de red únicas en el área de trabajo y el almacenamiento suelen deberse a problemas en la configuración de red.


Despliegue de un modelo finamente ajustado

Cuando el trabajo de ajuste fino se realiza correctamente, puede implementar el modelo personalizado desde la pestaña Ajuste fino. Debe implementar el modelo personalizado para que esté disponible para su uso con solicitudes de finalización.

Importante

Después de implementar un modelo personalizado y finalizar con el punto de conexión, recuerde limpiar los puntos de conexión inactivos. 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 Fundición de IA de Azure, cada modelo personalizado (ajustado) implementado incurre en un costo de hospedaje por hora, independientemente de si se realizan solicitudes de finalización o de finalización de chat. Para más información sobre el planeamiento y la administración de costos con Azure AI Foundry, consulte las instrucciones de Planeamiento para administrar los costos del servicio Azure AI Foundry.

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.

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

También puede implementar un modelo ajustado a través de la pestaña Modelos y puntos de conexión seleccionando el botón Implementar modelo y, a continuación, seleccionando Implementar modelo optimizado en la lista desplegable.

Recorte de pantalla del panel de administración de implementaciones de ajuste fino.

A continuación, seleccione el modelo ajustado que desea implementar y seleccione Implementar.

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 una suscripción cruzada, 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

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 del Portal de la Fundición de IA de Azure para experimentar con la nueva implementación. Puede seguir usando los mismos parámetros con el modelo personalizado, como la temperatura y la max_tokens, como puede con otros modelos implementados.

Limpieza de los modelos ajustados

Puede eliminar un modelo con ajuste preciso de la lista de modelos con ajuste preciso en Azure AI Foundry o desde la página de detalles del modelo. Para eliminar el modelo ajustado de la página Ajuste de la configuración,

  1. Seleccione Ajuste en el panel de navegación izquierdo del proyecto de Azure AI Foundry.
  2. Seleccione el botón Eliminar para eliminar el modelo ajustado.

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.

Creación de un cliente para consumir el modelo

En las secciones siguientes se explica cómo ajustar un modelo en Python. Para encontrar un ejemplo de cuaderno de este código, consulte Ajuste preciso de LLM con Model-As-Service

  1. Asegúrese de instalar dependencias para empezar a ajustar el modelo.
%pip install azure-ai-ml
%pip install azure-identity

%pip install mlflow
%pip install azureml-mlflow
  1. Cree el cliente para consumir el modelo. El código siguiente usa una dirección URL de punto de conexión y una clave que se almacenan en variables de entorno.
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()

try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP_NAME>",
        workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
    )

# the models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")

# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id

Búsqueda de modelos con compatibilidad con ajuste preciso

El catálogo de modelos de AI Foundry ofrece compatibilidad con la optimización de varios tipos de modelos, incluidas las finalizaciones de chat y la generación de texto. Para obtener una lista de los modelos que admiten el ajuste preciso y las regiones de Azure compatibles con el ajuste preciso, consulte Disponibilidad de regiones para los modelos en una implementación estándar. Las tareas de ajuste preciso solo están disponibles para los usuarios cuya suscripción de Azure pertenece a una cuenta de facturación en un país o región en el que el proveedor de modelos ha puesto la oferta a disposición. Si la oferta está disponible en la región pertinente, el usuario debe tener un recurso de proyecto en la región de Azure donde el modelo esté disponible para la implementación u optimización, según corresponda.

En este ejemplo, usamos un modelo phi-4-mini-instruct. En este fragmento de código, la propiedad id. del modelo se pasará como entrada al trabajo de ajuste preciso. También está disponible como el campo ID de activo en la página de detalles del modelo en el catálogo de modelos de Azure AI Foundry.

model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
    "\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
        model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
    )
)

Preparar datos para el ajuste preciso

Preparación de los datos de entrenamiento y validación para el ajuste preciso del modelo Los datos de entrenamiento y validación constan de ejemplos de entrada y salida para saber cómo desea que se realice el modelo.

Asegúrese de que todos los ejemplos de entrenamiento siguen el formato esperado para la inferencia. Para ajustar los modelos de forma eficaz, asegúrese de un conjunto de datos diverso manteniendo el equilibrio de datos, incluidos varios escenarios, y refinando periódicamente los datos de entrenamiento para alinearse con las expectativas del mundo real. Estas acciones, en última instancia, conducen a respuestas de modelo más precisas y equilibradas.

Sugerencia

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

Formato de archivo de ejemplo

El tipo de archivo admitido es líneas JSON. Los archivos se cargan en el almacén de datos predeterminado y están disponibles en el proyecto.

    {"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?"}]}

Creación de entradas de datos de entrenamiento

Este fragmento de código muestra cómo definir un conjunto de datos de entrenamiento.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data

dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
    train_data_asset = workspace_ml_client.data.get(
        train_dataset_name, version=dataset_version
    )
    print(f"Dataset {train_dataset_name} already exists")
except:
    print("creating dataset")
    train_data = Data(
        path=f"./train.jsonl",
        type=AssetTypes.URI_FILE,
        description="Training dataset",
        name=train_dataset_name,
        version="1",
    )
    train_data_asset = workspace_ml_client.data.create_or_update(train_data)

Creación de 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 desea usar datos de validación, puede omitir este paso para continuar con la sección siguiente. 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.

from azure.ai.ml.entities import Data

dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
    validation_data_asset = workspace_ml_client.data.get(
        validation_dataset_name, version=dataset_version
    )
    print(f"Dataset {validation_dataset_name} already exists")
except:
    print("creating dataset")
    validation_data = Data(
        path=f"./validation.jsonl",
        type=AssetTypes.URI_FILE,
        description="Validation dataset",
        name=validation_dataset_name,
        version="1",
    )
    validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)

Creación de una suscripción de Marketplace para modelos de terceros

Este paso es necesario para todos los modelos que no son de Microsoft. Un ejemplo de un modelo de Microsoft es la familia phi de modelos.

model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)

normalized_model_name = model_name.replace(".", "-")

from azure.ai.ml.entities import MarketplaceSubscription


subscription_name = f"{normalized_model_name}-sub"

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id_to_subscribe,
    name=subscription_name,
)

# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
    marketplace_subscription = (
        workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
            marketplace_subscription
        ).result()
    )
except Exception as ex:
    print(ex)

Envía el trabajo de ajuste fino utilizando el modelo y los datos como entradas

Hay el siguiente conjunto de parámetros necesarios para ajustar el modelo. Cada parámetro se define en lo siguiente:

  • modelo: modelo base para ajustar.
  • training_data: datos de entrenamiento para ajustar el modelo base.
  • validation_data: datos de validación para ajustar el modelo base.
  • task: tarea de ajuste preciso que se va a realizar. Eg. CHAT_COMPLETION para los trabajos de ajuste preciso de la finalización de chat.
  • salidas: nombre del modelo registrado de salida.

Los parámetros siguientes son opcionales:

  • hiperparámetros: parámetros que controlan el comportamiento de ajuste preciso en tiempo de ejecución.
  • name: nombre del trabajo de ajuste preciso
  • experiment_name: nombre del experimento para el trabajo de ajuste preciso.
  • display_name: nombre para mostrar del trabajo de ajuste preciso.
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid

guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"

finetuning_job = create_finetuning_job(
    task=FineTuningTaskType.CHAT_COMPLETION,
    training_data=train_data_asset.id,
    validation_data=validation_data_asset.id,
    hyperparameters={
        "per_device_train_batch_size": "1",
        "learning_rate": "0.00002",
        "num_train_epochs": "1",
    },
    model=model_to_finetune.id,
    display_name=display_name,
    name=name,
    experiment_name=experiment_name,
    tags={"foo_tag": "bar"},
    properties={"my_property": "my_value"},
    output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)

status = workspace_ml_client.jobs.get(created_job.name).status

import time

while True:
    status = workspace_ml_client.jobs.get(created_job.name).status
    print(f"Current job status: {status}")
    if status in ["Failed", "Completed", "Canceled"]:
        print("Job has finished with status: {0}".format(status))
        break
    else:
        print("Job is still running. Checking again in 30 seconds.")
        time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name

Despliegue de un modelo finamente ajustado

Cuando el trabajo de ajuste se realiza correctamente, puede implementar el modelo personalizado.

Importante

Después de implementar un modelo personalizado y finalizar con el punto de conexión, recuerde limpiar los puntos de conexión inactivos. 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 Fundición de IA de Azure, cada modelo personalizado (ajustado) implementado incurre en un costo de hospedaje por hora, independientemente de si se realizan solicitudes de finalización o de finalización de chat. Para más información sobre el planeamiento y la administración de costos con Azure AI Foundry, consulte las instrucciones de Planeamiento para administrar los costos del servicio Azure AI Foundry.

# Deploy the model as a serverless endpoint

endpoint_name = f"{normalized_model_name}-ft-{short_guid}"  # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"

Escenarios empresariales compatibles para el ajuste preciso

Se admiten varios escenarios empresariales para la optimización de la implementación estándar. En la tabla siguiente se describen las configuraciones admitidas para la conexión en red y la autenticación de almacenamiento de usuarios para garantizar un funcionamiento sin problemas en escenarios empresariales:

Nota:

  • La autenticación de conexiones de datos se puede cambiar a través de AI Foundry haciendo clic en la conexión de almacén de datos donde está guardado su conjunto de datos y navegando a la configuración Detalles de acceso>Método de autenticación.
  • La autenticación de almacenamiento se puede cambiar en Azure Storage >Configuración> página Configuraciones>Permitir el acceso a la clave de la cuenta de almacenamiento.
  • La conexión en red de almacenamiento se pueden cambiar en Azure Storage > página Redes.
Conexión en red de almacenamiento. Autenticación de almacenamiento Autenticación de conexión de datos Apoyo
Acceso a la red pública: habilitado Clave de cuenta habilitada SAS/clave de cuenta Sí, experiencia de usuario y SDK
Acceso a la red pública: habilitado Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK

Nota: Para la experiencia de usuario, es posible que tenga que agregar el rol de lector de datos de Storage Blob o de colaborador de datos de Storage Blob para el identificador de usuario de la cuenta de almacenamiento, o bien cambiar la autenticación de la conexión para usar la clave de cuenta o el token de SAS.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta habilitada Clave de cuenta Sí, experiencia de usuario y SDK

Nota: para la experiencia del usuario, la dirección IP del proceso que ejecuta el explorador debe estar en la lista seleccionada.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta habilitada SAS Sí, experiencia de usuario y SDK

Nota: para la experiencia del usuario, la dirección IP del proceso que ejecuta el explorador debe estar en la lista seleccionada.
Habilitado desde redes virtuales y direcciones IP seleccionadas Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK.

Nota: Para la experiencia de usuario, es posible que tenga que agregar el rol de lector de datos de Storage Blob o de colaborador de datos de Storage Blob para el identificador de usuario de la cuenta de almacenamiento, o bien cambiar la autenticación de la conexión para usar la clave de cuenta o el token de SAS. Asegúrese también de que la dirección IP del proceso que ejecuta el explorador esté en la lista seleccionada.
Acceso a la red pública: deshabilitado Clave de cuenta habilitada SAS/clave de cuenta Sí, experiencia de usuario y SDK.

Nota: Para que la carga y el envío de datos de la experiencia de usuario funcionen, es necesario tener acceso al área de trabajo desde la red virtual que tenga el acceso adecuado al almacenamiento.
Acceso a la red pública: deshabilitado Clave de cuenta deshabilitada Autenticación basada en Entra (sin credenciales) Sí, experiencia de usuario y SDK.

Nota: Para que la carga y el envío de datos de la experiencia de usuario funcionen, es necesario tener acceso al área de trabajo desde la red virtual que tenga el acceso adecuado al almacenamiento.

Los escenarios anteriores también deben funcionar en un área de trabajo de red virtual administrada. Consulte la configuración de Managed Vnet AI Foundry Hub aquí: Configuración de una red administrada para centros de Azure AI Foundry

Las claves administradas por el cliente (CMK) no son un escenario empresarial compatible con el ajuste preciso de la implementación estándar.

Los problemas al realizar ajustes precisos con configuraciones de red únicas en el área de trabajo y el almacenamiento suelen deberse a problemas en la configuración de red.

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 una suscripción cruzada, 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


# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()
try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<TARGET_SUBSCRIPTION_ID>",
        resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
        workspace_name="<TARGET_PROJECT_NAME>",
    )

workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
    print(f"Creating endpoint in the region:{workspace_region}")
    serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
    created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
        serverless_endpoint
    ).result()
else:
    raise ValueError(
        f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
    )

Uso de un modelo personalizado implementado

Cuando su modelo personalizado se implemente, puede usarlo como cualquier otro modelo implementado. Puede seguir usando los mismos parámetros con el modelo personalizado, como la temperatura y la max_tokens, como puede con otros modelos implementados.

endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key

import requests

url = f"{endpoint.scoring_uri}/v1/chat/completions"

payload = {
    "max_tokens": 1024,
    "messages": [
        {
            "content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
            "role": "user",
        }
    ],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}

response = requests.post(url, json=payload, headers=headers)

response.json()

Limpieza de los modelos ajustados

Una vez que haya terminado con el modelo, ejecute el código siguiente para limpiar el modelo ajustado.

workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()

Consideraciones de costo y cuota para los modelos implementados como una implementación estándar

La cuota se gestiona por cada implementación. Cada implementación tiene un límite de velocidad de 200 000 tokens por minuto y 1000 solicitudes de API por minuto. Sin embargo, actualmente limitamos una implementación por modelo por proyecto. Póngase en contacto con el Soporte técnico de Microsoft Azure si los límites de velocidad actuales no son suficientes para sus escenarios.

Coste de los modelos de Microsoft

Puede encontrar la información de precios en la pestaña Precios y términos del Asistente para la implementación al implementar modelos de Microsoft (como los modelos Phi-3) como una implementación estándar.

Coste de los modelos que no son de Microsoft

Los modelos que no son de Microsoft implementados como una implementación estándar se ofrecen a través de Azure Marketplace y se integran con Azure AI Foundry para su uso. Encontrará los precios de Azure Marketplace al implementar o ajustar estos modelos.

Cada vez que un proyecto se suscribe a una oferta determinada de Azure Marketplace, se crea un nuevo recurso para realizar un seguimiento de los costos asociados a su consumo. El mismo recurso se usa para hacer un seguimiento de los costos asociados con la inferencia y la optimización. Sin embargo, hay varios medidores disponibles para hacer un seguimiento de cada escenario de forma independiente.

Para más información sobre cómo realizar un seguimiento de los costos, consulte Supervisar los costos de los modelos ofrecidos a través de Azure Marketplace.

Captura de pantalla en la que se muestran varios recursos correspondientes a diferentes ofertas de modelos y los medidores asociados.

Cuaderno de ejemplo

Puede usar este cuaderno de ejemplo para crear un trabajo independiente de ajuste preciso para mejorar la capacidad de un modelo para resumir los diálogos entre dos personas mediante el conjunto de datos Samsum. Los datos de entrenamiento utilizados son el conjunto de datos ultrachat_200k, que se divide en cuatro partes adecuadas para la optimización supervisada (sft) y la clasificación de generación (gen). El cuaderno emplea los modelos de Azure AI disponibles para la tarea de finalización de chat (si desea usar un modelo diferente al que se usa en el cuaderno, puede reemplazar el nombre del modelo). El cuaderno incluye la configuración de requisitos previos, la selección de un modelo para ajustar, crear conjuntos de datos de entrenamiento y validación, configurar y enviar el trabajo de ajuste y, por último, crear una implementación sin servidor mediante el modelo optimizado para la inferencia de ejemplo.

CLI de ejemplo

Además, puede usar esta CLI de ejemplo para crear un trabajo de ajuste preciso independiente para mejorar la capacidad de un modelo para resumir los diálogos entre dos personas que usan un conjunto de datos.

type: finetuning

name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model: 
  path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
  type: mlflow_model
training_data: train.jsonl
validation_data:
  path: validation.jsonl
  type: uri_file
hyperparameters:
  num_train_epochs: "1"
  per_device_train_batch_size: "1"
  learning_rate: "0.00002"
properties:
  my_property: "my_value"
tags:
  foo_tag: "bar"
outputs:
  registered_model:
    name: "Phi-3-mini-4k-instruct-finetuned-model"
    type: mlflow_model 

Los datos de entrenamiento usados son los mismos que se muestran en el cuaderno del SDK. La CLI emplea los modelos de Azure AI disponibles para la tarea de finalización del chat. Si prefiere usar un modelo diferente al del ejemplo de la CLI, puede actualizar los argumentos, como "ruta de acceso del modelo", en consecuencia.

Filtrado de contenido

Los modelos de implementación estándar están protegidos por la seguridad del contenido de Azure AI. Cuando se implementa en puntos de conexión en tiempo real, puede optar por dejar de usar esta funcionalidad. Con la seguridad de contenido de Azure AI habilitada, tanto la solicitud como la finalización pasan a través de un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido perjudicial. El sistema de filtrado de contenido detecta y toma medidas en categorías específicas de contenido potencialmente perjudicial tanto en solicitudes de entrada como en finalizaciones de salida. Obtenga más información sobre Seguridad del contenido de Azure AI.

Pasos siguientes