

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 afinar modelos de generación de texto mediante la API
<a name="autopilot-create-experiment-finetune-llms"></a>

Los modelos lingüísticos de gran tamaño (LLMs) destacan en múltiples tareas generativas, como la generación de textos, el resumen, la finalización, la respuesta a preguntas y más. 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 su formación a su dominio particular, LLMs pueden mejorar su rendimiento y proporcionar resultados más precisos para las aplicaciones específicas.

Piloto automático ofrece la capacidad de ajustar una selección de modelos de texto generativo previamente entrenados. En particular, Autopilot permite **ajustar con precisión, mediante instrucciones**, una selección de modelos lingüísticos extensos de uso general () con la ayuda de. LLMs JumpStart

**nota**  
Los modelos de generación de texto que admiten el ajuste preciso en Autopilot están disponibles actualmente exclusivamente en las regiones compatibles con Canvas. SageMaker Consulte la documentación de SageMaker Canvas para ver la [lista completa de las regiones compatibles](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html).

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](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-fine-tuning.html).

[Las siguientes pautas describen el proceso de creación de un trabajo de Amazon SageMaker Autopilot como experimento piloto para ajustar la generación de texto LLMs mediante la SageMaker API Reference.](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html)

**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](autopilot-reference.md). Si su idioma preferido es Python, puede consultar directamente el [MLV2 objeto Auto](https://sagemaker.readthedocs.io/en/stable/api/training/automlv2.html#sagemaker.automl.automlv2.AutoMLV2) del SDK de Amazon SageMaker Python. [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_auto_ml_job_v2.html)  
Los usuarios que prefieran la comodidad de una interfaz de usuario pueden usar [Amazon SageMaker Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-getting-started.html) para acceder a modelos previamente entrenados y modelos básicos de IA generativa, o crear modelos personalizados adaptados a textos específicos, clasificación de imágenes, necesidades de previsión o IA generativa.

Para crear un experimento de piloto automático mediante programación para ajustar un LLM, puede llamar a la [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)API en cualquier idioma compatible con Amazon Autopilot o el. SageMaker 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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso) de `CreateAutoMLJobV2` y seleccione un SDK. Como ejemplo, para los usuarios de Python, consulte la sintaxis de solicitud completa de `[create\$1auto\$1ml\$1job\$1v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateProperties.html#sagemaker-Type-CandidateProperties-CandidateMetrics)` al hacer una llamada a la API de `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)`. 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](autopilot-llms-finetuning-metrics.md).

## Requisitos previos
<a name="autopilot-llms-finetuning-api-prerequisites"></a>

Antes de usar el piloto automático para crear un experimento de ajuste preciso en SageMaker IA, asegúrate de seguir los siguientes pasos:
+ (Opcional) Elegir el modelo prentrenado que desee ajustar.

  Para ver la lista de modelos previamente entrenados disponibles para su ajuste en Amazon SageMaker Autopilot, consulte. [Modelos de lenguaje grandes compatibles para el ajuste](autopilot-llms-finetuning-models.md) *La selección de un modelo no es obligatoria; si no se especifica ningún modelo, el piloto automático utilizará automáticamente el modelo Falcon7 por defecto. BInstruct*
