

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Modelos de base e hiperparâmetros para ajuste
<a name="jumpstart-foundation-models-fine-tuning"></a>

Os modelos de base são computacionalmente caros e treinados em um corpus grande e sem rótulo. Ajustar um modelo de base pré-treinado é uma forma acessível de aproveitar seus amplos recursos e, ao mesmo tempo, personalizar um modelo em seu próprio pequeno corpus. O ajuste fino é um método de personalização que envolve treinamento adicional e altera os pesos do seu modelo. 

O ajuste fino pode ser útil se você precisar de: 
+ para personalizar seu modelo de acordo com necessidades comerciais específicas
+ seu modelo para trabalhar com sucesso com linguagem específica de domínio, como jargões do setor, termos técnicos ou outro vocabulário especializado
+ desempenho aprimorado para tarefas específicas
+ respostas precisas, relativas e sensíveis ao contexto em aplicações
+ respostas mais factuais, menos tóxicas e mais bem alinhadas aos requisitos específicos

Há duas abordagens principais que você pode adotar para fazer o ajuste fino, dependendo do seu caso de uso e do modelo de base escolhido.

1. Se você estiver interessado em ajustar seu modelo em dados específicos do domínio, consulte [Ajustar um grande modelo de linguagem (LLM) usando adaptação de domínio](jumpstart-foundation-models-fine-tuning-domain-adaptation.md).

1. Se você estiver interessado em um ajuste fino baseado em instruções usando exemplos de prompts e respostas, consulte [Ajustar um grande modelo de linguagem (LLM) usando prompts rápidos](jumpstart-foundation-models-fine-tuning-instruction-based.md).

## Modelos de base disponíveis para ajuste
<a name="jumpstart-foundation-models-fine-tuning-models"></a>

Você pode ajustar qualquer um dos seguintes modelos de JumpStart base:
+ 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
+ Falcão 40B BF16
+ Falcon 40B Instruct BF16
+ Falcão 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 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 INCITE Instruct 7B V1
+ Stable Diffusion 2.1

## Hiperparâmetros de ajuste normalmente aceitos
<a name="jumpstart-foundation-models-fine-tuning-hyperparameters"></a>

Diferentes modelos de base são compatíveis com diferentes hiperparâmetros para ajuste. A seguir estão os hiperparâmetros normalmente aceitos que podem personalizar ainda mais seu modelo durante o treinamento:


| Parâmetro de inferência | Description | 
| --- | --- | 
| `epoch` | O número de passagens que o modelo faz pelo conjunto de dados de ajuste durante o treinamento. Deve ser um número inteiro maior que 1.  | 
| `learning_rate` |  A taxa na qual os pesos do modelo são atualizados depois de analisar cada lote de exemplos de treinamento de ajuste. Deve ser um flutuante positivo maior que 0.  | 
| `instruction_tuned` |  Se o modelo deve ou não ser treinado. Precisa ser `'True'` ou `'False'`.  | 
| `per_device_train_batch_size` |  O tamanho do lote por núcleo de GPU ou CPU para treinamento. Deve ser um número inteiro positivo. | 
| `per_device_eval_batch_size` |  O tamanho do lote por núcleo de GPU ou CPU para avaliação. Deve ser um número inteiro positivo.  | 
| `max_train_samples` |  Para fins de depuração ou treinamento mais rápido, reduza o número de exemplos de treinamento para esse valor. O valor -1 significa que o modelo usa todas as amostras de treinamento. Deve ser um número inteiro positivo ou -1.  | 
| `max_val_samples` |  Para fins de depuração ou treinamento mais rápido, reduza o número de exemplos de validação para esse valor. O valor -1 significa que o modelo usa todas as amostras de validação. Deve ser um número inteiro positivo ou -1.  | 
| `max_input_length` |  Comprimento máximo total da sequência de entrada após a tokenização. Sequências maiores do que isso serão truncadas. Se for -1, `max_input_length` será definido como o mínimo de 1024 e o `model_max_length` definido pelo tokenizador. Se for definido como um valor positivo, `max_input_length` será definido como o mínimo do valor fornecido e o `model_max_length` definido pelo tokenizador. Deve ser um número inteiro positivo ou -1.  | 
| `validation_split_ratio` |  Se não houver canal de validação, a proporção entre treinamento e validação será dividida a partir dos dados de treinamento. Deve estar entre 0 e 1.  | 
| `train_data_split_seed` |  Se não houver dados de validação, isso corrige a divisão aleatória dos dados de treinamento de entrada nos dados de treinamento e validação usados pelo modelo. Deve ser um número inteiro.  | 
| `preprocessing_num_workers` |  O número de processos a serem usados para pré-processamento. Se for `None`, o processo principal será usado para pré-processamento.  | 
| `lora_r` |  Valor r de adaptação de baixa classificação (LoRA), que atua como fator de escala para atualizações de peso. Deve ser um número inteiro positivo.  | 
| `lora_alpha` |  Valor alfa de adaptação de baixa classificação (LoRA), que atua como fator de escala para atualizações de peso. Geralmente de duas a quatro vezes o tamanho de `lora_r`. Deve ser um número inteiro positivo.  | 
| `lora_dropout` |  O valor de eliminação para camadas de adaptação de baixa classificação (LoRA) deve ser flutuante positivo entre 0 e 1.  | 
| `int8_quantization` |  Se for `True`, o modelo será carregado com precisão de 8 bits para treinamento.  | 
| `enable_fsdp` |  Se for `True`, o treinamento usará paralelismo de dados totalmente fragmentados.  | 

