Ajuste fino de modelos grandes de todo o processo
Recomenda-se que o processo acima seja rigorosamente seguido durante o processo de ajuste fino para evitar pular etapas, o que pode resultar em trabalho ineficaz. Por exemplo, se o conjunto de dados não for construído adequadamente e o efeito ruim do modelo ajustado acabar sendo um problema com a qualidade do conjunto de dados, então os esforços preliminares serão desperdiçados e metade do esforço será feito.
Coleta e agrupamento do conjunto de dados
Com base na disponibilidade dos conjuntos de dados, eles podem ser categorizados em dois tipos: conjuntos de dados disponíveis publicamente e conjuntos de dados de difícil acesso.
Como posso obter acesso a conjuntos de dados disponíveis publicamente?
A maneira mais fácil de acessar conjuntos de dados disponíveis publicamente é pesquisá-los e baixá-los por meio de plataformas de código aberto relevantes. Por exemplo, plataformas como GitHub, Hugging Face, Kaggle, Magic Hitch etc. fornecem um grande número de conjuntos de dados abertos. Além disso, você também pode tentar obter dados de alguns sites por meio da tecnologia de rastreamento, como posting, Zhihu, sites verticais do setor etc. O uso de rastreadores para obter dados geralmente requer algum suporte técnico e o cumprimento de leis e regulamentos relevantes.
E se os dados necessários não estiverem disponíveis ou forem difíceis de obter na rede?
Quando os conjuntos de dados existentes disponíveis publicamente não atendem à demanda, outra opção é criar você mesmo o conjunto de dados. Entretanto, a criação manual de centenas a milhares de conjuntos de dados costuma ser tediosa e demorada. Então, como você pode criar conjuntos de dados de forma eficiente? Duas ideias comuns para criar conjuntos de dados rapidamente são descritas abaixo:
1. aproveitar os recursos de "aprimoramento de dados" da plataforma Big Model
Atualmente, muitas plataformas de modelos grandes oferecem a função de aprimoramento de dados, o que pode nos ajudar efetivamente a expandir o conjunto de dados. Por exemplo, a plataforma aberta de espectrometria de massa, a plataforma aberta Xunfei, a plataforma aberta Volcano, etc., podem ser usadas para gerar rapidamente mais amostras usando dados brutos por meio da função de aprimoramento dessas plataformas. Em primeiro lugar, uma pequena quantidade de dados (por exemplo, 50 entradas) é preparada manualmente e carregada nessas plataformas. As plataformas expandirão os dados por meio da tecnologia de aprimoramento de dados para realizar rapidamente a expansão do conjunto de dados.
2. geração de dados usando modelos grandes
Outra maneira eficiente de gerar dados é com a ajuda de um modelo grande. Primeiro, uma pequena quantidade de dados (por exemplo, algumas dezenas) é preparada e alimentada como exemplos para o modelo grande. O modelo grande pode gerar conteúdo de dados semelhante com base nesses exemplos. Para garantir a qualidade dos dados gerados, recomenda-se não gerar muitos dados de uma só vez na primeira rodada de geração, mas sim 20 partes de dados e revisá-los cuidadosamente para identificar erros comuns que o Big Model pode cometer. Esses exemplos de erros são, então, enviados de volta ao Big Model para melhorar a geração.
Prompt de exemplo: Com base no exemplo a seguir, produza 20 perguntas semelhantes sobre "sorte recente". Observe que a linguagem deve ser realista e não muito exagerada, evite o uso de determinantes ou gerúndios, como "em atividades", "em competições" etc., e tente ser o mais conciso possível, evitando modificações desnecessárias. Exemplo: Este trimestre está indo bem para mim? Serei rico neste trimestre? Que coisas estão esperando por mim ultimamente? O que acontecerá em um futuro próximo? Serei favorecido pelos deuses da sorte em um futuro próximo?
Limpeza de dados e construção de conjuntos de dados de ajuste fino
Os conjuntos de dados brutos geralmente não são compatíveis com o treinamento do modelo, portanto, precisam ser limpos e processados para torná-los compatíveis com o formato no qual o modelo foi aprendido. Na maioria dos casos, os conjuntos de dados ajustados são geralmente construídos usando o formato AIpaca.
Introdução ao formato AIpaca
O formato AIpaca tem uma estrutura simples e é particularmente adequado para tarefas como geração de texto, tradução, sumarização e, especialmente, para o ajuste fino de instruções orientadas a tarefas em uma única rodada. A seguir, uma explicação detalhada de seus principais componentes:
- instrução: uma instrução de tarefa, semelhante a uma entrada de usuário (obrigatória), que diz explicitamente ao modelo o que fazer.
- input: a entrada exigida pela tarefa. Geralmente pode ser uma cadeia de caracteres vazia quando a tarefa é aberta ou não exige entrada explícita.
- output: o output desejado que o modelo precisa gerar com base nas instruções e inputs, ou seja, a resposta de referência (necessária).
- sistema: pode ser considerado um Prompt avançado para o modelo, usado para definir o comportamento do modelo, geralmente algumas dicas iniciais (opcionais) para o modelo.
- histórico: informações do diálogo histórico que ajudam o modelo a estabelecer relações contextuais. Em uma tarefa de várias rodadas, o modelo gera respostas (opcional) com base no diálogo do histórico.
Por exemplo, o formato de dados do AIpaca é o seguinte:
[ { "instruction": "Forme uma frase usando as palavras 'dream' (sonho), 'perseverance' (perseverança) e 'success' (sucesso)." , "input": "", "output": "Somente persistindo em perseguir seus sonhos você poderá ter sucesso." }, { "instruction": "Faça uma breve introdução a O Romance dos Três Reinos." , "input": "", "output": "O Romance dos Três Reinos é uma das Quatro Grandes Obras-Primas da China Clássica, retratando a história de quase um século, desde o final da Dinastia Han Oriental até os primeiros anos da Dinastia Jin Ocidental, contando o caos das guerras entre os senhores da guerra da Dinastia Han Oriental e as lutas políticas e militares entre Wei, Shu e Wu, e retratando vários personagens heroicos." } ]
Metodologia de construção do conjunto de dados
Para criar um conjunto de dados de ajuste fino, geralmente precisamos converter os dados em um arquivo JSON que esteja em conformidade com o formato AIpaca. Abaixo estão dois métodos comuns de criação de conjuntos de dados:
- Construção manual de conjuntos de dados: depois de organizar os dados necessários e construí-los de acordo com o formato AIpaca, os conjuntos de dados podem ser construídos manualmente escrevendo código Python. Esse método é adequado para cenários simples e conjuntos de dados pequenos.
- Construção automatizada usando macromodelos: geração automatizada de conjuntos de dados chamando interfaces de macromodelos. Essa abordagem é adequada para conjuntos de dados em grande escala, especialmente quando a tarefa tem um padrão relativamente fixo de instruções e saídas.
Formato do conjunto de dados completo
O formato AIpaca completo é mostrado abaixo, contendo os comandos da tarefa, entradas, saídas, palavras de prompt do sistema e informações de histórico de diálogo:
[ { "instruction": "Instrução humana (obrigatória)", "input": "Entrada humana (opcional)", "output": "Resposta do modelo (obrigatório)", "system": "Prompts do sistema (opcional)", "history": [ ["Instruções da 2ª rodada (opcional)", "Respostas da 2ª rodada (opcional)" ] ] } ]
O formato ajuda o modelo a aprender a relação de mapeamento das instruções para os resultados, de forma semelhante a dar ao modelo problemas práticos em que instrução + entrada = pergunta e saída = resposta.
Seleção do modelo básico
- Seleção do tipo de modelo: selecione o modelo básico, como GPT, LLaMA ou BERT, com base nos requisitos da tarefa.
- Tamanho e parâmetros: decida o tamanho do modelo (por exemplo, 7B, 13B ou 65B de parâmetros), levando em conta os recursos de computação, o tempo de treinamento e a velocidade de inferência.
- Modelos de código aberto versus modelos comerciais: analise a necessidade de escolher entre modelos de código aberto (por exemplo, LLaMA, Falcon) ou modelos comerciais de código fechado (por exemplo, a família OpenAI GPT).
- Usando os dados de teste, faça um teste de comparação para encontrar o melhor ajuste entre os vários modelos selecionados.
Descrição dos parâmetros do modelo
As cinco perguntas da alma
I. O que é ajuste fino?
O ajuste fino é o processo de treinamento adicional de um modelo já pré-treinado com um novo conjunto de dados. Esses modelos pré-treinados geralmente já aprenderam recursos e conhecimentos avançados em grandes conjuntos de dados e têm determinados recursos genéricos. O principal objetivo do ajuste fino é migrar esse conhecimento genérico para uma tarefa ou domínio novo e mais específico, de modo que o modelo possa resolver melhor um problema específico.
II Por que fazer o ajuste fino?
1. economia em recursos de computação
O treinamento de um modelo grande a partir do zero exige muitos recursos computacionais e tempo e é muito caro. O ajuste fino usa modelos pré-treinados como ponto de partida e requer menos treinamento em novos conjuntos de dados para obter bons resultados, reduzindo muito o custo e o tempo de computação.
2. aprimoramento do desempenho do modelo
Os modelos pré-treinados, embora tenham recursos generalizados, podem não ter um bom desempenho em tarefas específicas. O ajuste fino melhora a precisão e a eficiência, ajustando os parâmetros do modelo com dados específicos do domínio para torná-los mais aptos a lidar com a tarefa-alvo.
3. adaptação a novas áreas
Os modelos genéricos pré-treinados podem não compreender bem as características dos dados em um domínio específico, e o ajuste fino pode ajudar os modelos a se adaptarem a novos domínios e torná-los melhores no tratamento de dados em tarefas específicas.
III O que você ganha com o ajuste fino?
O ajuste fino produz um modelo otimizado e ajustado. Esse modelo baseia-se na estrutura do modelo pré-treinado original, mas seus parâmetros foram atualizados para se adaptar melhor a novas tarefas ou requisitos de domínio.
Exemplos:
Suponha que haja um modelo de classificação de imagens pré-treinado que reconheça objetos comuns. Se tipos específicos de flores precisarem ser reconhecidos, o modelo poderá ser ajustado com um novo conjunto de dados contendo várias imagens e rótulos de flores. Após o ajuste fino, os parâmetros do modelo são atualizados para reconhecer com mais precisão esses tipos de flores.
IV. Como colocar o modelo ajustado em uso na produção?
1. implantação no ambiente de produção
A integração de modelos em sites, aplicativos móveis ou outros sistemas pode ser implantada usando servidores de modelos ou serviços em nuvem, como as APIs fornecidas pelo TensorFlow Serving, TorchServe ou Hugging Face.
2. tarefas de raciocínio
Use o modelo ajustado para inferência, por exemplo, para fazer previsões com base em dados ou para analisar resultados.
3. atualização e otimização contínuas
Com base em novos requisitos ou feedback, o modelo é ajustado ainda mais ou mais dados são adicionados para treinamento a fim de manter o desempenho ideal do modelo.
V. Como escolher um método de ajuste fino?
- LoRA: adaptação de baixa classificação para reduzir o tamanho dos parâmetros de ajuste fino para ambientes com restrição de recursos.
- QLoRA: otimização quantitativa baseada em LoRA para um tratamento mais eficiente do ajuste fino de modelos grandes.
- P-tuning: uma técnica de aprendizado de dicas, adequada para tarefas com pequenas amostras ou pequenas quantidades de dados rotulados.