Blank white background with no objects or features visible.

NOVA PESQUISA: 80% dos custos de IA são invisíveis na fatura. Mais de 200 líderes revelam para onde o dinheiro vai. Leia→

Ajuste Fino: Modelos OpenAI + Seus Dados do Confluence

By TrueFoundry

Updated: March 16, 2023

Se o ChatGPT é o iPhone, então a AppStore ainda está para ser construída – e essa será uma suíte de aplicações verticais construídas sobre ele. Cada indústria, cada negócio e cada indivíduo irá construir estas aplicações de diversas formas. Desde a construção de um ChatGPT específico para saúde ou manufatura, até a escrita de e-mails específicos de domínio para marketing, a responder a perguntas específicas da empresa a partir da base de conhecimento interna, até mesmo à construção de motores de busca pessoais para responder a perguntas como – qual é o endereço do João ou quando é o aniversário da minha sogra? Escrevemos vários exemplos aqui na nossa publicação de blog anterior.

Por que o ChatGPT não é suficiente por si só para estas aplicações verticais?

Para entender isso, é importante compreender a web clara vs a web profunda:

  • Web Clara: páginas web publicamente acessíveis indexadas por motores de busca. ex: Wikipédia, livros, publicações em redes sociais, etc.
  • Web Profunda: parte da internet que está por trás de um sistema de autenticação. ex: seu e-mail, ou plataformas SaaS. Isso constitui 96% da web.

Modelos como o ChatGPT são treinados em um conjunto de dados massivo, mas tudo isso está disponível na web clara. Portanto, você não pode fazer uma pergunta cuja resposta dependa de algo na web profunda, como seu e-mail ou documentos privados. No entanto, no processo de aprendizado a partir do massivo conjunto de dados da web clara, modelos como o ChatGPT constroem tanta inteligência sobre a linguagem e a semântica que se torna muito mais fácil para eles aprenderem novas informações a partir de pequenas quantidades de dados para uma tarefa específica.

Entra em cena o ajuste fino

O ajuste fino é uma técnica poderosa que nos permite aproveitar o conhecimento e o aprendizado de um modelo pré-treinado como o ChatGPT para melhorar o desempenho do modelo em uma nova tarefa, treinando-o em um conjunto de dados menor e específico para a tarefa. Por exemplo, digamos que você queira construir um sistema de perguntas e respostas para seus documentos internos da empresa armazenados no Confluence. Você pode passar todo o conteúdo de texto do seu Confluence e fazer o ajuste fino de um modelo GPT com eles.

Parece simples. Por que nem todo mundo está fazendo isso?

Embora a OpenAI tenha reduzido muito o atrito através de suas APIs de ajuste fino, ainda requer bastante consideração, planejamento e esforço em diferentes eixos –

Preparação de Dados

Os dados que você precisa para fazer o ajuste fino dos modelos devem estar em um formato específico de par prompt-conclusão.

{“prompt”: <prompt-text>, “completion”: <ideal generated text>}

Alguns pontos a considerar:

  1. Não é trivial pegar documentos arbitrários, como documentos de confluence da empresa, e convertê-los em exemplos de alta qualidade no formato acima.
  2. Você precisa de algumas centenas de prompts no mínimo, o que exige esforço humano e conhecimento especializado no assunto.
  3. Separadores cuidadosos marcando o início e o fim do prompt e das conclusões que não aparecem no texto. Você também precisa garantir que os prompts de entrada usem os mesmos delimitadores posteriormente.
  4. Aumentar o número de exemplos melhora o desempenho do modelo.
  5. Algo tão simples como adicionar um espaço antes do início da conclusão pode melhorar o desempenho.

Seleção de Modelo

A OpenAI possui vários modelos que podem ser ajustados e cada um deles apresenta vantagens e desvantagens que precisam ser consideradas.

  1. Ada: Modelos menores e mais rápidos são fáceis de ajustar e funcionam bem em várias tarefas, como classificação, geração de linguagem e resposta a perguntas. Dado que possui menos parâmetros, também é menos performático que outros e pode comprometer a precisão.
  2. Curie: Maior e mais poderoso que o Ada e também de propósito geral. Torna-se mais difícil de ajustar em conjuntos de dados menores devido a um grande número de parâmetros.
  3. Babbage: Projetado para tarefas de PNL que exigem conhecimento especializado, como direito ou medicina, e pode ser muito bem ajustado. Não é tão de propósito geral e não é adequado para ajuste em conjuntos de dados maiores ou tarefas mais complexas.
  4. Davinci: O maior e mais poderoso modelo de propósito geral. Muito difícil de treinar em hardware menos potente e deve ser usado para tarefas complexas de PNL.

Nota: Você também pode ajustar incrementalmente um modelo previamente ajustado. Existe uma limitação no prazo devido a mudanças nas APIs, os modelos devem ter sido ajustados após 21 de abril de 2022.

Seleção de Hiperparâmetros

Tentamos usar as APIs de ajuste da OpenAI com parâmetros padrão e elas funcionaram muito bem em algumas das tarefas, mas conseguimos melhorias de até 40% ao ajustar os hiperparâmetros.

  1. Multiplicador da Taxa de Aprendizagem: assume por padrão 0.05, 0.1 ou 0.2, dependendo do `batch_size` final. A taxa de aprendizagem de ajuste é a taxa de aprendizagem original usada para o pré-treinamento multiplicada por este multiplicador. A taxa de aprendizagem determina a rapidez com que o modelo ajusta seus pesos durante o treinamento. Uma taxa de aprendizagem muito alta pode fazer com que o modelo convirja para uma solução subótima, enquanto uma taxa de aprendizagem muito baixa pode fazer com que o modelo convirja muito lentamente ou fique preso em um mínimo local. A OpenAI recomenda usar taxas de aprendizagem maiores para `batch sizes` maiores, mas geralmente operando entre 0,02 e 0,2.
  2. Tamanho do Lote: o padrão é ~0,2% do número de exemplos no conjunto de treinamento, limitado a 256. O tamanho do lote determina quantos exemplos são processados em cada iteração de treinamento. Um tamanho de lote maior pode levar a tempos de treinamento mais rápidos, mas também pode fazer com que o modelo sofra superajustamento ou resulte em maior uso de memória. Geralmente, recomenda-se usar um tamanho de lote tão grande quanto possível sem causar uso excessivo de memória.
  3. Número de Épocas: o padrão é 4. O número de épocas determina quantas vezes o modelo será treinado em todo o conjunto de dados. Poucas épocas podem resultar em subajustamento, enquanto muitas épocas podem resultar em superajustamento. Geralmente, recomenda-se monitorar o desempenho do modelo em um conjunto de validação e interromper o treinamento quando o desempenho parar de melhorar.
  4. Peso da Perda do Prompt: o padrão é 0,01. O peso a ser usado para a perda nos tokens do prompt. Isso controla o quanto o modelo tenta aprender a gerar o prompt (em comparação com a conclusão, que sempre tem um peso de 1,0), e pode adicionar um efeito estabilizador ao treinamento quando as conclusões são curtas. Para prompts curtos, a OpenAI recomenda aumentar este número e para prompts longos, um peso pequeno funciona melhor.
  5. Modelo: o padrão é curie. A tabela de seleção de modelos descrita acima também é um hiperparâmetro, mas sentimos que merecia uma menção especial, dada a sua importância neste processo como ponto de partida.

Consideração de custo

Os custos de ajuste fino variam muito dependendo dos parâmetros que você decidir escolher, por isso é muito importante ter uma compreensão sólida.

📌

Para 1M de tokens:
- Ada: $0.4
- Babbage: $0.6
- Curie: $3
- Davinci: $30.

  1. 1 token equivale a aproximadamente 4 caracteres ou 0,75 palavras.
  2. Davinci é quase 100 vezes mais caro que Ada.
  3. Curie é 10 vezes mais caro que Ada e é o modelo padrão.
  4. Para se ter uma ideia, a Wikipedia tem aproximadamente 5 bilhões de tokens, então o ajuste fino de um modelo Curie custaria impressionantes $15000. Esta é apenas uma afirmação acadêmica, pois esses modelos já são pré-treinados na Wikipedia. Por favor, guarde seu dinheiro.
  5. O número de tokens de treinamento também depende das suas épocas de treinamento. Basicamente, o total de tokens de treinamento = tokens no seu arquivo * número de épocas.

📌

Usar modelos ajustados é significativamente mais caro (~5x) do que os modelos pré-treinados.

Para 1M de tokens,
- Ada: $1.6 vs $0.4
- Babbage: $2.4 vs $0.5
- Curie $12 vs $2
- DaVinci $120 vs $20

Ao usar o modelo, parâmetros como bestof e n também afetam seu custo, pois você acaba gerando múltiplas conclusões para um único prompt. Considere usar max_response_length para economizar custos ou reduzir o uso dos parâmetros best_of e n.

Estudo de Caso. Ajuste Fino com Documentos do Confluence

Construir um modelo ajustado para o nosso próprio conjunto de dados do Confluence não foi trivial. Envolveu o seguinte processo de 4 etapas.

