A missão da NinjaTech AI é tornar todos mais produtivos, cuidando de tarefas complexas demoradas com agentes de inteligência artificial (IA) rápidos e acessíveis. Lançamos recentemente MyNinja.ai, um dos primeiros assistentes pessoais de IA multiagentes do mundo, a cumprir nossa missão. O MyNinja.ai é construído do zero usando agentes especializados que são capazes de concluir tarefas em seu nome, incluindo agendar reuniões, conduzir pesquisas profundas na web, gerar código e ajudar na escrita. Esses agentes podem dividir tarefas complicadas de várias etapas em soluções ramificadas e são capazes de avaliar dinamicamente as soluções geradas enquanto aprendem continuamente com as experiências anteriores. Todas essas tarefas são realizadas de forma totalmente autônoma e assíncrona, permitindo que você continue seu dia enquanto o Ninja trabalha nessas tarefas em segundo plano e se envolva quando sua opinião for necessária.

Como nenhum modelo de linguagem grande (LLM) é perfeito para todas as tarefas, sabíamos que criar um assistente pessoal de IA exigiria vários LLMs otimizados especificamente para uma variedade de tarefas. Para oferecer a precisão e os recursos necessários para encantar nossos usuários, também sabíamos que precisaríamos que esses vários modelos funcionassem juntos em conjunto. Finalmente, precisávamos de métodos escaláveis e econômicos para treinar esses vários modelos — uma tarefa que historicamente tem sido custosa para a maioria das startups. Neste post, descrevemos como construímos nosso agente de produtividade de ponta NinjalLM, a espinha dorsal do MyNinja.ai, usando Trainium da AWS batatas fritas.
Construindo um conjunto de dados
Reconhecemos desde cedo que, para cumprir a missão de realizar tarefas em nome do usuário, precisávamos de vários modelos otimizados para tarefas específicas. Os exemplos incluem nossos modelos Deep Researcher, Deep Coder e Advisor. Depois de testar os modelos de código aberto disponíveis, sentimos que os recursos e as respostas prontos para uso eram insuficientes apenas com a engenharia imediata para atender às nossas necessidades. Especificamente, em nossos testes com modelos de código aberto, queríamos garantir que cada modelo fosse otimizado para um estilo de solicitação React/Chain-of-Thought. Além disso, queríamos garantir que o modelo funcionasse, quando implantado como parte de um Geração aumentada de recuperação Sistema (RAG), cite com precisão cada fonte, bem como qualquer preconceito de dizer “não sei” em vez de gerar respostas falsas. Para isso, optamos por ajustar os modelos para as várias tarefas posteriores.
Ao construir nosso conjunto de dados de treinamento, nosso objetivo era duplo: adaptar cada modelo para sua tarefa e personalidade posteriores adequadas (pesquisador, consultor, codificador etc.) e adaptar os modelos para seguir uma estrutura de saída específica. Para esse fim, seguimos o Abordagem de Lima para ajuste fino. Usamos um tamanho de amostra de treinamento de aproximadamente 20 milhões de tokens, com foco no formato e no tom da saída e usando um tamanho de amostra diverso, mas relativamente pequeno. Para construir nosso conjunto de dados de ajuste fino supervisionado, começamos criando tarefas iniciais para cada modelo. Com essas tarefas iniciais, geramos um conjunto de dados sintético inicial usando o modelo Llama 2 da Meta. Conseguimos usar o conjunto de dados sintético para realizar uma rodada inicial de ajuste fino. Para avaliar inicialmente o desempenho desse modelo aperfeiçoado, coletamos feedback de usuários para criar iterativamente mais amostras. Também usamos uma série de benchmarks — internos e públicos — para avaliar o desempenho do modelo e continuamos a iterar.
Ajuste fino no Trainium
Optamos por começar com os modelos Llama como modelo básico pré-treinado por vários motivos: principalmente o excelente desempenho pronto para uso, o forte suporte ao ecossistema de várias bibliotecas e a licença verdadeiramente permissiva e de código aberto. Na época, começamos com o Llama 2, testando em vários tamanhos (7B, 13B e 70B). Para treinamento, optamos por usar um cluster de instâncias trn1.32xlarge para aproveitar os chips Trainium. Usamos um cluster de 32 instâncias para paralelizar o treinamento de forma eficiente. Nós também usamos Cluster paralelo da AWS para gerenciar a orquestração de clusters. Usando um cluster de instâncias do Trainium, cada iteração de ajuste fino levou menos de 3 horas, a um custo de menos de USD 1.000. Esse rápido tempo de iteração e baixo custo nos permitiu ajustar e testar rapidamente nossos modelos e melhorar a precisão de nossos modelos. Para alcançar as precisões discutidas nas seções a seguir, precisávamos gastar apenas cerca de 30 mil dólares, economizando centenas de milhares, senão milhões de dólares, se precisássemos treinar em aceleradores de treinamento tradicionais.
O diagrama a seguir ilustra nossa arquitetura de treinamento.