Você pode especificar valores de hiperparâmetros ao ajustar seu modelo no Studio. Para obter mais informações, consulte [Ajustar um modelo no Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). 

Você também pode substituir os valores padrão dos hiperparâmetros ao ajustar seu modelo usando o SDK. SageMaker Python Para obter mais informações, consulte [Ajustar modelos de base disponíveis ao público com a função `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md).

# Ajustar um grande modelo de linguagem (LLM) usando adaptação de domínio
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation"></a>

O ajuste fino da adaptação de domínio permite que você aproveite modelos de base pré-treinados e os adapte a tarefas específicas usando dados limitados específicos do domínio. Se os esforços imediatos de engenharia não fornecerem personalização suficiente, você poderá usar o ajuste fino da adaptação de domínio para fazer seu modelo funcionar com a linguagem específica do domínio, como jargões do setor, termos técnicos ou outros dados especializados. Esse processo de ajuste fino modifica os pesos do modelo. 

Para ajustar seu modelo em um conjunto de dados específico do domínio:

1. Embaralhe os dados de treinamento. Para instruções, consulte [Prepare e faça upload dos dados de treinamento para o ajuste de adaptação de domínio](#jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data).

1. Crie seu trabalho de treinamento ajustado. Para instruções, consulte [Crie um trabalho de treinamento para ajuste baseado nas instruções](#jumpstart-foundation-models-fine-tuning-domain-adaptation-train).

Você pode encontrar end-to-end exemplos em[Cadernos de exemplo](#jumpstart-foundation-models-fine-tuning-domain-adaptation-examples).

O ajuste fino da adaptação do domínio está disponível com os seguintes modelos de base:

**nota**  
Alguns modelos JumpStart básicos, como o Llama 2 7B, exigem a aceitação de um contrato de licença do usuário final antes de ajustar e realizar inferências. Para obter mais informações, consulte [Contratos de licença de usuário final](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

## Prepare e faça upload dos dados de treinamento para o ajuste de adaptação de domínio
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data"></a>

Os dados de treinamento para ajuste da adaptação do domínio podem ser fornecidos no formato de arquivo CSV, JSON ou TXT. Todos os dados de treinamento devem estar em um único arquivo dentro de uma única pasta.

Os dados de treinamento são extraídos da coluna **Texto** dos arquivos de dados de treinamento CSV ou JSON. Se não houver uma coluna chamada **Texto**, os dados de treinamento serão extraídos da primeira coluna dos arquivos de dados de treinamento CSV ou JSON.

Veja a seguir o corpo de um exemplo de um arquivo TXT a ser usado para ajuste:

```
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 ....
```

### Dividir dados para treinamento e teste
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-split-data"></a>

Você pode fornecer outra pasta contendo os dados de validação. Essa pasta também deve incluir um arquivo CSV, JSON ou TXT. Se nenhum conjunto de dados de validação for fornecido, uma quantidade definida dos dados de treinamento será reservada para fins de validação. Você pode adaptar a porcentagem de dados de treinamento usados para validação quando for escolher os hiperparâmetros para ajustar seu modelo. 

### Fazer upload de dados de ajuste no Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-upload-data"></a>

Faça upload dos dados preparados para o Amazon Simple Storage Service (Amazon S3) para usá-los no ajuste fino JumpStart de um modelo básico. Você pode usar os seguintes comandos para fazer o upload dos dados:

```
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}")
```

## Crie um trabalho de treinamento para ajuste baseado nas instruções
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-train"></a>

Depois que seus dados forem carregados para o Amazon S3, você poderá ajustar e implantar seu modelo básico. JumpStart Para ajustar seu modelo no Studio, consulte [Ajustar um modelo no Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Para ajustar seu modelo usando o SageMaker Python SDK, consulte. [Ajustar modelos de base disponíveis ao público com a função `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

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

Para obter mais informações sobre ajuste para adaptação de domínio, consulte os seguintes cadernos de exemplos:
+ [SageMaker JumpStart Modelos básicos - Ajustando o modelo GPT-J 6B de geração de texto em um conjunto de dados específico de domínio](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/domain-adaption-finetuning-gpt-j-6b.html)
+ [Ajuste os modelos LLa MA 2 em JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)

# Ajustar um grande modelo de linguagem (LLM) usando prompts rápidos
<a name="jumpstart-foundation-models-fine-tuning-instruction-based"></a>

O ajuste fino baseado em instruções usa exemplos rotulados para melhorar o desempenho de um modelo de base pré-treinado em uma tarefa específica. Os exemplos rotulados são formatados como prompts, pares de respostas e expressos como instruções. Esse processo de ajuste fino modifica os pesos do modelo. Para obter mais informações sobre o ajuste fino baseado em instruções, consulte os artigos [Introdução ao FLAN: modelos de linguagem mais generalizáveis com ajuste fino de instruções](https://ai.googleblog.com/2021/10/introducing-flan-more-generalizable.html) e [Escalonamento de modelos de linguagem ajustados por instruções](https://arxiv.org/abs/2210.11416).

Os modelos Fine-Tuned LAnguage Net (FLAN) usam o ajuste de instruções para tornar os modelos mais fáceis de resolver tarefas gerais de PNL downstream. SageMaker JumpStart A Amazon fornece vários modelos básicos na família de modelos FLAN. Por exemplo, os modelos FLAN-T5 são ajustados com instruções em uma ampla variedade de tarefas para aumentar o desempenho zero em uma variedade de casos de uso comuns. Com dados adicionais e ajustes, os modelos baseados em instruções podem ser ainda mais adaptados a tarefas mais específicas que não foram consideradas durante o pré-treinamento. 

Para ajustar um LLM em uma tarefa específica usando instruções de tarefas de pares de resposta a prompts:

1. Prepare suas instruções em arquivos JSON. Para obter mais informações sobre o formato necessário para os arquivos do par de resposta a prompts e a estrutura da pasta de dados, consulte [Preparar e fazer upload de dados de treinamento para ajuste baseado em instruções](#jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data).

1. Crie seu trabalho de treinamento ajustado. Para instruções, consulte [Crie um trabalho de treinamento para ajuste baseado nas instruções](#jumpstart-foundation-models-fine-tuning-instruction-based-train).

Você pode encontrar end-to-end exemplos em[Cadernos de exemplo](#jumpstart-foundation-models-fine-tuning-instruction-based-examples).

Somente um subconjunto de modelos JumpStart básicos é compatível com o ajuste fino baseado em instruções. O ajuste fino baseado em instruções está disponível com os seguintes modelos de base: 

**nota**  
Alguns modelos JumpStart básicos, como o Llama 2 7B, exigem a aceitação de um contrato de licença do usuário final antes de ajustar e realizar inferências. Para obter mais informações, consulte [Contratos de licença de usuário final](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 INCITE Instruct 7B V1

## Preparar e fazer upload de dados de treinamento para ajuste baseado em instruções
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data"></a>

Os dados de treinamento para ajuste baseado em instruções devem ser fornecidos no formato de arquivo de texto JSON Lines, em que cada linha é um dicionário. Todos os dados de treinamento devem estar em uma única pasta. A pasta pode incluir vários arquivos .jsonl. 

A pasta de treinamento também pode incluir um modelo de arquivo JSON (`template.json`) que descreve os formatos de entrada e saída dos dados. Se não for fornecido nenhum arquivo de modelo, o seguinte arquivo de modelo será usado: 

```
{
  "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}"
}
```

De acordo com o arquivo `template.json`, cada entrada dos dados de treinamento .jsonl deve incluir os campos `{instruction}`, `{context}` e `{response}`. 

Se você fornecer um modelo de arquivo JSON personalizado, use as teclas `"prompt"` e `"completion"` para definir seus próprios campos obrigatórios. De acordo com o seguinte arquivo de modelo personalizado JSON, cada entrada dos dados de treinamento .jsonl deve incluir os campos `{question}`, `{context}` e `{answer}`:

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

### Dividir dados para treinamento e teste
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-split-data"></a>

Você pode fornecer outra pasta contendo os dados de validação. Essa pasta também deve incluir um ou mais arquivos .jsonl. Se nenhum conjunto de dados de validação for fornecido, uma quantidade definida dos dados de treinamento será reservada para fins de validação. Você pode adaptar a porcentagem de dados de treinamento usados para validação quando for escolher os hiperparâmetros para ajustar seu modelo. 

### Fazer upload de dados de ajuste no Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-upload-data"></a>

Faça upload dos dados preparados para o Amazon Simple Storage Service (Amazon S3) para usá-los no ajuste fino JumpStart de um modelo básico. Você pode usar os seguintes comandos para fazer o upload dos dados:

```
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}")
```

## Crie um trabalho de treinamento para ajuste baseado nas instruções
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-train"></a>

Depois que seus dados forem carregados para o Amazon S3, você poderá ajustar e implantar seu modelo básico. JumpStart Para ajustar seu modelo no Studio, consulte [Ajustar um modelo no Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Para ajustar seu modelo usando o SageMaker Python SDK, consulte. [Ajustar modelos de base disponíveis ao público com a função `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

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

Para obter mais informações sobre ajuste baseado em instruções, consulte os seguintes cadernos de exemplos:
+ [Ajuste os modelos LLa MA 2 em JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)
+ [Introdução à SageMaker JumpStart - Geração de texto com modelos Mistral](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/mistral-7b-instruction-domain-adaptation-finetuning.html)
+ [Introdução à SageMaker JumpStart - Geração de texto com 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 da HuggingFace instrução Text2Text](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/instruction-fine-tuning-flan-t5.html)