Obtenção de Dados

Foi preciso um certo esforço para descobrir como ler todos os dados do Confluence através de suas APIs, pois o Confluence possui dados ricos com tabelas, títulos e subtítulos, e eu tive que convertê-los em texto simples para facilitar o uso. Além disso, gerenciar permissões e o nível certo de acesso não foi trivial. Finalmente, conseguimos criar um formulário muito simples onde você envia a URL, nome de usuário e Chave de API, e nós podemos obter os dados.

Pré-processamento de Dados

Esta foi a parte mais difícil. Aqui tentamos várias abordagens-

  1. Divisão aleatória de frases: com base no número de palavras em prompts e conclusões
  2. Regex: Separando frases com base em palavras como- e, mas, no entanto, etc.
  3. ChatGPT: Contextualizando o ChatGPT e pedindo para gerar perguntas.  

Acabamos selecionando a maioria dos pares do #3, mas também incluímos algumas amostras aleatórias dos #1 e #2 acima. Para o nosso conjunto de dados, geramos mais de 50.000 pares de prompts e conclusões, com um comprimento médio de 17 palavras para o prompt e 133 palavras para a resposta, totalizando 150 palavras por par. Idealmente, esta etapa exigiria muito mais experimentação.

Ajuste fino do modelo

Experimentamos diferentes modelos e hiperparâmetros e percebemos que Curie tende a ter um desempenho melhor que Ada ou Babbage, mas achamos que Ada era aceitável dada a relação custo-benefício. Não tentamos Davinci. Tivemos que ajustar a taxa de aprendizado e nos estabelecemos em 0,05, enquanto executamos o modelo por 6 épocas. O custo de treinar 1 execução de Curie foi de cerca de US$ 30 e Ada de cerca de US$ 4. No geral, através de uma série de experimentações, pode ter nos custado US$ 400 em créditos OpenAI para o ajuste fino – também tivemos algumas execuções ruins.

Testes

Percebemos que o modelo ajustado teve um desempenho estritamente melhor que o modelo original em nossas perguntas relacionadas ao conjunto de dados interno. Pedimos à nossa equipe para testar cerca de 100 prompts e os avaliamos manualmente. Isso não é científico, mas funcionou para este caso de uso simples. Curiosamente, notamos que, em alguns casos, o modelo ajustado teve um desempenho pior que o modelo original para consultas gerais. Ainda precisamos depurar o que está acontecendo aqui.

Este foi um exercício divertido e continuaremos a experimentar o ajuste fino em outros conjuntos de dados.

📌

Se você quiser algum conjunto de dados específico, ou quiser que eu disponibilize este aplicativo para ser usado em seu próprio Confluence, entre em contato comigo em nikunj@truefoundry.com

TrueFoundry é uma PaaS de Implantação de ML sobre Kubernetes para acelerar os fluxos de trabalho dos desenvolvedores, ao mesmo tempo que lhes permite total flexibilidade no teste e implantação de modelos, garantindo total segurança e controle para a equipe de Infraestrutura. Através da nossa plataforma, capacitamos as equipes de Machine Learning a implantar e monitorar modelos em 15 minutos com 100% de confiabilidade, escalabilidade e a capacidade de reverter em segundos – permitindo-lhes economizar custos e lançar modelos em produção mais rapidamente, possibilitando a realização de valor de negócio real.  

The fastest way to build, govern and scale your AI

Sign Up
Table of Contents

Govern, Deploy and Trace AI in Your Own Infrastructure

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo

Discover More

July 20, 2023
|
5 min read

LLMOps CoE: A próxima fronteira no cenário de MLOps

May 25, 2023
|
5 min read

LLMs de Código Aberto: Abrace ou Pereça

August 27, 2025
|
5 min read

Mapeando o Mercado de IA On-Prem: De Chips a Planos de Controle

September 28, 2023
|
5 min read

O que é Ajuste Fino LoRA? O Guia Definitivo

May 21, 2026
|
5 min read

Adicionando OAuth2 a Jupyter Notebooks no Kubernetes

Engenharia e Produto
May 21, 2026
|
5 min read

Uma equipe de 2 pessoas atendendo um modelo para 1,5 milhão de pessoas com TrueFoundry

Engenharia e Produto
May 21, 2026
|
5 min read

Acelere o Processamento de Dados em 30–40x com NVIDIA RAPIDS no TrueFoundry

GPU
Engenharia e Produto
May 21, 2026
|
5 min read

Uma Parceria para IA Responsável: Truefoundry e Enkrypt AI

No items found.
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Take a quick product tour
Start Product Tour
Product Tour