![]() |
Fonte: DALL-E 3 |
Melhorando a qualidade e a eficiência de aplicativos de IA
Ao criar aplicativos de IA generativa, selecionar um LLM que melhor atenda aos requisitos do seu aplicativo é crucial para o sucesso. Este artigo do Medium descreve este ponto em detalhes:
A escolha do modelo de linguagem grande (LLM) certo é uma das decisões mais importantes que você tomará para seu produto baseado em IA. Esteja você integrando IA em um software existente ou construindo um produto totalmente novo, sua escolha de LLM terá um grande impacto na qualidade de suas saídas orientadas por IA e na experiência geral do usuário. Também acarreta implicações significativas para muitos outros aspectos de seu produto, incluindo custo, desempenho e segurança.
Existem várias considerações a serem levadas em conta. Aqui estão apenas algumas:
- A consideração do caso de uso é fundamental Correndo o risco de parecer óbvio, você deve entender os requisitos para projetar o aplicativo corretamente e escolher os melhores componentes para o trabalho. O LLM não é exceção. Há um número crescente de LLMs especializados, alguns dos quais foram ajustados para casos específicos (por exemplo, conclusão de bate-papo, resumo) e treinados em certos domínios (por exemplo, geração de código).
- Considerações de implantação Quantos recursos você tem à mão? E qual é o seu orçamento? O tamanho do modelo tende a ser diretamente proporcional ao custo de operação (ou seja, modelos LLM maiores consomem mais poder de computação).
Achei que seria interessante observar os efeitos na saída gerada por um chatbot de IA ao alternar entre vários LLMs diferentes.
O caso de uso
![]() |
Fonte: DALL-E 3 |
Desenvolvi um aplicativo de escrita com IA generativa que atende aos seguintes requisitos funcionais:
- Corrige erros de ortografia e gramática em texto de entrada em inglês fornecido pelo usuário,
- Fornece uma lista detalhada das correções feitas,
- Apresenta duas seções distintas para o texto aprimorado e a lista com marcadores,
- Emite sua saída em formato markdown para ser usada em um contexto de navegador da web.
É um aplicativo simples projetado para ser executado em um PC e GPU de consumidor, como este:
- Um PC Ubuntu Linux baseado em Intel i7 com 32 GB de RAM, e
- Uma GPU NVIDIA GeForce GTX 1050 TI com 4 GB de VRAM.
Critérios de avaliação
Mas como devo avaliar as mudanças da saída? Eu estava curioso sobre os efeitos em:
- Erros de ortografia e gramática observados,
- Consistência da formatação markdown,
- Alucinações observadas.
O LLM selecionado
Os três modelos que avaliei são:
- O Phi3 da Microsoft (3,8 bilhões de parâmetros)
- O TinyLlama do StatNLP Research Group (1,1 bilhão de parâmetros)
- O Gemma do Google (7 bilhões de parâmetros)
Todos os três são LLMs de código aberto de pequena pegada, treinados em texto em inglês e linguagens de programação, ajustados para casos de uso de bate-papo e pequenos o suficiente para serem executados em hardware de consumidor. Com a seleção desses modelos, senti-me confiante de que eles podem atender aos requisitos funcionais e não funcionais e serem implantados no ambiente de execução.
O prompt do sistema
Para aumentar a qualidade e a confiabilidade da saída gerada, a elaboração da redação dos prompts é crucial. Este conceito é o cerne da engenharia de prompt. Para este exercício, utilizei o mesmo prompt de sistema para todos os três LLMs. O prompt fornece um contexto detalhado sobre qual conteúdo eles devem produzir e requisitos de formatação claros:
|
O texto de entrada
Aqui está o parágrafo que enviei para correção:
|
Microsoft Phi3 (3.8b)
Fiquei surpreso quando o Phi3 alucinou ao gerar correções neste parágrafo simples, começando pela primeira frase. Ele fez algumas correções e melhorias de linguagem, mas rapidamente saiu do tópico e produziu texto que se desviava significativamente do contexto original. Além disso, não atendeu totalmente aos requisitos de formatação.
|
TinyLlama (1.1b)
Para seu crédito, o TinyLlama não exibiu as alucinações grosseiras que atingiram o Phi3 quando gerou o texto corrigido. No entanto, ele experimentou alucinações ao listar todas as suas correções e lutou para atender aos requisitos de formatação satisfatoriamente.
|
Google Gemma (7b)
Dos três modelos, o Gemma produziu a saída gerada de maior qualidade, com as duas seções formatadas de forma consistente. No entanto, ele exibiu algumas alucinações em suas correções detalhadas.
|
Responsividade
Você pode ter notado que os três modelos LLM diferem em termos de tamanho de parâmetros (1,1 bilhão vs. 3,8 bilhões vs. 7 bilhões de parâmetros). A velocidade com que eles geram sua saída também foi notável e esperada: o TinyLlama foi o mais rápido, pois o modelo contém o menor número de parâmetros dos três, o Gemma o mais lento porque é o maior, e o Phi3 com desempenho em algum lugar intermediário.
Reflexões
A qualidade do texto escrito gerado pode ser subjetiva, pois há muitas maneiras de selecionar palavras e frases para transmitir ideias; no entanto, essa subjetividade é o que torna a escrita criativa uma arte em vez de uma ciência.
Dito isso, não há desculpa para erros de ortografia ou gramática. Achei que o Gemma se destacou na produção de seu texto corrigido sem erros. Além disso, menção especial deve ser dada ao TinyLlama: o menor e mais rápido do grupo. A qualidade geral é impressionante, dado o tamanho do modelo. Por exemplo, neste teste, ele emitiu apenas um erro menor (na última frase, onde "alimenta" deveria ser substituído por "alimentam").
Outra observação: todos os três LLMs experimentaram alucinações, em graus variados, ao detalhar as correções que fizeram.
Antes de tirar conclusões deste teste, é essencial notar sua limitação crucial: o teste usou apenas um parágrafo. Um texto de entrada diferente poderia levar a níveis variados de qualidade no conteúdo gerado.
Se você estiver curioso e quiser experimentar rapidamente diferentes LLMs usando este mesmo caso de uso, sinta-se à vontade para bifurcar meu projeto do Github.
Se você tem suas próprias reflexões sobre aplicativos de IA generativa, o uso de LLMs de código aberto de pequena pegada e como melhorar a qualidade do conteúdo que eles produzem, deixe um comentário neste blog ou em meus feeds do LinkedIn ou Mastodon. Eu adoraria ouvir de você!