Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación de un trabajo de AutoML para refinar modelos de generación de texto mediante la API
Los modelos de lenguaje de gran tamaño (LLM) se destacan en múltiples tareas generativas, como la generación de textos, el resumen, la finalización, la respuesta a preguntas, etc. Su rendimiento se puede atribuir a su considerable tamaño y a su amplio entrenamiento en diversos conjuntos de datos y tareas. Sin embargo, algunos dominios específicos, como los servicios sanitarios y el sector financiero, pueden requerir ajustes personalizados para adaptarse a sus datos y casos de uso particulares. Al adaptar el entrenamiento a su dominio particular, los LLM pueden mejorar su rendimiento y proporcionar resultados más exactos para aplicaciones específicas.
Piloto automático ofrece la capacidad de ajustar una selección de modelos de texto generativo previamente entrenados. En concreto, Piloto automático permite el ajuste fino basado en instrucciones de una serie de modelos de lenguaje de gran tamaño (LLM) genéricos con la tecnología JumpStart.
nota
Los modelos de generación de texto compatibles con el refinamiento en Piloto automático solo están disponibles en las regiones compatibles con SageMaker Canvas. Consulte la documentación de SageMaker Canvas para ver la lista completa de regiones compatibles.
A fin de ajustar un modelo prentrenado, se requiere un conjunto de datos específico de instrucciones claras que le digan al modelo cómo generar resultados o cómo comportarse para esa tarea. El modelo aprende del conjunto de datos y ajusta sus parámetros para adaptarse a las instrucciones proporcionadas. El refinamiento basado en instrucciones implica el uso de ejemplos etiquetados con formato de pares de petición-respuesta y redactados como instrucciones. Para obtener más información sobre el refinamiento, consulte Fine-tune a foundation model.
Las siguientes pautas describen el proceso de creación de un trabajo de Piloto automático de Amazon SageMaker como prueba para ajustar los LLM de generación de texto usando la documentación de referencia de las API de SageMaker.
nota
Las tareas como la clasificación de textos e imágenes, la previsión de series temporales y el refinamiento de modelos de lenguaje de gran tamaño están disponibles exclusivamente en la versión 2 de la API de REST de AutoML. Si el lenguaje de su elección es Python, puede hacer referencia a AWS SDK para Python (Boto3)
Los usuarios que prefieran la comodidad de una interfaz de usuario pueden usar Amazon SageMaker Canvas para acceder a modelos preentrenados y modelos fundacionales de IA generativa o para crear modelos personalizados y adaptados a necesidades específicas de texto, clasificación de imágenes, previsión o IA generativa.
Para crear un experimento de Piloto automático mediante programación para refinar un LLM, puede llamar a la API CreateAutoMLJobV2 en cualquier lenguaje compatible con Piloto automático de Amazon SageMaker o la AWS CLI.
Para obtener información sobre cómo se traduce esta acción de API en una función en el lenguaje de su elección, consulte la sección Véase también de CreateAutoMLJobV2 y seleccione un SDK. Como ejemplo, para los usuarios de Python, consulte la sintaxis de solicitud completa de create_auto_ml_job_v2 en AWS SDK para Python (Boto3).
nota
Piloto automático ajusta modelos de lenguaje grandes sin necesidad de entrenar ni evaluar a varios candidatos. En lugar de esto, Piloto automático utiliza su conjunto de datos para ajustar directamente el modelo objetivo a fin de mejorar una métrica objetivo predeterminada: la pérdida de entropía cruzada. Para ajustar los modelos de lenguaje en Piloto automático no es necesario configurar el campo AutoMLJobObjective.
Tras refinar el LLM, podrá evaluar su rendimiento accediendo a varias puntuaciones de ROUGE mediante el BestCandidate al hacer una llamada a la API de DescribeAutoMLJobV2. El modelo también proporciona información sobre su pérdida de entrenamiento y validación, así como sobre la perplejidad. A fin de obtener una lista completa de métricas para evaluar la calidad del texto generado por los modelos de ajuste fino, consulte Métricas para ajustar modelos de lenguaje grandes en Piloto automático.
Requisitos previos
Antes de utilizar Piloto automático para crear un experimento de refinamiento en SageMaker AI, siga estos pasos:
-
(Opcional) Elegir el modelo prentrenado que desee ajustar.
Para ver la lista de modelos prentrenados disponibles para el ajuste en Piloto automático de Amazon SageMaker, consulte Modelos de lenguaje grandes compatibles para el ajuste. La selección de un modelo no es obligatoria; si no se especifica ningún modelo, Piloto automático utilizará de manera predeterminada el modelo Falcon7BInstruct.
-
Crear un conjunto de datos de instrucciones. Consulte Tipos de archivos de conjuntos de datos y formato de datos de entrada para obtener más información sobre los requisitos de formato del conjunto de datos basado en instrucciones.
-
Colocar el conjunto de datos en un bucket de Amazon S3.
-
Otórguele acceso completo al bucket de Amazon S3 que contiene los datos de entrada para el rol de ejecución de SageMaker AI empleado en la ejecución del experimento.
-
Para obtener información sobre cómo obtener el rol de ejecución de SageMaker AI, consulte Obtención del rol de ejecución.
-
Para obtener información sobre cómo concederle al rol de ejecución de SageMaker AI los permisos necesarios para acceder a uno o más buckets específicos en Amazon S3, consulte Add Additional Amazon S3 Permissions to a SageMaker AI Execution Role en Creación de un rol de ejecución.
-
-
Además, debe proporcionar a su rol de ejecución los permisos necesarios para acceder al bucket de almacenamiento predeterminado de Amazon S3 que utiliza JumpStart. Este acceso es necesario para almacenar y recuperar artefactos del modelo preentrenado en JumpStart. Para conceder acceso a este bucket de Amazon S3, debe crear una nueva política personalizada integrada en su rol de ejecución.
A continuación, se muestra un ejemplo de política que puede usar en el editor de JSON al configurar trabajos de refinamiento de AutoML en
us-west-2:Los nombres de los buckets de JumpStart siguen un patrón predeterminado que depende de las Regiones de AWS. Debe ajustar el nombre del bucket en consecuencia.
{ "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-us-west-2", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*" ] }
Una vez hecho esto, puede usar el ARN de este rol de ejecución en las solicitudes de la API de Piloto automático.
Parámetros necesarios
Al llamar a CreateAutoMLJobV2 para crear un experimento de Piloto automático con el fin de refinar LLM, debe proporcionar los siguientes valores:
-
Un
AutoMLJobNamepara especificar el nombre del trabajo. El nombre debe ser del tipostringy tener una longitud de caracteres de entre 1 y 32. -
Como mínimo, un
AutoMLJobChanneldel tipotrainingdentro deAutoMLJobInputDataConfig. Este canal especifica el nombre del bucket de Amazon S3 donde se encuentra su conjunto de datos de ajuste. Tiene la opción de definir un canalvalidation. Si no se proporciona ningún canal de validación y se ha configurado unaValidationFractionenAutoMLDataSplitConfig, esta fracción se utiliza para dividir aleatoriamente el conjunto de datos de entrenamiento en conjuntos de entrenamiento y validación. Además, puede especificar el tipo de contenido (archivos CSV o Parquet) del conjunto de datos. -
Un
AutoMLProblemTypeConfigdel tipoTextGenerationJobConfigpara configurar los ajustes del trabajo de entrenamiento.Algo especialmente importante es que puede especificar el nombre del modelo base que se va a ajustar en el campo
BaseModelName. Para ver la lista de modelos prentrenados disponibles para el ajuste en Piloto automático de Amazon SageMaker, consulte Modelos de lenguaje grandes compatibles para el ajuste. -
Una
OutputDataConfigpara especificar la ruta de salida de Amazon S3 a fin de almacenar los artefactos de su trabajo de AutoML. -
Un
RoleArnpara especificar el ARN del rol utilizado para acceder a sus datos.
A continuación, se muestra un ejemplo del formato de solicitud completo que se utiliza al realizar una llamada a la API para CreateAutoMLJobV2 con el fin de refinar un modelo (Falcon7BInstruct).
{ "AutoMLJobName": "<job_name>", "AutoMLJobInputDataConfig": [ { "ChannelType": "training", "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<bucket_name>/<input_data>.csv" } } } ], "OutputDataConfig": { "S3OutputPath": "s3://<bucket_name>/output", "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>" }, "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>", "AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7BInstruct" } } }
Todos los demás parámetros son opcionales.
Parámetros opcionales
En las siguientes secciones, se proporcionan detalles de algunos parámetros opcionales que puede pasar al trabajo de ajuste de AutoML.
Puede proporcionar su propio conjunto de datos de validación y una tasa de división de datos personalizada, o puede dejar que Piloto automático divida el conjunto de datos automáticamente.
Cada objeto AutoMLJobChannel (consulte el parámetro obligatorio AutoMLJobInputDataConfig) tiene un ChannelType, que se puede configurar en los valores training o validation a fin de especificar cómo se utilizarán los datos al crear un modelo de machine learning.
Debe proporcionar al menos un origen de datos y un máximo de dos: uno para los datos de entrenamiento y otro para los datos de validación. La forma de dividir los datos en conjuntos de datos de entrenamiento y validación depende de si tiene uno o dos orígenes de datos.
-
Si solo tiene un origen de datos, el
ChannelTypese establece entrainingde forma predeterminada y debe tener este valor.-
Si el valor
ValidationFractionenAutoMLDataSplitConfigno está establecido, el 20 % (0,2) de los datos de este origen se utiliza para la validación de forma predeterminada. -
Si la
ValidationFractionse establece en un valor entre 0 y 1, el conjunto de datos se divide en función del valor especificado, donde el valor especifica la fracción del conjunto de datos utilizada para la validación.
-
-
Si tiene dos orígenes de datos, el
ChannelTypede uno de los objetos deAutoMLJobChanneldebe establecerse entraining, el valor predeterminado. ElChannelTypedel otro origen de datos debe estar establecido envalidation. Los dos orígenes de datos deben tener el mismo formato, CSV o Parquet, y el mismo esquema. En este caso, no debe establecer el valor deValidationFraction, ya que todos los datos de cada origen se utilizan para el entrenamiento o la validación. Si se configura este valor, se producirá un error.
Con Piloto automático, puede implementar automáticamente su modelo de ajuste fino a un punto de conexión. Para habilitar la implementación automática de su modelo de ajuste fino, incluya una ModelDeployConfig en la solicitud de trabajo de AutoML. Esto permite implementar su modelo de ajuste fino a un punto de conexión de SageMaker AI. A continuación, se muestran las configuraciones disponibles para la personalización.
-
Para permitir que Piloto automático genere el nombre del punto de conexión, configure
AutoGenerateEndpointNameenTrue. -
Si desea proporcionar su propio nombre para el punto de conexión, configure
AutoGenerateEndpointName to.Falseand provide a name of your choice in EndpointName
En el caso de los modelos que requieren la aceptación de un acuerdo de licencia de usuario final antes de realizar el refinamiento, puede aceptar el EULA estableciendo el atributo AcceptEula de ModelAccessConfig en True en TextGenerationJobConfig al configurar su AutoMLProblemTypeConfig.
Puede optimizar el proceso de aprendizaje de su modelo de generación de texto estableciendo valores de hiperparámetros en el atributo TextGenerationHyperParameters de TextGenerationJobConfig al configurar su AutoMLProblemTypeConfig.
Piloto automático permite configurar cuatro hiperparámetros comunes en todos los modelos.
-
epochCount: su valor debe ser una cadena que contenga un valor entero dentro del rango de1a10. -
batchSize: su valor debe ser una cadena que contenga un valor entero dentro del rango de1a64. -
learningRate: su valor debe ser una cadena que contenga un valor de coma flotante dentro del rango de0a1. -
learningRateWarmupSteps: su valor debe ser una cadena que contenga un valor entero dentro del rango de0a250.
Para obtener más información sobre cada hiperparámetro, consulte Hiperparámetros para optimizar el proceso de aprendizaje de los modelos de generación de texto.
El siguiente ejemplo de JSON muestra un campo TextGenerationHyperParameters que se transfiere a TextGenerationJobConfig, donde se configuran los cuatro hiperparámetros.
"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }