

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.

# Modelos fundacionales e hiperparámetros para el refinamiento
<a name="jumpstart-foundation-models-fine-tuning"></a>

Los modelos fundacionales son costosos desde el punto de vista computacional y se basan en un corpus grande y sin etiquetas. Ajustar un modelo fundacional previamente entrenado es una forma económica de aprovechar sus amplias capacidades y, al mismo tiempo, personalizar un modelo en su propio corpus pequeño. El ajuste es un método de personalización que requiere más entrenamiento y que, además, cambia las ponderaciones del modelo. 

El ajuste puede serle útil si necesita: 
+ personalizar su modelo según necesidades empresariales específicas;
+ que su modelo funcione correctamente con un lenguaje específico de un dominio, como una jerga sectorial, términos técnicos u otro vocabulario especializado;
+ rendimiento mejorado para tareas específicas;
+ respuestas precisas, relativas y contextualizadas en las aplicaciones;
+ respuestas más objetivas, menos tóxicas y mejor ajustadas a requisitos específicos.

Hay dos enfoques principales que puede adoptar para realizar ajustes en función del caso de uso y del modelo fundacional elegido.

1. Si está interesado en ajustar su modelo a partir de datos específicos de un dominio, consulte [Refinamiento de un modelo de lenguaje de gran tamaño (LLM) mediante la adaptación de dominios](jumpstart-foundation-models-fine-tuning-domain-adaptation.md).

1. Si le interesa un ajuste basado en instrucciones mediante ejemplos de peticiones y respuestas, consulte [Refinamiento de un modelo de lenguaje de gran tamaño (LLM) con instrucciones de peticiones](jumpstart-foundation-models-fine-tuning-instruction-based.md).

## Modelos fundacionales disponibles para el refinamiento
<a name="jumpstart-foundation-models-fine-tuning-models"></a>

Puede ajustar con precisión cualquiera de los siguientes modelos básicos JumpStart :
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ BloomZ 7B1 FP16
+ Code Llama 13B
+ Code Llama 13B Python
+ Code Llama 34B
+ Code Llama 34B Python
+ Code Llama 70B
+ Code Llama 70B Python
+ Code Llama 7B
+ Code Llama 7B Python
+ CyberAgentLM2-7B-Chat (-7B-Chat) CALM2
+ Falcon 40B BF16
+ Falcon 40B Instruct BF16
+ Falcon 7B BF16
+ Falcon 7B Instruct BF16
+ Flan-T5 Base
+ Flan-T5 Large
+ Flan-T5 Small
+ Flan-T5 XL
+ Flan-T5 XXL
+ Gemma 2B
+ Gemma 2B Instruct
+ Gemma 7B
+ Gemma 7B Instruct
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ LightGPT Instruct 6B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ Mixtral 8x7B
+ Mixtral 8x7B Instruct
+ RedPajama BASE INCITE 3B V1
+ RedPajama Base INCITE 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INSTRUCT INCITE 7B V1
+ Stable Diffusion 2.1

## Hiperparámetros de refinamiento compatibles comunes
<a name="jumpstart-foundation-models-fine-tuning-hyperparameters"></a>

Los diferentes modelos fundacionales admiten diferentes hiperparámetros para el refinamiento. A continuación se indican los hiperparámetros compatibles comunes que pueden personalizar aún más el modelo durante el entrenamiento:


| Parámetro de inferencia | Description (Descripción) | 
| --- | --- | 
| `epoch` | El número de pasadas que el modelo realiza a través del conjunto de datos de refinamiento durante el entrenamiento. Debe ser un número entero mayor que 1.  | 
| `learning_rate` |  La velocidad a la que se actualizan los pesos del modelo después de pasar por cada lote de ejemplos de entrenamiento de refinamiento. Debe ser un valor flotante positivo mayor que 0.  | 
| `instruction_tuned` |  Si se debe entrenar con instrucciones el modelo o no. Debe ser `'True'` o `'False'`.  | 
| `per_device_train_batch_size` |  Tamaño del lote por núcleo de GPU o CPU para entrenamiento. Debe ser un entero positivo. | 
| `per_device_eval_batch_size` |  Tamaño del lote por núcleo de GPU o CPU para evaluación. Debe ser un entero positivo.  | 
| `max_train_samples` |  Con fines de depuración o para agilizar el entrenamiento, reduzca el número de ejemplos de entrenamiento a este valor. El valor -1 significa que el modelo utiliza todas las muestras de entrenamiento. Debe ser un entero positivo o -1.  | 
| `max_val_samples` |  Con fines de depuración o para agilizar el entrenamiento, reduzca el número de ejemplos de validación a este valor. El valor -1 significa que el modelo utiliza todos los ejemplos de validación. Debe ser un entero positivo o -1.  | 
| `max_input_length` |  Longitud máxima total de la secuencia de entrada después de la tokenización. Las secuencias más largas que esta se truncarán. Si es -1, `max_input_length` se establece en el mínimo de 1024 y en la `model_max_length` definida por el tokenizador. Si se establece en un valor positivo, `max_input_length` se establece en el mínimo del valor proporcionado y la `model_max_length` definida por el tokenizador. Debe ser un entero positivo o -1.  | 
| `validation_split_ratio` |  Si no hay un canal de validación, la proporción de entrenamiento-validación se divide a partir de los datos de entrenamiento. Debe estar comprendido entre 0 y 1.  | 
| `train_data_split_seed` |  Si los datos de validación no están presentes, esto corrige la división aleatoria de los datos de entrenamiento de entrada a los datos de entrenamiento y validación utilizados por el modelo. Debe ser un número entero.  | 
| `preprocessing_num_workers` |  Número de procesos que se van a utilizar para el preprocesamiento. Si es `None`, el proceso principal se utiliza para el preprocesamiento.  | 
| `lora_r` |  Valor r de adaptación de rango bajo (LoRA), que actúa como factor de escalado para actualizaciones de ponderación. Debe ser un entero positivo.  | 
| `lora_alpha` |  Valor alfa de adaptación de rango bajo (LoRA), que actúa como factor de escalado para actualizaciones de ponderación. Por lo general, de 2 a 4 veces el tamaño de `lora_r`. Debe ser un entero positivo.  | 
| `lora_dropout` |  El valor de abandono para las capas de adaptación de rango bajo (LoRA) debe ser un valor flotante positivo entre 0 y 1.  | 
| `int8_quantization` |  Si es `True`, el modelo se carga con una precisión de 8 bits para el entrenamiento.  | 
| `enable_fsdp` |  Si es `True`, el entrenamiento utiliza paralelismo de datos totalmente particionados.  | 

Puede especificar valores de hiperparámetros al refinar el modelo en Studio. Para obtener más información, consulte [Refinamiento de un modelo en Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). 

También puede anular los valores de hiperparámetros predeterminados al ajustar el modelo mediante el SDK. SageMaker Python Para obtener más información, consulte [Refinamiento de los modelos fundacionales disponibles públicamente con la clase `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md).

# Refinamiento de un modelo de lenguaje de gran tamaño (LLM) mediante la adaptación de dominios
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation"></a>

El ajuste para la adaptación a dominios le permite aprovechar los modelos fundacionales previamente entrenados y adaptarlos a tareas específicas utilizando datos limitados específicos de un dominio. Si los esfuerzos de ingeniería de peticiones no proporcionan una personalización suficiente, puede utilizar los ajustes de adaptación al dominio para que su modelo funcione con el lenguaje específico de un dominio, como la jerga de un sector, términos técnicos u otros datos especializados. Este proceso de ajuste modifica las ponderaciones del modelo. 

Para refinar el modelo en un conjunto de datos de un dominio específico:

1. Prepare los datos de entrenamiento Para obtener instrucciones, consulte [Preparación y carga datos de entrenamiento para refinamiento de adaptación de dominios](#jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data).

1. Cree un trabajo de entrenamiento de afinamiento. Para obtener instrucciones, consulte [Creación de un trabajo de entrenamiento para el refinamiento basado en instrucciones](#jumpstart-foundation-models-fine-tuning-domain-adaptation-train).

Puede encontrar ejemplos en. end-to-end [Cuadernos de ejemplo](#jumpstart-foundation-models-fine-tuning-domain-adaptation-examples)

El ajuste con adaptación a dominios está disponible con los siguientes modelos fundacionales:

**nota**  
Algunos modelos JumpStart básicos, como el Llama 2 7B, requieren la aceptación de un acuerdo de licencia para el usuario final antes de realizar ajustes y realizar inferencias. Para obtener más información, consulte [Contratos de licencia para usuarios finales](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula).
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ BloomZ 7B1 FP16
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron

## Preparación y carga datos de entrenamiento para refinamiento de adaptación de dominios
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data"></a>

Los datos de entrenamiento para refinamiento de adaptación de dominios se pueden proporcionar en formato de archivo CSV, JSON o TXT. Todos los datos de entrenamiento deben estar en un solo archivo dentro de una sola carpeta.

Los datos de entrenamiento se toman de la columna **Texto** para archivos de datos de entrenamiento CSV o JSON. Si no hay ninguna columna con la etiqueta **Texto**, los datos de entrenamiento se toman de la primera columna para archivos de datos de entrenamiento CSV o JSON.

A continuación se muestra un ejemplo del cuerpo de un archivo TXT que se utilizará para realizar el refinamiento:

```
This report includes estimates, projections, statements relating to our
business plans, objectives, and expected operating results that are “forward-
looking statements” within the meaning of the Private Securities Litigation
Reform Act of 1995, Section 27A of the Securities Act of 1933, and Section 21E
of ....
```

### División de datos para entrenamiento y pruebas
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-split-data"></a>

Si lo desea, puede proporcionar otra carpeta que contenga los datos de validación. Esta carpeta también debe incluir un archivo CSV, JSON o TXT. Si no se proporciona ningún conjunto de datos de validación, se reserva una cantidad determinada de los datos de entrenamiento con fines de validación. Puede refinar el porcentaje de datos de entrenamiento para validación al elegir los hiperparámetros para refinar el modelo. 

### Carga de datos de refinamiento en Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-upload-data"></a>

Cargue los datos preparados en Amazon Simple Storage Service (Amazon S3) para utilizarlos a la hora de ajustar un modelo JumpStart básico. Puede utilizar los comandos siguientes para cargar los datos:

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.txt"
train_data_location = f"s3://{output_bucket}/training_folder"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## Creación de un trabajo de entrenamiento para el refinamiento basado en instrucciones
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-train"></a>

Una vez que los datos se hayan cargado en Amazon S3, podrá ajustar e implementar su modelo JumpStart base. Para refinar el modelo en Studio, consulte [Refinamiento de un modelo en Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Para ajustar el modelo con el SDK, consulte. SageMaker Python [Refinamiento de los modelos fundacionales disponibles públicamente con la clase `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

## Cuadernos de ejemplo
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-examples"></a>

Para obtener más información sobre el refinamiento de adaptación de dominios, consulte los cuadernos de ejemplo siguientes:
+ [SageMaker JumpStart Modelos básicos: ajuste preciso del modelo GPT-J 6B de generación de texto en un conjunto de datos de dominio específico](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/domain-adaption-finetuning-gpt-j-6b.html)
+ [Ajuste con precisión los modelos MA 2 en LLa JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)

# Refinamiento de un modelo de lenguaje de gran tamaño (LLM) con instrucciones de peticiones
<a name="jumpstart-foundation-models-fine-tuning-instruction-based"></a>

El ajuste basado en instrucciones utiliza ejemplos etiquetados para mejorar el rendimiento de un modelo fundacional entrenado previamente en una tarea específica. Los ejemplos etiquetados tienen formato de pares de respuesta/aviso y están redactados como instrucciones. Este proceso de ajuste modifica las ponderaciones del modelo. Para obtener más información sobre el ajuste basado instrucciones, consulte los documentos [Introducing FLAN: More generalizable Language Models with Instruction Fine-Tuning](https://ai.googleblog.com/2021/10/introducing-flan-more-generalizable.html) y [Scaling Instruction-Finetuned Language Models](https://arxiv.org/abs/2210.11416).

Los modelos Fine-Tuned LAnguage Net (FLAN) utilizan el ajuste de instrucciones para que los modelos sean más fáciles de resolver tareas generales de PNL posteriores. Amazon SageMaker JumpStart ofrece varios modelos básicos en la familia de modelos FLAN. Por ejemplo, los modelos FLAN-T5 incluyen instrucciones refinadas para una amplia gama de tareas con el fin de aumentar el rendimiento de forma inmediata en una variedad de casos de uso comunes. Con datos adicionales y ajustes, los modelos basados en instrucciones se pueden adaptar aún más a tareas más específicas que no se hayan tenido en cuenta durante el entrenamiento previo. 

Para refinar un LLM en una tarea específica mediante instrucciones de tarea en pares de petición-respuesta:

1. Prepare las instrucciones en archivos JSON. Para obtener más información sobre el formato necesario para los archivos de pares de petición-respuesta y la estructura de la carpeta de datos, consulte [Preparación y carga datos de entrenamiento para el refinamiento basado en instrucciones](#jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data).

1. Cree un trabajo de entrenamiento de afinamiento. Para obtener instrucciones, consulte [Creación de un trabajo de entrenamiento para el refinamiento basado en instrucciones](#jumpstart-foundation-models-fine-tuning-instruction-based-train).

Puede encontrar end-to-end ejemplos en[Cuadernos de ejemplo](#jumpstart-foundation-models-fine-tuning-instruction-based-examples).

Solo un subconjunto de modelos básicos JumpStart es compatible con el ajuste fino basado en instrucciones. El ajuste basado en instrucciones está disponible con los siguientes modelos fundacionales: 

**nota**  
Algunos modelos JumpStart básicos, como el Llama 2 7B, requieren la aceptación de un acuerdo de licencia para el usuario final antes de realizar ajustes y realizar inferencias. Para obtener más información, consulte [Contratos de licencia para usuarios finales](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula).
+ Flan-T5 Base
+ Flan-T5 Large
+ Flan-T5 Small
+ Flan-T5 XL
+ Flan-T5 XXL
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ RedPajama INCITE Base 3B V1
+ RedPajama Base INCITE 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INSTRUCT INCITE 7B V1

## Preparación y carga datos de entrenamiento para el refinamiento basado en instrucciones
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data"></a>

Los datos de entrenamiento para el refinamiento basado en instrucciones deben proporcionarse en el formato de archivo de texto JSON Lines, en el que cada línea es un diccionario. Todos los datos de entrenamiento deben estar en una sola carpeta. La carpeta puede incluir varios archivos.jsonl. 

La carpeta de entrenamiento también puede incluir un archivo JSON de plantilla (`template.json`) que describa los formatos de entrada y salida de los datos. Si no se proporciona un archivo de plantilla, se utiliza el siguiente archivo de plantilla: 

```
{
  "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}",
  "completion": "{response}"
}
```

Según el archivo `template.json`, cada entrada .jsonl de los datos de entrenamiento debe incluir los campos `{instruction}`, `{context}` y `{response}`. 

Si proporciona un archivo JSON de plantilla personalizada, utilice las claves `"prompt"` y `"completion"` para definir sus propios campos obligatorios. De acuerdo con el siguiente archivo JSON de plantilla personalizada, cada entrada .jsonl de los datos de entrenamiento debe incluir los campos `{question}`, `{context}` y `{answer}`:

```
{
  "prompt": "question: {question} context: {context}",
  "completion": "{answer}"
}
```

### División de datos para entrenamiento y pruebas
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-split-data"></a>

Si lo desea, puede proporcionar otra carpeta que contenga los datos de validación. Esta carpeta también debe incluir uno o varios archivos .jsonl. Si no se proporciona ningún conjunto de datos de validación, se reserva una cantidad determinada de los datos de entrenamiento con fines de validación. Puede refinar el porcentaje de datos de entrenamiento para validación al elegir los hiperparámetros para refinar el modelo. 

### Carga de datos de refinamiento en Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-upload-data"></a>

Cargue los datos preparados en Amazon Simple Storage Service (Amazon S3) para utilizarlos a la hora de ajustar un modelo JumpStart básico. Puede utilizar los comandos siguientes para cargar los datos:

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.jsonl"
train_data_location = f"s3://{output_bucket}/dolly_dataset"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## Creación de un trabajo de entrenamiento para el refinamiento basado en instrucciones
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-train"></a>

Una vez que los datos se hayan cargado en Amazon S3, podrá ajustar e implementar su modelo JumpStart base. Para refinar el modelo en Studio, consulte [Refinamiento de un modelo en Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Para ajustar el modelo con el SDK, consulte. SageMaker Python [Refinamiento de los modelos fundacionales disponibles públicamente con la clase `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

## Cuadernos de ejemplo
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-examples"></a>

Para obtener más información sobre el refinamiento basado en instrucciones, consulte los ejemplos de cuadernos siguientes:
+ [Ajuste con LLa precisión los modelos MA 2 en JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)
+ [Introducción a la generación SageMaker JumpStart de texto con modelos Mistral](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/mistral-7b-instruction-domain-adaptation-finetuning.html)
+ [Introducción a la generación SageMaker JumpStart de texto con modelos Falcon](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/falcon-7b-instruction-domain-adaptation-finetuning.html)
+ [SageMaker JumpStart Modelos básicos: ajuste fino de las instrucciones HuggingFace de Text2Text](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/instruction-fine-tuning-flan-t5.html)