+ Crear un conjunto de datos de instrucciones. Consulte [Tipos de archivos de conjuntos de datos y formato de datos de entrada](autopilot-llms-finetuning-data-format.md) 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.
+ Conceda acceso completo al depósito de Amazon S3 que contiene los datos de entrada para la función de ejecución de SageMaker IA utilizada para ejecutar el experimento.
  + Para obtener información sobre cómo recuperar su función de ejecución de SageMaker IA, consulte[Obtención del rol de ejecución](sagemaker-roles.md#sagemaker-roles-get-execution-role).
  + Para obtener información sobre cómo conceder permisos a su función de ejecución de SageMaker IA para acceder a uno o más buckets específicos en Amazon S3, consulte *Añadir permisos adicionales de Amazon S3 a una función de ejecución de SageMaker IA* en[Creación de un rol de ejecución](sagemaker-roles.md#sagemaker-roles-create-execution-role).
+ Además, debe proporcionar a su función de ejecución los permisos necesarios para acceder al depósito de almacenamiento predeterminado que utiliza el bucket de Amazon S3 JumpStart. Este acceso es necesario para almacenar y recuperar artefactos de modelos previamente entrenados. 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`:

  *JumpStartLos nombres de los cubos siguen un patrón predeterminado que depende del. 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
<a name="autopilot-llms-finetuning-api-required-params"></a>

Al llamar a `[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)` para crear un experimento de Piloto automático con el fin de refinar LLM, debe proporcionar los siguientes valores:
+ Un `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)` para especificar el nombre del trabajo. El nombre debe ser del tipo `string` y tener una longitud de caracteres de entre 1 y 32.
+ Como mínimo, un `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)` del tipo `training` dentro de `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)`. 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 canal `validation`. Si no se proporciona ningún canal de validación y se ha configurado una `ValidationFraction` en [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html), 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 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` del tipo `[TextGenerationJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` para 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 previamente entrenados disponibles para su ajuste en Amazon SageMaker Autopilot, consulte. [Modelos de lenguaje grandes compatibles para el ajuste](autopilot-llms-finetuning-models.md)
+ Una `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)` para especificar la ruta de salida de Amazon S3 a fin de almacenar los artefactos de su trabajo de AutoML.
+ Un `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)` para 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
<a name="autopilot-llms-finetuning-api-optional-params"></a>

En las siguientes secciones, se proporcionan detalles de algunos parámetros opcionales que puede pasar al trabajo de ajuste de AutoML.

### Cómo especificar los conjuntos de datos de entrenamiento y validación de un trabajo de AutoML
<a name="autopilot-llms-finetuning-data-training-or-validation"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)objeto (consulte el parámetro obligatorio [Automático MLJob InputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)) tiene una`ChannelType`, que se puede configurar en `validation` valores que especifican cómo se van a utilizar los datos al crear un modelo de aprendizaje automático. `training`

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 `ChannelType` se establece en `training` de forma predeterminada y debe tener este valor.
  + Si el valor `ValidationFraction` en [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html) no está establecido, el 20 % (0,2) de los datos de este origen se utiliza para la validación de forma predeterminada. 
  + Si la `ValidationFraction` se 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 `ChannelType` de uno de los objetos de `AutoMLJobChannel` debe establecerse en `training`, el valor predeterminado. El `ChannelType` del otro origen de datos debe estar establecido en `validation`. 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 de `ValidationFraction`, 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.

### Cómo habilitar la implementación automática
<a name="autopilot-llms-finetuning-auto-model-deployment"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-ModelDeployConfig)` en la solicitud de trabajo de AutoML. Esto permite implementar su modelo ajustado en un punto final de SageMaker IA. 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 `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)` en `True`.
+ Si desea proporcionar su propio nombre para el punto de conexión, configure `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents) to False and provide a name of your choice in [EndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)`.

### Cómo configurar la aceptación del EULA al refinar un modelo mediante la API de AutoML
<a name="autopilot-llms-finetuning-set-eula"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelAccessConfig.html)` en `True` en `[TextGenerationJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` al configurar su `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)`.

### Cómo configurar hiperparámetros para optimizar el proceso de aprendizaje de un modelo
<a name="autopilot-llms-finetuning-set-hyperparameters"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` al configurar su `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-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 de `1` a `10`.
+ `batchSize`: su valor debe ser una cadena que contenga un valor entero dentro del rango de `1` a `64`.
+ `learningRate`: su valor debe ser una cadena que contenga un valor de coma flotante dentro del rango de `0` a `1`.
+ `learningRateWarmupSteps`: su valor debe ser una cadena que contenga un valor entero dentro del rango de `0` a `250`.

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](autopilot-llms-finetuning-hyperparameters.md).

El siguiente ejemplo de JSON muestra un `TextGenerationHyperParameters` campo que se pasa al TextGenerationJobConfig lugar donde están configurados los cuatro hiperparámetros.

```
"AutoMLProblemTypeConfig": {
  "TextGenerationJobConfig": {
    "BaseModelName": "Falcon7B",
    "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"}
  }
}
```