Ajustar um grande modelo de linguagem (LLM) usando prompts rápidos
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
Os modelos ajustados de LAnguage Net (FLAN) usam o ajuste de instruções para tornar os modelos mais fáceis de resolver tarefas gerais de PNL downstream. O Amazon SageMaker JumpStart fornece vários modelos de base 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:
-
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.
-
Crie seu trabalho de treinamento ajustado. Para obter instruções, consulte Crie um trabalho de treinamento para ajuste baseado nas instruções.
Você pode encontrar exemplos completos em Cadernos de exemplo.
Apenas um subconjunto de modelos de base do JumpStart é compatível com ajustes baseados em instruções. O ajuste fino baseado em instruções está disponível com os seguintes modelos de base:
nota
Alguns modelos de base do JumpStart, 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.
-
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 INCITE Base 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
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
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
Faça upload dos dados preparados no Amazon Simple Storage Service (Amazon S3) para usá-los no ajuste de um modelo de base do JumpStart. 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
Depois que seus dados forem enviados para o Amazon S3, você poderá ajustar e implantar seu modelo de base do JumpStart. Para ajustar seu modelo no Studio, consulte Ajustar um modelo no Studio. Para ajustar seu modelo usando o SageMaker Python SDK, consulte Ajustar modelos de base disponíveis ao público com a função JumpStartEstimator.
Cadernos de exemplo
Para obter mais informações sobre ajuste baseado em instruções, consulte os seguintes cadernos de exemplos: