Como otimizar aplicativos de AI generativa com o Fireworks AI e o MongoDB para ter o máximo desempenho
Otimize a AI com MongoDB e Fireworks AI: inferência mais rápida, custos reduzidos e aplicativos RAG eficientes.
Casos de uso: IA generativa, Ajuste de desempenho do modelo
Setores: Serviços financeiros
Produtos: MongoDB Atlas
Parceiros: Fireworks AI, LangChain
Visão Geral da Solução
Com o surgimento da AI, entregar alto desempenho passou a ser apenas metade da batalha. O verdadeiro sucesso está em estabelecer o equilíbrio perfeito entre desempenho e custo total de propriedade (Total Cost of Ownership, TCO). As empresas são constantemente desafiadas a otimizar a relação preço/desempenho, assegurando que cada ganho em velocidade ou eficiência se converta em benefícios de custo concretos. Entre na parceria estratégica do MongoDB com o Fireworks AI — uma combinação formidável que ajuda as organizações a elevarem o desempenho enquanto conservam os recursos. Integrando perfeitamente as robustas funcionalidades de gerenciamento de dados do MongoDB com as ferramentas de otimização de modelos do Fireworks AI, essa colaboração não só melhora a latência e a taxa de transferência, como também minimiza efetivamente os custos operacionais.
Este artigo aborda os seguintes tópicos:
Métodos para utilizar o MongoDB e o Fireworks AI para melhorar o desempenho e reduzir o TCO.
Estratégias para armazenar em cache queries e respostas que posteriormente ajudarão a otimizar a geração aumentada de recuperação (RAG) ao se utilizar o MongoDB Atlas com modelos de IA generativa.
Ajuste o pequeno modelo de linguagem (SLM) com base no grande modelo de linguagem (LLM) para alcançar um desempenho mais rápido com qualidade de resposta comparável.
Técnicas empregadas com a plataforma Fireworks AI para ajustar modelos, acelerar a inferência e diminuir os requisitos de hardware dos LLMs.
Um estudo de caso apresentando um sistema de recomendação de cartão de crédito com melhorias quantificáveis em latência, uso de memória e efetividade de custo.
Melhores práticas para implantar e dimensionar essas soluções em ambientes de produção.
Ao concluir este artigo, os leitores terão uma estratégia útil e abrangente para melhor o desempenho no uso da AI com custos reduzidos, exemplos práticos e métricas de desempenho.
O Poder do MongoDB e do Fireworks AI
O MongoDB é reconhecido pelo seu esquema flexível, indexação eficiente e arquitetura distribuída, que permitem que as organizações dimensionem sua infraestrutura de dados sob demanda. Quando associado às avançadas funcionalidades de ajuste de modelos do Fireworks AI, as empresas ficam preparadas para alcançar ganhos notáveis de eficiência e desempenho sem se desgastar financeiramente.
Apresentando o FireOptimizer e o FireAttention: componentes centrais
Central para essa abordagem otimizada é o framework do FireOptimizer, que integra o banco de dados flexível e de alto desempenho do MongoDB ao processo de ajuste de modelos do Fireworks.AI.
Este framework acelera a inferência em lote por meio de soluções como o FireAttention, um método que melhora o processamento de solicitações utilizando o hardware existente, otimizando a utilização dos recursos. Além disso, o Parameter-Efficient Fine-Tuning (PEFT), que inclui métodos como LoRA e QLoRA, ajusta modelos para realizar tarefas especializadas de forma eficiente usando dados de rastreamento ou dados de rótulos, aumentando assim a portabilidade e reduzindo a pegada computacional.
Figura 1. Arquitetura do FireOptimizer para otimização adaptativa e inferência de alta qualidade
Os principais benefícios que podem ser alcançados são:
Inferência mais rápida: com a execução especulativa adaptativa do FireOptimizer, as cargas de trabalho de produção em vários modelos tiveram até 3x mais melhorias de latência, garantindo que os aplicativos sejam sempre altamente responsivos.
Otimização sem complicação: o FireOptimizer automatiza o complexo processo de otimização, permitindo que você se concentre na construção do seu aplicativo, enquanto nós lidamos com o restante.
Vamos nos aprofundar no framework do FireOptimizer.
FireOptimizer: geração de token mais inteligente por meio de adaptação
Em geral, os LLMs geram saídas de uma palavra (ou token) por vez, o que pode tornar as respostas mais lentas, especialmente nas saídas longas. Para acelerar esse processo, utiliza-se uma técnica chamada decodificação especulativa. Ela envolve um modelo menor e mais rápido — conhecido como modelo de rascunho— que gera rapidamente várias palavras ou frases possíveis enquanto o LLM principal ainda está em processamento. Então, o LLM principal avalia essas suposições e retém apenas as corretas. Essa técnica costuma ser chamada de execução especulativa ou decodificação.
A limitação dessa abordagem tradicional está no fato de que a maioria dos modelos de rascunho é treinada em dados genéricos (por exemplo, conversas públicas). Embora essa abordagem seja eficaz para tarefas gerais, sua precisão ou "taxa de acerto" diminui significativamente em cenários especializados, como programação ou análise financeira.
Por outro lado, o Fireworks AI aprimora essa abordagem com a execução especulativa adaptativa. Em vez de usar um modelo de rascunho único para tudo, ele utiliza modelos personalizados para domínios específicos ou perfis de usuário. Ao utilizar essa abordagem adaptativa, ele otimiza as previsões com base nas características específicas do domínio. Esse método melhora a precisão, aumenta as taxas de acerto (por exemplo, de 29% para 76% em tarefas de geração de código) e reduz os custos de inferência, resultando em melhorias de até 3x na latência.
Pilha proprietária do servidor de LLM: dominando cargas de trabalho com contexto longo
O processamento de prompts longos (8K-32K tokens) é crucial para aplicativos como, por exemplo, de análise de documento e preenchimento de código, mas costuma desacelerar os sistemas até quase pararem. O FireAttention V2 do Fireworks AI resolve isso oferecendo um processamento 12x mais rápido para tarefas de contexto longo.
Como funciona:
Dimensionamento de atenção otimizado: reduz a sobrecarga computacional quando lida com entradas longas.
Implantação multi-host: distribui cargas de trabalho de forma eficiente entre GPUs.
Kernels avançados: otimizam as operações para gerar uma execução mais rápida.
Com o FireAttention V3, o Fireworks AI amplia sua liderança sobre as GPUs MI300 da AMD, oferecendo uma alternativa de baixo custo à NVIDIA. Os destaques de desempenho incluem:
1,4x–1,8x maior taxa de transferência: para modelos como o LLaMA 8B e 70B, em comparação com as configurações padrão.
Ganhos de velocidade de até 5,5x: em cenários de baixa latência, superando o vLLM da AMD.
Esse avanço resulta de ajustes arquitetônicos, como o redesenho dos kernels de atenção e o uso mais inteligente da memória, provando que as GPUs da AMD agora são players formidáveis em inferência de LLM.
Com as funcionalidades acima, o FireAttention pode aprimorar significativamente o ajuste fino dos pequenos modelos de linguagem (Small Language Models, SLMs) ao permitir o processamento eficiente de entradas de contexto longo (8K–32K tokens), que costumam ser críticas para tarefas específicas a domínios, como análise de documentos ou diálogos multi-turn. Seus mecanismos de atenção otimizados reduzem a sobrecarga computacional, gerando ciclos de treinamento mais rápidos e lotes maiores. Com suporte para implantação de GPU em múltiplos hosts e kernels de atenção avançados, ele otimiza as cargas de trabalho em todo o hardware, melhorando a taxa de transferência, reduzindo a latência e tornando o ajuste fino mais rápido e acessível.
Eficiência em escala: otimização adaptativa de recursos
As otimizações do Fireworks AI vão além da suposição adaptativa. Três técnicas fundamentais maximizam a taxa de transferência e a eficiência de custo:
Cache adaptável: reutiliza cálculos frequentes (p. ex., chamadas repetitivas de API) para ignorar trabalhos redundantes, reduzindo a latência em 30–50% nas cargas de trabalho de alto tráfego.
Quantização personalizável: equilibra a precisão de 4-/8-bit com a qualidade do modelo, dobrando as velocidades e mantendo > 99% de precisão para tarefas como processamento em lote.
Serviço desagregado: adapta a alocação do hardware ao tipo de carga de trabalho — hospeda várias cópias de modelos leves (por exemplo, 8 GPUs → 8 instâncias paralelas) ou fragmenta modelos grandes (por exemplo, LLaMA 70B) entre GPUs para tarefas complexas.
Construindo a Solução
Estratégias de ajuste fino para modelos menores e eficientes: uma demonstração prática de aplicativo de crédito com o MongoDB
Modelos menores e eficientes oferecem oportunidades únicas para ajuste fino, permitindo uma adaptação especializada enquanto mantêm a eficiência dos recursos. Pesquisas constantes têm sido realizadas nesse espaço, à medida que a criação de SLM ajustados ou otimizados para vários meios, como nuvem, dispositivos e hardware dedicado, está se tornando extremamente competitiva.
Essas técnicas de ajuste fino podem ser categorizadas da seguinte forma:
Ajuste fino eficiente de parâmetros aditivos (PEFT)
Essa categoria inclui abordagens que adicionam parâmetros treináveis ao modelo pré-treinado existente, sem alterar seus pesos originais.
Adaptadores: esses métodos envolvem a inserção de pequenas camadas treináveis, conhecidas como módulos adaptadores, entre as camadas do modelo pré-treinado. Esses adaptadores aprendem a fazer transformações específicas à tarefa, possibilitando a adaptação a novas tarefas sem alterar os parâmetros pré-treinados.
Soft prompts: são incorporações vetoriais treináveis anexadas à sequência de entrada. Eles atuam como sinais de orientação, influenciando o comportamento do modelo na tarefa desejada.
Ajuste de prefixo: essa técnica envolve a adição de um prefixo treinável à sequência de entrada. Esse prefixo aprende informações específicas da tarefa sem exigir alterações na arquitetura central do modelo.
Reparametrização PEFT
Essa abordagem envolve a reparametrização dos pesos existentes no modelo usando aproximações de baixa classificação para reduzir o número de parâmetros treináveis.
Adaptação de baixa classificação (Low-rank Adaptation, LoRA): aproxima as atualizações dos pesos nas camadas de atenção de um modelo pré-treinado usando matrizes de baixa classificação. Isso reduz significativamente o número de parâmetros treináveis.
LoRA quantizado (Quantized LoRA, QLoRA): aprimora o LoRA incorporando técnicas de quantização, reduzindo ainda mais o uso da memória e os custos computacionais.
Ajuste fino seletivo
Esta categoria se concentra no ajuste seletivo de parâmetros específicos do modelo pré-treinado, resultando em maior eficiência computacional.
BitFit: esse método ajusta apenas os termos de viés, ou outros parâmetros específicos, do modelo pré-treinado, melhorando a eficiência computacional.
DiffPruning: essa técnica identifica e remove parâmetros que contribuem minimamente para o desempenho do modelo, reduzindo o número de parâmetros treináveis.
Estratégias de congelamento de camadas
Essas estratégias envolvem o congelamento estratégico de algumas camadas do modelo pré-treinado enquanto outras são ajustadas, o que otimiza o processo de adaptação.
Congelar e reconfigurar (Freeze and Reconfigure, FAR): envolve congelar camadas específicas do modelo pré-treinado e ajustar finamente as camadas restantes para otimizar a adaptação do modelo.
FishMask: essa técnica utiliza uma máscara para congelar ou ajustar seletivamente as camadas, otimizando a adaptação para tarefas específicas.
As técnicas mais populares são as baseadas em PEFT. As técnicas de PEFT usadas com grandes modelos pré-treinados podem adaptá-los a novas tarefas ajustando apenas uma pequena fração de seus parâmetros. Essa abordagem ajuda a evitar sobreajuste, em especial com conjuntos de dados menores, e reduz significativamente os requisitos computacionais e de memória em comparação com o ajuste fino completo. O PEFT também reduz o esquecimento catastrófico nos LLMs. Essas técnicas permitem personalizar o modelo sem um novo treinamento completo, o que as torna ideais para ambientes com recursos limitados.
Podemos adotar as técnicas PEFT LoRA combinadas com a disponibilidade de dados de rastreamento (dados gerados a partir das interações do modelo) e dados rotulados (dados explicitamente anotados para tarefas específicas), o que permite o ajuste fino de modelos menores para alcançar alto desempenho em tarefas específicas, sem a necessidade de recursos computacionais extensivos.
Para destacar as aplicações práticas, recorremos a uma demonstração de aplicativo de cartão de crédito MongoDB que ilustra como o MongoDB pode ser utilizado para pontuação de crédito com análise preditiva, explicando os respectivos resultados usando IA generativa, além de para fornecer recomendações de cartão de crédito com uma abordagem RAG com LLM. Para o propósito deste exemplo de ajuste fino, vamos nos concentrar em simplificar as explicações de classificação de crédito usando LLMs. O aplicativo abrange vários escopos de funcionalidades, como geração de perfil de usuário, recomendações de produtos e reclassificação com tarefas de sumarização. Detalhes do design do aplicativo e do código-fonte podem ser encontrados na Página da biblioteca de soluções de aplicativos de cartão de crédito do MongoDB.
Desafios atuais
Os LLMs podem causar tempos de resposta mais lentos devido aos cálculos complexos que precisam realizar em bilhões de parâmetros. Por exemplo, a geração de recomendações de cartão de crédito pode exigir várias queries ao LLM, resultando em um tempo de resposta total de 10 a 20 segundos (cada query demora 5 segundos ou mais). Além disso, pode ser difícil e dispendioso colocar os LLM em produção e dimensioná-los para milhões de usuários.
Mudança para pequenos modelos de linguagem
Com os SLMs, as empresas podem ter ganhos significativos em velocidade de processamento e eficiência de custo. Os SLMs demandam menos poder computacional, sendo ideais para dispositivos com recursos limitados, oferecem respostas mais rápidas e reduzem os custos operacionais.
Ajuste fino eficiente em termos de parâmetros e LoRA
O PEFT e seu método LoRA melhoram significativamente a eficiência ao otimizar apenas um subconjunto de parâmetros. Essa abordagem reduz os requisitos de memória e diminui os custos operacionais. A sinergia com o MongoDB melhora o gerenciamento de dados e gera processos eficientes de ajuste de modelos.
Valor Único do MongoDB
O MongoDB é integral e oferece gerenciamento de dados perfeito e integração em tempo real que melhoram a eficiência operacional. Ao armazenar dados de rastreamento como JSON e possibilitar recuperação e armazenamento eficientes, o MongoDB agrega um valor substancial ao processo de ajuste fino de modelos. O MongoDB também atua como uma camada de cache que evita a invocação desnecessária do LLM em caso de solicitação repetida dos mesmos dados.
Guia passo a passo para fazer ajuste fino em um pequeno modelo de linguagem com o Fireworks AI
Um aspecto crítico da demonstração do aplicativo de cartão de crédito é explicar as pontuações de crédito ou classificações de crédito ao cliente em uma linguagem clara e cotidiana. Os LLMs mais avançados, como o LLaMA 3.1-405B da Meta, podem gerar essas explicações com fatores como parâmetros do perfil do usuário, recursos de entrada do modelo e importância dos recursos do modelo usados para prever a pontuação de crédito ou classificação de crédito alternativa do cliente. No entanto, essas tarefas não podem ser realizadas de forma consistente com um SLM devido ao número limitado de parâmetros necessários para um raciocínio e uma explicação eficaz. Para alcançar o resultado desejado, precisamos utilizar o processo de ajuste fino descrito acima com a plataforma de ajuste fino do Fireworks AI.
As etapas a seguir detalharão passo a passo como utilizar a plataforma para ajustar um SLM.
Veja como utilizar esta plataforma e ferramenta:
Figura 2. Processo de ajuste fino de LLMs/SLMs
O processo de ajuste fino começa com a coleção de dados relevantes específicos à tarefa. Conforme mostrado na Figura 2, o MongoDB Atlas, sendo um banco de dados de uso geral, pode ser utilizado para armazenar em cache as respostas do LLM/SLM para um usuário específico com base em suas entradas no aplicativo de cartão de crédito (o usuário pode simular o perfil de crédito na IU da web). Abaixo está um exemplo de trecho de código Python que demonstra como configurar um decorador para armazenar em cache as respostas do LLM/SLM no MongoDB Atlas:
class mdbcache: def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): key = str(args) + str(kwargs) ele = ccol.find_one({"key": key}) if ele: return ele["response"] value = self.function(*args, **kwargs) ccol.insert_one({"key":key, "response": value}) return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The llm.invoke method can invoke either a LLM or SLM based on the Fireworks Model ID provided at the start of applicaiton. Args: prompt (str): The prompt to pass to the LLM. """ response = llm.invoke(prompt) return response
Conforme mostrado no diagrama, o conjunto de dados de treinamento necessário para o processo de ajuste fino pode ser gerado com um simulador. Aqui, estamos tentando simular um perfil de usuário com uma abordagem de amostragem estratificada para selecionar um número igual de amostras para todas as três classificações de crédito: Boa, Normal e Ruim. Para esta demonstração, geramos cerca de 1300+ exemplos de respostas.
Agora, as respostas geradas devem ser convertidas para o formato compatível com a plataforma Fireworks AI para que o processo de ajuste fino seja iniciado. O arquivo "cc_cache.jsonl" usado abaixo no processo de ajuste fino pode ser gerado executando-se o seguinte código:
from pymongo import MongoClient import pandas as pd import json client = MongoClient("mongodb+srv://<uid>:<pwd>@bfsi-demo.2wqno.mongodb.net/?retryWrites=true&w=majority") df = pd.DataFrame.from_records(client["bfsi-genai"]["cc_cache"].find({},{"_id": 0})) df["prompt"] = df["key"].apply(lambda x: x.strip('(').strip('"').strip(")").strip("\\")) del df["key"] df["response"] = df["response"].apply(lambda x: x.strip()) df.to_json("cc_cache.jsonl", orient="records", lines=True) # transform cache to messages messages = [] for item in df.iterrows(): messages += [{"messages": [{"role": "user", "content": item["prompt"].strip(" \\")}, {"role": "assistant", "content": item["response"]}]}] with open("cc_cache.jsonl", "w") as f: for item in messages: f.write(json.dumps(item) + "\n")
Agora que preparamos o conjunto de dados e geramos o arquivo "cc_cache.jsonl", podemos começar a fazer o ajuste fino no modelo pré-treinado "llama-v3p1-8b-instruct" seguindo as etapas abaixo.
A integração perfeita do MongoDB e do Fireworks.AI agiliza o processo de aprimoramento do desempenho de modelos de AI de forma econômica e eficiente. Isso é evidente no guia passo a passo para ajuste fino fornecido acima.
Após a implantação do modelo na plataforma fireworks como uma API sem servidor, o ID do modelo (models/ft-m88hxaga-pi11m) mostrado na Fig. 2 pode ser usado para invocar o modelo de SLM ajustado usando o framework de modelo de linguagem de sua escolha.
Principais Aprendizados
O ajuste fino do SLM para fazer recomendações de cartão de crédito gerou resultados impressionantes:
Ao aplicar as etapas de ajuste fino acima ao modelo SLM no contexto do processo alternativo de recomendação de produtos de cartão de crédito, observamos uma melhoria tremenda no tempo de resposta do processo utilizando o SLM ajustado:
Melhoria do tempo de resposta: originalmente, o tempo de resposta com um LLM seria de aproximadamente 5 segundos. Com um SLM, a redução na latência pode ser de, aproximadamente, 19x.
import time class tiktok: """ Decorator to time the execution of a function and log the time taken. """ def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): import time start = time.time() value = self.function(*args, **kwargs) end = time.time() print(f"Time taken for {self.function.__name__}: {end - start} seconds") return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The invole LLM method can invoke either a LLM or SLM based on the Fireworks Model ID initialised. Args: prompt (str): The prompt to pass to the LLM. """ ... ModeloTempo de inferência 1 (s)Tempo de inferência 2 (s)Tempo de inferência 3 (s)Tempo Médio (s)llama-v3p1-405b-instruct
5.5954
7.5936
4.9121
6.0337
SLM - llama-v3p1-8b ajustado
0.3554
0.0480
0.0473
0.1502
Redução de memória: os LLMs geralmente requerem uma quantidade substancial de memória, na faixa de 8x 80 GB de VRAM. Um SLM pode operar eficientemente com cerca de 16 GB de VRAM, resultando em uma redução de 97,5% no uso de memória.
Redução de hardware: a implantação de LLMs geralmente requer GPUs de alto desempenho ou vários servidores. Com um SLM, os requisitos de hardware podem reduzir significativamente, possibilitando a implantação em CPUs padrão ou em um único servidor e, como resultado, uma redução drástica nos custos de hardware.
Conclusão
A integração do MongoDB com o Fireworks AI melhora significativamente a eficiência e a relação custo-benefício do treinamento de SLMs. Essa parceria torna as soluções avançadas de AI mais acessíveis e economicamente viáveis, garantindo investimentos em AI à prova de futuro. As principais proposições de valor dessa colaboração incluem:
Menor custo total de propriedade: as técnicas LoRA e qLoRA do Fireworks AI reduzem a necessidade de recursos computacionais, pois aplicam adaptação de baixa classificação e quantização, o que reduz os custos associados ao ajuste fino dos SLMs. Com sua arquitetura distribuída, esquema flexível e indexação eficiente, o MongoDB pode dimensionar a infraestrutura de dados sob demanda e minimizar os custos de armazenamento, gerando reduções tanto nas despesas de capital quanto nas operacionais (CapEx e OpEx).
Fluxos de trabalho integrados de dados e AI: o MongoDB facilita a integração de dados em tempo real, disponibilizando dados instantaneamente para os modelos de AI e, como resultado, aumentando a eficiência operacional. Essa integração com as ferramentas de ajuste fino do Fireworks AI garante um fluxo de trabalho simplificado que mantém os modelos de AI continuamente atualizados e relevantes, melhorando a tomada de decisões e fornecendo insights precisos.
Soluções RAG robustas: a combinação perfeita do MongoDB Atlas com o Fireworks AI simplifica a criação de frameworks RAG, melhorando o armazenamento e a recuperação de dados. O MongoDB Atlas é uma plataforma dimensionável para armazenamento de incorporações, enquanto o Fireworks AI oferece hospedagem gerenciada de LLM/SLM e outros recursos. Juntos, eles oferecem sistemas dimensionáveis e inteligentes que melhoram a experiência do usuário com a recuperação de informações relevantes.
As organizações que adotam essa estratégia podem agilizar o uso da AI, economizar recursos e adotar soluções preparadas para o futuro, gerando inovação e vantagem competitiva em diversos setores.
Leitura adicional
Como a plataforma Fireworks AI acelera a inferência e a taxa de transferência:
FireAttention V2: essa inovação melhora a eficiência do gerenciamento de contextos longos durante a inferência online, atingindo um processamento até 12 vezes mais rápido.
FireAttention V3: esse avanço possibilita o uso de hardware AMD como uma alternativa viável para inferência de GPU, ampliando as opções de hardware e podendo reduzir custos.
FireOptimizer: esta ferramenta permite a customização da latência e da qualidade para cargas de trabalho de inferência em produção, permitindo que os usuários ajustem o desempenho às suas necessidades específicas.
Tecnologias e produtos utilizados
Plataforma de dados para desenvolvedores MongoDB
Tecnologias de parceiros
Autores
Wei You Pan, MongoDB
Ashwin Gangadhar, MongoDB
Peyman Parsi, MongoDB
Benny Chen, Fireworks AI
Ayaan Momin, Fireworks AI