O ajuste rápido (quick tuning) é quando você refina as saídas do LLM fazendo alterações nos prompts. O ajuste rápido capacita os desenvolvedores a aplicar rapidamente modelos generalizados a tarefas novas e específicas com flexibilidade, velocidade e eficiência de custo, sem ajustes finos.
Vamos nos aprofundar na importância do ajuste de prompt e suas diversas abordagens, incluindo o ajuste rígido (hard prompting) e o ajuste suave (soft prompting).
Tipos de Soft Prompting
- Ajuste Rápido
- Afinação de Prefixo
- P-afinação
- Ajuste de Prompt Multitarefa
- Ajuste Programático
O que é Hard Prompting?
O prompt rígido é quando você cria modelos para diferentes tarefas que envolvem o prompt gerado pelo usuário. É a abordagem mais direta para ajuste de prompt.
Essa técnica se aplica melhor a trabalhos repetitivos e orientados a tarefas, sendo utilizada pelos engenheiros para adaptar rapidamente modelos de linguagem a tarefas específicas.
O hard prompting distingue entre prompts do sistema, que instruem o LLM sobre como se comportar, e aplica-se a vários prompts do usuário focados na tarefa específica. Você pode facilmente sobrescrever prompts do usuário com prompts subsequentes, enquanto os prompts do sistema são mais persistentes.
O exemplo abaixo do LangChain informa ao sistema que ele é uma IA útil e o que fazer com o prompt ou entrada do usuário.
LangChain fornece um conjunto abrangente de ferramentas e módulos para construir e implementar aplicativos baseados em modelos de linguagem, incluindo aplicativos poderosos como encadeamento e criando agentes.
Um exemplo popular de uma cadeia de prompting difícil é a recuperação geração aumentada modelo, que combina modelos de linguagem pré-treinados com recuperação de conhecimento externo para gerar respostas mais informadas e relevantes. O modelo de prompt informa o modelo para responder ao prompt do usuário dado o contexto recuperado do banco de dados externo.
O objetivo dos modelos RAG é reduzir alucinações fornecendo contexto e introduzindo dados específicos sem a necessidade de retreinar o modelo.
O prompting rígido tem algumas desvantagens, como instabilidade e falta de controle refinado sobre o comportamento do modelo. Aprender o prompt apropriado exige uma abordagem de tentativa e erro. Além disso, depende do julgamento do usuário, e a instabilidade pode se agravar em pipelines.
Entre com um prompt suave.
O que é Soft Prompting?
Os prompts suaves envolvem o ajuste fino de um token embedding, que é uma representação vetorial numérica dos tokens em que palavras semelhantes estarão mais próximas em distância, e é personalizado para a tarefa específica em vez de para o modelo inteiro. Ao contrário dos prompts rígidos, os prompts suaves não são legíveis por humanos.
Ele se concentra em tokens específicos de tarefa em vez de pesos de modelo, que são os parâmetros aprendidos do modelo que transmitem a importância dos recursos de entrada. Isso permite um treinamento mais eficiente ao custo da generalização entre tarefas e é particularmente útil para cenários de tarefa única e treinamento único.
Hugging Face, uma plataforma popular para tarefas de processamento de linguagem natural, fornece excelente documentação sobre soft prompting.
Para começar a usar o soft prompting, você precisará ajustar seus embeddings usando técnicas como ajuste fino com eficiência de parâmetros, que é um conjunto de técnicas para atualizar pesos de modelos sem grandes custos computacionais ou de tempo.
Tipos de afinação suave
Ajuste rápido
O ajuste rápido se concentra na atualização de um token singular incorporado na camada de entrada inicial do modelo.
Ele é focado em modelos baseados em codificadores, como BERT, que são mais adequados para tarefas de classificação de texto. Embora o foco em um único token de incorporação diminua o tempo e o custo do treinamento, ele pode enfrentar problemas com modelos menores com menos de 1 bilhão de parâmetros.
Ajuste rápido não é o mesmo que engenharia rápidaque envolve a criação de um novo modelo.
Afinação de prefixo
Afinação de prefixo é uma técnica de solicitação suave que ajusta a incorporação de tokens de cada bloco transformador em vez de apenas a incorporação inicial. Ele foi projetado especificamente para Bartôou modelos decodificadores casuais, e usa uma rede feed-forward em vez de incorporações para reduzir parâmetros.
O ajuste de prefixo é mais adequado para tarefas de geração. Como o ajuste de prefixo atualiza os embeddings em todo o modelo, ele requer mais treinamento do que o ajuste de prompt, mas pode se adaptar melhor para modelos menores.
P-Ajuste
P-ajuste é uma variante do soft prompting, onde é possível inserir embeddings de tokens específicos de tarefas em qualquer lugar do texto, e não apenas no início. Esse método opera em cada camada do modelo, similar ao ajuste de prefixo, permitindo que camadas profundas afetem diretamente as previsões do modelo e ajudando a escalar em diversos tamanhos de modelo.
Diferentemente do ajuste de prefixo, o P-ajuste é baseado em modelos de codificador, tornando-o eficaz para tarefas de compreensão de linguagem natural. Este é um subconjunto do NLP focado em entender o significado de sentenças para tarefas como classificação, em oposição a tarefas de geração como conclusão ou sumarização.
Além disso, a camada de reparametrização, que reduz o tamanho do espaço de incorporação para aumentar a estabilidade e o desempenho por ter menos parâmetros, pode ser uma rede de alimentação direta ou um modelo de memória de curto prazo longa.
Métodos diferentes têm melhor desempenho para diferentes tarefas e conjuntos de dados. Em vez de um verbalizador, como no prompt e no prefix tuning, que combina palavras de rótulo com rótulos de classe, esse método usa um cabeçalho de classificação inicializado aleatoriamente no topo dos tokens.
Isso permite tarefas de rotulagem de sequência, como reconhecimento de entidade nomeada, que atribui categorias predefinidas a palavras em uma frase, e respostas extrativas a perguntas.
Ajuste de prompt multitarefa
Ajuste de prompt multitarefa é uma técnica avançada que divide o treinamento em duas partes.
A primeira parte, treinamento de origem, envolve treinamento em múltiplas tarefas, enquanto a segunda parte, adaptação de destino, envolve o ajuste fino das incorporações para uma tarefa específica.
Para realizar isso, o ajuste de prompt multitarefa combina prompts específicos de tarefa em uma matriz singular compartilhada entre tarefas. Isso é semelhante a treinamento multi-perda.
Prompt programático (Oobleck)
DSPy é uma nova abordagem que modulariza o ajuste de prompt, tornando-o mais parecido com a engenharia de software. Ela visa simplificar o processo de ajuste de prompt e torná-lo mais acessível aos desenvolvedores.
Está entre as estruturas de prompt rígidas e flexíveis. O DSPy cria um Estrutura baseada em Python para definir assinaturas (ou seja, context, question -> answer
) e treina um modelo para otimizar um prompt legível por humanos para a tarefa.
Esses prompts gerados podem levar a cadeias de pensamento que inicialmente não seriam aparentes, reduzindo a dependência de tentativa e erro e tornando o prompt mais sistemático.
O DSPy simplifica recuperações multi-hop, tarefas com várias etapas onde a saída de uma etapa se torna a entrada para a próxima etapa. Ele também gera exemplos para aprendizagem k-shote foi projetado para integrar-se a um grande pipeline de modelos de linguagem.
Espere mudanças, pois a base de código está em desenvolvimento ativo.
Use o Prompt Tuning para aprimorar suas soluções de IA
O prompt rígido oferece uma abordagem rápida e legível, mas pode sofrer com instabilidade, enquanto o prompt suave fornece uma solução mais robusta e repetível, embora com uma natureza de caixa preta e a necessidade de treinamento por tarefa.
À medida que o ajuste rápido continua a evoluir, surgem questões interessantes sobre as habilidades e a experiência necessárias para a engenharia rápida: Como você entreviste um engenheiro rápido? Quais são as principais competências e melhores práticas neste campo?
O ajuste rápido é uma área empolgante e em rápida evolução da pesquisa e desenvolvimento de IA. Ao entender as várias abordagens e técnicas disponíveis, desenvolvedores e pesquisadores podem aproveitar o poder dos modelos de linguagem para criar soluções de IA mais flexíveis, eficientes e econômicas.