Depois de estabelecermos nossos canais de ajuste fino construídos sobre o Trainium, pudemos ajustar e refinar nossos modelos graças às bibliotecas de treinamento Neuron Distributed. Isso foi excepcionalmente útil e oportuno, porque antes do lançamento do MyNinja.ai, os modelos Llama 3 da Meta foram lançados. O Llama 3 e o Llama 2 compartilham uma arquitetura semelhante, então pudemos atualizar rapidamente para o modelo mais novo. Essa velocidade na troca nos permitiu aproveitar os ganhos inerentes à precisão do modelo e, rapidamente, realizar outra rodada de ajustes finos com os pesos do Llama 3 e nos preparar para o lançamento.
Avaliação do modelo
Para avaliar o modelo, havia dois objetivos: avaliar a capacidade do modelo de responder às perguntas do usuário e avaliar a capacidade do sistema de responder perguntas com as fontes fornecidas, porque essa é a interface principal do nosso assistente pessoal de IA. Selecionamos o Hotpot QA e Perguntas naturais (NQ) abertas conjuntos de dados, ambos adequados por causa de seus conjuntos de dados de benchmarking abertos com tabelas de classificação públicas.
Calculamos a precisão combinando a resposta do modelo com a resposta esperada, usando as 10 principais passagens recuperadas de um corpus da Wikipedia. Realizamos filtragem e classificação de conteúdo usando Colbert TV 2, um modelo de recuperação baseado em BERT. Alcançamos precisões de 62,22% no conjunto de dados NQ Open e 58,84% no HotPotQA usando nosso modelo RAG Llama 3 aprimorado, demonstrando melhorias notáveis em relação a outros modelos de linha de base. A figura a seguir resume nossos resultados.

Trabalhos futuros
Olhando para o futuro, estamos trabalhando em vários desenvolvimentos para continuar melhorando o desempenho e a experiência do usuário do nosso modelo. Primeiro, pretendemos usar ORPO para ajustar nossos modelos. O ORPO combina o ajuste fino tradicional com o alinhamento de preferências, enquanto usa um único conjunto de dados de alinhamento de preferências para ambos. Acreditamos que isso nos permitirá alinhar melhor os modelos para obter melhores resultados para os usuários.
Além disso, pretendemos construir um modelo de conjunto personalizado a partir dos vários modelos que ajustamos até agora. Inspirados nas arquiteturas de modelos Mixture of Expert (MoE), pretendemos introduzir uma camada de roteamento em nossos vários modelos. Acreditamos que isso simplificará radicalmente nossa arquitetura de serviço e escalabilidade de modelos, mantendo a qualidade em várias tarefas que nossos usuários esperam de nosso assistente pessoal de IA.
Conclusão
Construir agentes de IA de próxima geração para tornar todos mais produtivos é o caminho da NinjaTech AI para cumprir sua missão. Para democratizar o acesso a essa tecnologia transformadora, é fundamental ter acesso à computação de alta potência, a modelos de código aberto e a um ecossistema de ferramentas que tornem o treinamento de cada novo agente acessível e rápido. Os chips de IA desenvolvidos especificamente pela AWS, o acesso aos principais modelos de código aberto e sua arquitetura de treinamento tornam isso possível.
Para saber mais sobre como criamos a IA pessoal multiagente multiagente da NinjaTech AI, você pode ler nosso whitepaper. Você também pode experimentar esses agentes de IA gratuitamente em MyNinja.ai.
Sobre os autores

Arash Sadrieh é cofundador e diretor científico da Ninjatech.ai. Arash foi cofundador da Ninjatech.ai com a visão de tornar todos mais produtivos, cuidando de tarefas demoradas com agentes de IA. Essa visão foi moldada durante seu mandato como cientista aplicado sênior na AWS, onde ele conduziu iniciativas de pesquisa importantes que melhoraram significativamente a eficiência da infraestrutura em seis anos, ganhando várias patentes para otimizar a infraestrutura central. Sua formação acadêmica inclui um PhD em modelagem e simulação computacional, com colaborações com instituições conceituadas, como a Universidade de Oxford, a Universidade de Sydney e a CSIRO. Antes de trabalhar na indústria, Arash teve um período de pós-doutorado marcado por publicações em periódicos de alto impacto, incluindo a Nature Communications.

Tahir Azim é engenheiro de software da equipe da NinjaTech. Tahir se concentra nas plataformas de treinamento e inferência baseadas em Inf2 e Trn1 da NinjaTech, em seu gateway unificado para acessar essas plataformas e em sua habilidade de pesquisa baseada em RAG. Anteriormente, ele trabalhou na Amazon como engenheiro de software sênior, criando sistemas baseados em dados para otimizar a utilização da infraestrutura global de ponta da Internet da Amazon, reduzindo custos, congestionamentos e latência. Antes de se mudar para a indústria, Tahir obteve mestrado e doutorado em Ciência da Computação pela Universidade de Stanford, lecionou por três anos como professor assistente na NUST (Paquistão) e fez um pós-doutorado em sistemas de análise rápida de dados na EPFL. Tahir é autor de várias publicações apresentadas em conferências de alto nível, como VLDB, USENIX ATC, MobiCom e MobiHoc.

Tengfei Xue é cientista aplicado na NinjaTech AI. Seus interesses de pesquisa atuais incluem processamento de linguagem natural e aprendizado multimodal, particularmente usando grandes modelos de linguagem e grandes modelos multimodais. Tengfei concluiu seus estudos de doutorado na Escola de Ciência da Computação da Universidade de Sydney, onde se concentrou no aprendizado profundo para saúde usando várias modalidades. Ele também foi candidato visitante de doutorado no Laboratório de Matemática em Imagem (LMI) da Universidade de Harvard, onde trabalhou em visão computacional 3D para dados geométricos complexos.



