Pular para o conteúdo

Ensinando agentes a fazer buscas com NVIDIA Data Designer — Dhruv Nathawani, NVIDIA

Ver no idioma original →

Autoria: AI Engineer · Assistir no YouTube

Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.

Idioma original: inglês

Vídeo original: Teaching Agents to Search with NVIDIA Data Designer — Dhruv Nathawani, NVIDIA · Canal: AI Engineer · 54:56 · Assistir no YouTube

Tópicos: Agentes de IA, Avaliação e benchmarks de IA, Dados, bancos de dados e embeddings, Open source e ecossistemas de software, RAG, busca e recuperação de informação

Dhruv Nathawani apresenta o NVIDIA Data Designer, um framework open source para criar dados sintéticos diversos, estruturados e fundamentados em dados reais. O workshop demonstra como construir workflows de geração de dados e usar MCP e Tavily para criar trajetórias de busca para agentes. O exemplo central ensina modelos Nemotron a responder perguntas difíceis com informações atuais, com o objetivo de melhorar o desempenho no benchmark BrowseComp. A apresentação também aborda avaliação e filtragem de dados, boas práticas de geração e ferramentas da NVIDIA para curadoria, anonimização e criação de personas sintéticas.

  • O Data Designer representa o processo de criação de dados como um grafo de colunas e permite gerar dados a partir de sementes como Wikipedia ou dados próprios.
  • Dados sintéticos precisam de diversidade, correlações entre atributos, validação e mecanismos de controle — não basta repetir prompts para um LLM.
  • O workshop demonstra três etapas: geração de dados básica, criação de dados agentic com MCP e geração de exemplos de busca.
  • Perguntas baseadas em caminhos de entidades conectadas no Wikidata podem ser transformadas em enigmas que incentivam o uso de ferramentas de busca.
  • A busca dá acesso a informações atuais que podem estar ausentes dos dados de treinamento do modelo.
  • A criação de dados é iterativa: é preciso inspecionar amostras, ajustar o workflow e filtrar os registros antes do treinamento.
  • A avaliação de dados sintéticos é multifacetada; LLM as a judge pode ser combinado com revisão humana e verificações de informações atuais.
  • Boas práticas incluem priorizar diversidade antes de volume, usar o tipo de coluna mais econômico e gerar mais dados do que será mantido.
  • Personas sintéticas ajudam a representar distribuições demográficas agregadas sem usar diretamente informações identificáveis de indivíduos.
  • A NVIDIA também oferece ferramentas open source para curadoria, anonimização e geração segura de dados sintéticos.
Início Capítulo Resumo
00:12 Objetivos e materiais do workshop O apresentador introduz o Data Designer, o objetivo de transformar comportamentos desejados em problemas de dados e os materiais necessários para acompanhar.
03:19 Por que gerar dados sintéticos A palestra compara dados brutos da internet com dados de treinamento curados e apresenta a geração sintética como alternativa fundamentada em dados-semente.
05:26 Como o Data Designer organiza a geração O apresentador explica problemas de diversidade e validação e descreve colunas, samplers e grafos para especificar conjuntos de dados.
09:04 Notebook 1: geração de perguntas e respostas O primeiro notebook usa tópicos da Wikipedia, níveis de dificuldade e prompts para gerar e avaliar exemplos estruturados.
14:49 Notebook 2: dados agentic com MCP O segundo notebook acrescenta uma ferramenta de busca ao workflow para que o modelo encontre respostas em vez de apenas gerá-las.
19:27 Motivação: ensinar modelos a buscar O apresentador explica a necessidade de informações atuais e apresenta o treinamento de modelos Nemotron para usar busca.
21:35 BrowseComp e perguntas difíceis A palestra descreve o benchmark BrowseComp e ilustra como uma pergunta complexa pode exigir buscas e raciocínio em várias etapas.
23:09 Criando enigmas a partir de grafos Caminhos de entidades no Wikidata servem de dados-semente para criar enigmas que incentivam os modelos a pesquisar.
27:30 Notebook 3: gerar trajetórias de busca O notebook combina perguntas baseadas em entidades, instruções de uso de ferramenta e exemplos para criar trajetórias de busca.
31:51 Resultados, treinamento e aplicações O apresentador responde a perguntas sobre resultados em benchmarks, tipos de dados e usos de Data Designer em treinamento.
39:17 Avaliação e qualidade dos dados A palestra discute filtragem, dados desatualizados e a combinação de LLM as a judge, revisão humana e verificações em tempo real.
43:28 Outros conjuntos de dados e boas práticas São apresentados casos de uso adicionais e recomendações como priorizar diversidade, inspecionar amostras e filtrar dados em excesso.
47:08 Personas sintéticas e distribuições reais O apresentador explica como personas sintéticas podem preservar distribuições demográficas agregadas sem expor dados individuais.
51:48 Ferramentas open source e encerramento A apresentação conclui com ferramentas da NVIDIA para curadoria, anonimização e síntese segura, além de recursos e conjuntos de personas.

Os dados da internet não são os dados que você quer para o seu transformer. — 03:19

Diversidade, diversidade, diversidade: isso é o mais importante. — 05:26

Se dermos a um agent a chance de trapacear, ele vai trapacear. — 25:17

Diversidade antes de volume. — 46:05

A melhor maneira de saber se seus dados são bons é olhar para eles. — 46:36

  • Data Designer (ferramenta): Framework open source da NVIDIA para definir workflows e gerar dados sintéticos por meio de colunas e grafos.
  • MCP (conceito): Padrão apresentado no workshop para conectar um agent a ferramentas externas, como serviços de busca.
  • Tavily (ferramenta): Serviço de busca para agents usado nos exemplos de geração de trajetórias de pesquisa.
  • Nemotron (modelo): Família de modelos da NVIDIA mencionada no contexto do treinamento para uso de ferramentas de busca.
  • BrowseComp (benchmark): Benchmark de busca descrito como um conjunto de perguntas difíceis para medir o progresso dos modelos.
  • Wikidata (conceito): Base de conhecimento representada como um grafo de entidades e relações, usada para criar dados-semente para enigmas de busca.
  • NVIDIA (empresa): Empresa responsável pelo Data Designer e pelas demais ferramentas e modelos apresentados.
  • Dhruv Nathawani (pessoa): Pesquisador da NVIDIA que conduz o workshop sobre geração de dados sintéticos e busca com agents.
  • NeMo Curator (ferramenta): Ferramenta da NVIDIA citada para curar e processar dados reais destinados ao treinamento de LLMs.
  • NeMo Anonymizer (ferramenta): Ferramenta da NVIDIA apresentada para anonimizar dados, inclusive informações sensíveis em logs.
  • NeMo Safe Synthesizer (ferramenta): Ferramenta mencionada para gerar versões sintéticas seguras de conjuntos de dados sensíveis.

00:12 O workshop é sobre algo mais genérico e mais poderoso. É sobre como criar pipelines de dados usando a ferramenta que desenvolvemos, o NVIDIA Data Designer, para poder criar ou adicionar qualquer tipo de funcionalidade a um modelo ou agent. Então, vamos começar. A propósito, tenho um repo no GitHub com alguns notebooks. Se tiver interesse, você pode escanear o código QR ou acessar esse repo no GitHub. Vou manter o mesmo código QR em todos os outros slides também. Então, se você não conseguir pegá-lo agora, haverá

00:43 mais oportunidades para conseguir. Então, sobre o que é o workshop e o que vamos aprender aqui? A primeira coisa que vamos aprender é como pegar o comportamento desejado de um agent e transformá-lo em um problema de dados, certo? Basicamente, será que podemos criar dados para esse comportamento específico do agent e depois treinar um modelo para aprender a realizar essa tarefa? Para isso, desenvolvemos uma ferramenta chamada Data Designer

01:13 para criar pipelines de dados sintéticos que fazem exatamente isso. E o caso de uso que vamos abordar hoje é busca. A propósito, este é um framework muito reutilizável. Então, se você quiser criar dados para algo além de busca, é exatamente assim que faria. Há duas maneiras de participar do workshop de hoje. Claro, você pode acompanhar ao vivo e tentar executar os notebooks, mas, como provavelmente temos apenas uma hora ou menos, também pode só assistir agora

01:45 e executar os notebooks mais tarde. Então, não se esqueça de pegar o link do GitHub. Se quiser os slides, também estão no repo do GitHub. Você vai precisar de quatro coisas para acompanhar, seja agora ou depois do workshop. Obviamente, precisa de uma máquina com GPU habilitada, como uma VM na nuvem ou uma estação de trabalho. Também precisa de uma chave de API de busca da Tavi. A Tavi é uma empresa que oferece busca para agents. Se você se

02:16 cadastrar no site, receberá mil créditos grátis. Você também precisa do Data Designer, nossa ferramenta para criar dados. Ela é totalmente open source. Qualquer pessoa pode baixá-la, usá-la e fazer o que quiser com ela. E você precisa de todos os notebooks que disponibilizei no repo do GitHub. Esta é a agenda de hoje. Primeiro, vamos passar alguns minutos falando sobre o que é o Data Designer e por que precisamos de um framework como este e

02:46 depois vamos falar sobre o básico. Vou mostrar o código em três notebooks. O primeiro é sobre os conceitos básicos do Data Designer: como criar os dados que você quer? O segundo notebook é sobre o Model Context Protocol, ou MCP: como criar dados para agents? E o terceiro, que apresenta o caso de uso mais interessante: busca. Como ensinar um modelo a fazer buscas? Depois, vamos reservar um tempo para perguntas.

03:19 Quero começar com uma citação de Andre Karpati: “Os dados da internet não são os dados que você quer para o seu transformer”. É um ponto muito válido, porque os dados da internet podem vir de fontes de alta qualidade, como a Wikipedia, ou podem ser a opinião de alguém no Twitter, no X ou em alguma outra plataforma, certo? Então, como sabemos quais dados são úteis para treinar modelos de IA e quais não são? Precisamos processar esses

03:49 dados da internet, selecioná-los e depois criar dados de treinamento a partir deles. Essa é a abordagem tradicional. O que propomos é gerar dados sinteticamente, seja do zero ou a partir de um conjunto de dados inicial. É para isso que serve o Data Designer. O Data Designer é um framework para criar dados sintéticos. E o que quero dizer com dados iniciais? Você poderia usar, por exemplo, dados da Wikipedia como base e tentar criar

04:22 dados sintéticos de treinamento a partir da Wikipedia. Assim, seus dados sintéticos não são simplesmente inventados por um modelo. Eles se baseiam em distribuições e dados do mundo real. O Data Designer é um framework totalmente open source. Temos uma grande equipe na NVIDIA trabalhando nele. Você pode instalá-lo executando pip install data designer. E acho que o que realmente nos deixa

04:55 orgulhosos é que o Data Designer já foi usado para criar seis trilhões e meio de tokens de dados de treinamento, e esse número aumenta todos os dias. Também estamos acompanhando as estrelas no GitHub. Então, se você gosta do nosso repo, deixe uma estrela. Mas o que é geração de dados sintéticos? Uma maneira de fazer isso é criar um loop, executá-lo um milhão de vezes e, se você quiser

05:26 criar um conjunto de dados de avaliações de produtos, simplesmente continuar enviando prompts a um LLM: “Me dê um produto, me dê uma avaliação e depois me dê um perfil de cliente”. Essa é uma maneira de criar um conjunto de dados, mas você vai se deparar com vários problemas se fizer isso. O que está faltando? Diversidade, diversidade, diversidade. Esse é o mais importante, certo? Se você continuar enviando prompts a um LLM, depois de 10, 12 ou talvez 20 tentativas, ele vai começar a repetir coisas. Não vai fornecer o que você precisa. Também vão

05:56 faltar correlações entre todos os recursos que você procura no conjunto de dados. Você não terá multimodalidade. Também não conseguirá orientar de verdade a criação desse conjunto de dados, e não haverá validação, verificação e assim por diante. E, se eu criar um conjunto de dados, não consigo simplesmente compartilhá-lo com você, porque como você poderia reproduzir o processo que usei para criar algo parecido? Foi por isso que criamos o Data Designer.

06:26 Como funciona? No Data Designer, temos muitas colunas ou recursos diferentes. Essas colunas são, essencialmente, uma abstração do Data Designer. No Data Designer, geramos os dados coluna por coluna. Primeiro, temos a coluna inicial, que é totalmente opcional. Dei o exemplo da Wikipedia, que poderia ser um conjunto de dados inicial. Podemos usar qualquer conjunto de dados como base, desde que seja um arquivo CSV, JSONL ou Parquet. Então, você poderia usar os dados da sua própria

06:58 empresa como base. Depois, pode adicionar colunas de amostragem para introduzir diversidade. Digamos que você esteja tentando criar um conjunto de dados de programação. Uma coluna de amostragem bem simples poderia classificar as perguntas de programação como fáceis, médias e difíceis. Essa seria uma coluna de amostragem chamada dificuldade. Você também poderia adicionar subamostradores. Para as perguntas fáceis, poderia associar um tipo específico de problema; para as médias, outro tipo específico, e assim por diante. Vamos abordar tudo isso. Sei que

07:30 parece um pouco abstrato, mas vamos entrar em todos esses detalhes quando olharmos o código. Também temos colunas para gerar texto, dados estruturados e código. O Data Designer agora também é multimodal. Então, você pode gerar imagens. E também pode validar as gerações. A ideia é criar um DAG, ou grafo, que descreva como deve ser o seu conjunto de dados. Depois, quando estiver

08:00 pronto para executá-lo, basta clicar uma vez e obter o conjunto de dados. Hoje, vamos percorrer três notebooks diferentes. Sei que alguns de vocês estão pensando: “Bem, estamos em 2026 e ele vai mostrar código? Hoje temos o Codex, o Claude Code e todas essas ferramentas incríveis”. Acho que, se você entender o código, será muito mais fácil usar o Codex ou o Claude Code para criar seus próprios workflows de dados sintéticos. Então, vamos dar uma olhada rápida em cada notebook.

08:33 E, a propósito, este é o nosso repo. Este é o repo do nosso Data Designer. Ele é totalmente open source. E este é o repo do GitHub que criei para este workshop, onde temos notebooks. Então, você pode testar os notebooks 1, 2 e 3. Também temos os slides aqui, caso queira acompanhar ou acessá-los depois do workshop. Então, vamos ao primeiro notebook. Então,

09:04 este é o nosso notebook introdutório ao Data Designer. Todos conseguem ver? Certo. Ou devo aumentar o zoom? Está bom. Certo, primeiro de tudo, configuramos nosso ambiente. Há vários prompts aqui que estamos importando. E então, o que fazemos é simplesmente importar o Data Designer. É só isso, literalmente. E, depois de fazer isso, você vê que no Data Designer existe o conceito

09:35 de provedores de modelos. No momento, estamos usando o VLLM, ou seja, inference local. Estou executando isso em um cluster de GPU da Nvidia e, assim, temos acesso a diferentes tipos de modelos, certo? No meu cluster local, tenho acesso ao GPTOSS 120 billion. Você pode usar qualquer modelo ou qualquer modelo open para criar dados sintéticos. Alguns modelos fechados impedem que você crie dados a partir deles e os use para treinar modelos, por causa de questões de licenciamento. Mas os modelos open

10:06 geralmente podem ser usados sem problemas. Então, estou usando este modelo e o objetivo aqui é saber se consigo usar um conjunto de dados de tópicos da Wikipedia neste notebook. Como vocês sabem, há muitas páginas diferentes na Wikipedia e muitos tópicos diferentes. Então, fizemos uma lista deles, colocamos em um CSV e chamamos nosso construtor de configuração com o conjunto de dados de seed. Assim, estamos tentando criar um workflow do Data Designer, mas com

10:36 tópicos da Wikipedia. Depois de fazer isso, você pode adicionar a dificuldade das perguntas. Pode definir fácil, média, difícil, como quiser que seja seu conjunto de dados. E pode especificar pesos. Assim, você pode ter mais perguntas de dificuldade média do que fáceis ou difíceis. Também há todo tipo de coluna de amostragem que você pode adicionar sobre a dificuldade das perguntas. Por exemplo, para perguntas fáceis, você pode usar busca direta, fato simples ou definição; já para as difíceis, pode querer algo mais detalhado ou

11:08 obscuro. E, quando chegamos às colunas geradas por LLM, basta chamar esta função, add column, e então você tem seu prompt, que vai ser mais ou menos assim. Estou tentando encontrá-lo. Isso. Então: “Você é especialista em criar perguntas de trivia”. Então, aqui está um tópico,

11:40 dificuldade e tipo de pergunta. Quando você usa esses modelos Jinja para o tópico, eles inserem em tempo de execução neste prompt os tópicos que você criou antes ou que estavam no conjunto de dados de seed da Wikipedia. Assim, cada prompt que o LLM vê é único e diversificado. E, quando você clica em gerar, o modelo produz dados diversificados. E você também pode ter

12:12 uma coluna estruturada. Uma coluna estruturada é quando, em vez de tentar gerar dados em texto, você tenta gerar algo em formato JSON ou Markdown, ou em qualquer formato personalizado que queira. Sabemos que os LLMs, bem, temos que ser gentis com eles. Temos que conversar com eles, mas às vezes podem não fornecer o formato estruturado que você quer. Então, acabamos descartando esses registros. É assim que funciona a criação de dados:

12:44 temos algo chamado modo de pré-visualização no Data Designer. Quando você clica em pré-visualizar, ele tenta criar três registros para você, e então você pode examiná-los. Vamos ver alguns registros. Assim, tudo isso vai fazer muito mais sentido. O tópico aqui é a World Wide Web. E a pergunta — ou, acho, algum consórcio da World Wide Web — é: qual recomendação do W3C é identificada pela mesma abreviação de três letras que também serve como código de aeroporto de alguma cidade na Noruega?

13:16 Não tem como eu saber a resposta a essa pergunta, certo? É por isso que essas perguntas são difíceis: você quer levar o modelo a fazer uma busca, certo? Mas, neste primeiro notebook, estamos apenas tentando criar pares de pergunta e resposta. Então, este é um conjunto de dados bem simples. Acho que esta é a resposta que o modelo gerou. Você também pode adicionar um LLM as a judge para avaliar o desempenho do seu modelo. Esta é a pergunta que o modelo gerou. Esta é a resposta que ele gerou. E esta é a qualidade da pergunta. Então, podemos pedir a outro modelo que avalie o que acha da pergunta que o modelo anterior criou, e assim por diante.

13:48 No fim, você acaba com um conjunto de dados como este. E, a propósito, temos uma função que permite enviar seus conjuntos de dados diretamente para o Hugging Face. É muito fácil de usar, e você também pode visualizar todas as suas perguntas aqui, como podem ver. Depois, pode obter algumas estatísticas sobre seu conjunto de dados. Obviamente, geramos apenas três registros aqui. Então, essas estatísticas não são muito significativas, mas, se você gerar centenas ou milhares de

14:19 registros, poderá fazer isso. Também temos algo chamado modo em lote. É o Data Designer.create. Aqui, em vez de 100, eu poderia simplesmente definir quantos registros precisar e então criar todos esses registros. Como mencionei antes, geramos dados coluna por coluna. No modo em lote, primeiro você gera as perguntas e depois gera as respostas, certo? Este é, obviamente, um exemplo bem simples. E então você tem o LLM as a judge,

14:49 e aqui está seu conjunto de dados final. É assim que ele fica. Esse foi o primeiro notebook. Acho que é bem simples quando você olha e testa. Temos um segundo notebook, que se concentra mais em MCP, e depois vamos avançar para o terceiro notebook, que acho que todos vão achar interessante, porque é nele que vamos falar sobre busca. Desculpe. >> Sim. >> Ah, sim. Todos os links do GitHub são

15:20 iguais. Estou colocando-os em todos os slides. Então, se você perdeu o primeiro, pode acessá-lo. Vou fazer uma pausa aqui por um minuto, caso queira escanear o código. Então, vamos falar sobre MCP. MCP é um padrão que permite que um agent se conecte a ferramentas, certo? A ferramenta aqui é a Tavily, que nada mais é

15:50 do que uma ferramenta de busca para agents. Também existem muitas outras ferramentas de busca. Então, basicamente, o que precisamos — o que estamos tentando ensinar ao modelo aqui — é como fazer buscas, certo? A Tavily é uma boa ferramenta para o modelo usar e aprender a fazer isso. Voltando ao segundo notebook, aqui vamos desenvolver alguns conceitos simples do

16:22 primeiro notebook e acrescentar como criar dados agentic. Então, novamente, você tem as importações, as configurações do modelo e o mesmo conjunto de dados de seed, a mesma coluna de amostragem. Ou seja, dificuldade da pergunta, tipo de pergunta e assim por diante. Depois, você cria a pergunta e, no fim, obtém uma configuração, certo? Não sei por que isso foi impresso em uma cor tão clara, mas este é basicamente o grafo que você está criando. E então

16:53 você tem a resposta. É exatamente a mesma coisa, exceto que agora, ao criar a resposta, você adiciona este alias de ferramenta aqui. O objetivo é que, em vez de apenas tentar responder à pergunta, o modelo use agora uma ferramenta de busca da Tavily para tentar encontrar a resposta na internet, certo? Então, estamos desenvolvendo o primeiro notebook, em que apenas dizíamos: “Por favor, gere uma pergunta” e depois “Por favor, gere uma resposta”. Agora

17:24 gere uma pergunta e, então, você tem esta ferramenta disponível. Você pode usar essa ferramenta para tentar encontrar a resposta, em vez de tentar gerá-la? Então, essa é a diferença entre o primeiro e o segundo notebook. E, novamente, você tem o modo de prévia, no qual pode gerar alguns registros e depois examiná-los. Aliás, a criação de dados é muito iterativa. Não é algo que você faz uma vez e pronto. Então, quando cria alguns dados, você os examina. Se não estiver satisfeito com eles, provavelmente

17:55 vai alterar seu workflow, mudar seus prompts e, então, iterar sobre ele. Quando estiver satisfeito, você poderá enviá-lo para execução em lote. Então, vamos ver o que o segundo notebook produziu. Digamos que a pergunta seja: para qual cidade alemã a Telefunken transferiu sua sede em 1949? Alguém sabe a resposta? Não. Certo? Quer dizer, eu não sei a resposta. Então, o que queremos fazer é criar perguntas

18:26 que sejam difíceis, para que o modelo use raciocínio e tool calling. Quando o modelo tenta responder a isso, como vocês podem ver aqui, ele está usando o Tavily. A primeira busca que fez foi: “Para qual cidade a Telefunken transferiu sua sede em 1949?” Então, basicamente, ele está usando uma ferramenta de busca, e depois vai obter uma resposta. Esta é a consulta feita pelo modelo, e aqui estão os resultados. Estes são todos os URLs, e para cada URL ele vai fornecer

18:56 um título e também o conteúdo. Então, é isso que o Tavily nos fornece, certo? Se você fizer uma consulta, é isso que ele fornece ao agent quando o agent faz a consulta. E, então, você recebe a resposta. Por fim, pode criar seu conjunto de dados no modo em lote, assim como fizemos da última vez. E, se estiver pensando que ele passou voando pelos dois primeiros notebooks, é porque o ponto principal está no terceiro notebook, certo? Então, é nele que eu realmente quero que nos concentremos hoje. Então,

19:27 vamos falar sobre busca. Acabamos de passar por alguns notebooks que mostram como usar o Data Designer, e tudo bem, mas qual é o problema que estamos tentando resolver? Como mencionei antes, sou cientista pesquisador na NVIDIA e também fazemos parte da equipe Nemotron. Nemotron é uma coleção de modelos de base open source que criamos. Acabamos de lançar nosso modelo mais recente, Ultra, mas também temos outros dois modelos. Temos três modelos de tamanhos diferentes. E, como parte desse

19:58 trabalho, tivemos que ensinar o Nemotron a fazer buscas. E isso é muito importante, certo? Talvez pareça que faz muito tempo, mas, há dois ou três anos, tenho certeza de que todos vocês se lembram de olhar para o ChatGPT, o Claude ou o Gemini e, em seguida, ver na interface web a indicação de que a data limite de conhecimento era dezembro de 2023. O motivo dessa indicação é que, bem, em algum momento é preciso começar a treinar o modelo. Então, em algum momento, é preciso parar de coletar e criar dados, certo? Digamos que estejam

20:30 treinando o modelo em janeiro de 2024. Em dezembro de 2023, precisam essencialmente congelar os dados. Então, tudo o que o modelo poderia saber depois de dezembro de 2023 não faz parte dos dados de treinamento. Se você fizesse uma pergunta como “Como está o tempo hoje?”, não haveria como o modelo responder com base nos dados de treinamento, certo? Pergunta. >> Sim.

21:00 Então, sim, não deixem de escanear o QR code. A ideia é: como ensinar o modelo sobre acontecimentos atuais? Saber sobre acontecimentos atuais parece tão importante quanto, se não mais importante do que, saber sobre coisas do passado, certo? Então, é por isso que existe a busca e é por isso que os modelos precisam aprender a fazer buscas. Voltando ao slide: ensinar os modelos Nemotron a usar ferramentas de busca foi a nossa motivação, e, essencialmente,

21:35 o modelo precisa ter acesso a informações em tempo real para conseguir fazer coisas úteis. Então, como fizemos isso? Antes de explicar como fizemos, precisamos de algo que nos permita medir o progresso, certo? Na comunidade de modelos de base, quando é preciso medir o progresso em alguma coisa, usa-se um benchmark, que é como um conjunto de teste padronizado, sem as respostas, certo? Não temos as respostas. Um dos benchmarks de busca é o BrowseComp, que é um benchmark realmente difícil. E a Copa do Mundo da FIFA está acontecendo agora, então não sei quantos fãs de futebol há aqui, mas sou um grande fã de futebol. Mas, de 1990 a 1994, quais equipes disputaram uma partida de futebol com um árbitro brasileiro? Houve quatro cartões amarelos, dois para cada equipe, três no total, blá-blá-blá. Não vou ler o restante da pergunta, mas ela é bem complicada, certo? Há como algum de nós saber a resposta, a menos que haja alguém muito versado nisso, que saiba a resposta

22:07 de cabeça. O que faríamos antigamente, há três ou quatro anos, era tentar decompor um problema se tivéssemos uma consulta complicada como essa. Então, pensaríamos em quais consultas fazer. Iríamos pesquisar no Google ou em outro lugar para obter mais informações e, depois, raciocinaríamos sobre qual era nosso objetivo original, a que informações tivemos acesso e como prosseguir a partir daí. E, por fim, chegaríamos à resposta. Certo? A resposta é Irlanda contra Romênia. Eu não sabia

22:38 disso. Então, como criamos um conjunto de dados que nos permite treinar um modelo para sair de 0% e chegar a 30% nesse benchmark BrowseComp? É isso que vamos aprender hoje. Para fazer isso, usamos um conjunto de dados inicial, que descrevi antes, mas o nosso não é apenas a Wikipédia. É algo que consiste essencialmente em um grafo de tópicos da Wikipédia.

23:09 Ele se chama Wikidata. O que fizemos foi percorrer algumas etapas nesse grafo, e esse é o nosso conjunto de dados inicial. Sei que o diagrama à direita parece uma árvore, mas não é uma árvore; é um grafo. Então, se parece uma árvore, a culpa é minha. Deveria ser um grafo. E, essencialmente, dá para ver à direita que o primeiro tópico é NVIDIA, e a NVIDIA está conectada a Jensen, nosso CEO. E isso

23:42 está conectado à Oregon State University porque, segundo o Wikidata, foi lá que ele estudou. Essa universidade fica no condado de Benton, e o condado de Benton recebeu o nome de uma pessoa chamada Thomas Hart Benton. Se você escolhesse aleatoriamente uma entidade no Wikidata e percorresse de cinco a oito etapas, e vou explicar por que de cinco a oito, acabaria com um percurso como este,

24:13 como o conjunto verde de entidades, com setas entre elas. Esse é, essencialmente, nosso conjunto de dados inicial para criar enigmas de busca. Um enigma de busca que eu poderia criar a partir disso — vou ter que ler minhas notas — é: “Qual empresa foi fundada pela pessoa que estudou na universidade localizada no condado que recebeu o nome de Thomas Hart Benton?” Não há como o LLM saber a resposta com base nos dados de treinamento, certo?

24:45 Porque, se dermos a um agent a chance de trapacear, ele vai trapacear. Vai simplesmente nos dar a resposta; não vai usar as chamadas de ferramentas — ou melhor, as ferramentas, como a busca — que queremos que ele use, certo? Então, queremos tornar as perguntas o mais difíceis e, digamos, enigmáticas possível, para que possamos fazer o modelo adotar o comportamento de busca. Esse é o nosso conjunto inicial. Falei sobre a primeira etapa, que é criar percursos aleatórios com a semente, e sobre por que usar de quatro a oito, ou de cinco

25:17 Porque, se dermos a um agent a chance de trapacear, ele vai trapacear. Ele simplesmente vai nos dar a resposta. Não vai usar as chamadas de ferramentas nem as ferramentas — desculpe, como a busca — que queremos que ele use, certo? Então queremos tornar as perguntas o mais difíceis e, eu diria, enigmáticas possível, para podermos induzir o comportamento de busca do modelo. Então, esta é a nossa semente. Falei sobre a primeira etapa, que é criar caminhadas aleatórias com uma semente, e por que quatro a oito ou cinco

25:48 Às vezes, ao chegar a oito saltos, se você seguir esses saltos, acaba saindo completamente do assunto. Por exemplo, pode mencionar o nome de uma pessoa e, em seguida, dizer: “Bem, um ser humano”. Claro, isso é verdade, mas não tem muita relação. Basicamente, seus saltos vão sair do assunto. Por isso, como heurística, queremos ficar entre quatro e oito. Foi o que funcionou bem para mim. Depois, você transforma essas sementes em enigmas de busca e executa a busca usando a ferramenta de busca, que é a Tavily.

26:20 Então, é assim que você cria um conjunto de dados com um prompt de busca e uma resposta à busca, certo? Depois, avaliamos nossos dados. E uma coisa que não foi mencionada aqui é que treinamos nossos modelos, certo? Então, quando você tem o conjunto de dados, treina o modelo com ele e mede o desempenho em um benchmark padronizado. Vamos dar uma olhada no notebook e ver como podemos fazer isso. Alguma pergunta até aqui? Sim.

26:57 O motivo pelo qual isso era importante é que, na verdade, não se trata de perguntas difíceis, mas de perguntas cujas respostas o modelo não consegue encontrar facilmente na internet. Se você pegasse todo aquele bloco de texto que tínhamos no benchmark BrowseComp e o colocasse na web, não obteria a resposta. Quer dizer, obteria a resposta por causa da busca com IA do Gemini agora, mas é isso que estamos tentando ensinar ao modelo, essencialmente. Sim.

27:30 Certo. Este é o tutorial de ponta a ponta sobre busca agentic. Já conversamos sobre como fazemos isso e como criamos os dados. Também falamos sobre como importamos todos esses prompts, e escrevi uma função para usar a Tavily com MCP. Você pode consultar o código mais tarde. E aqui estão nossas entidades-semente.

28:03 Este é o exemplo que mostrei. É apenas uma entidade-semente. O algoritmo de coleta de sementes que uso funciona assim: você pode executá-lo um milhão de vezes e obter um milhão de saltos diferentes pelos dados da Wiki. Esses são apenas tópicos que queremos usar como base para criar nossos enigmas de busca. Outro tópico é arte moderna. Não sou especialista em arte, então não entendo a maioria desses termos, mas, essencialmente, este é outro salto-semente que você pode…

28:36 A forma de criar esse conjunto de dados é: “Você é um agente de busca especialista que usa a busca na web para responder às perguntas com precisão. Forneça um JSON válido com a resposta final, URLs de apoio e uma justificativa curta. Estas são as ferramentas disponíveis para você.” Você tem uma ferramenta, a busca da Tavily, e aqui estão algumas diretrizes de uso para ela. Então, dizemos: “Por favor, não use mais de… Não chame a ferramenta cem vezes e gaste mil dólares ou…

29:08 alguma coisa assim”. Acho que você pode incluir todo tipo de instrução, mas, essencialmente, o que queremos é que seu agent não saia do controle e tente gastar dinheiro demais para responder a uma pergunta muito fácil, ou algo assim. Por isso temos todas essas instruções e também incluímos um exemplo. Isso é algo como aprendizado em contexto, certo? Você coloca um exemplo no…

29:40 prompt e, essencialmente, o modelo pode aprender com esse exemplo como chamar a ferramenta de busca. Este é o prompt que queremos criar. Aqui, reunimos os saltos dos dados da Wiki. Podemos inserir esses saltos no prompt aqui, que são nossa entidade-semente. Depois, pedimos ao modelo que crie uma pergunta…

30:11 usando algumas ou todas as entidades-semente deste salto. Em seguida, pedimos ao modelo que crie uma resposta usando esta trajetória do agent, que mostrei antes, no segundo notebook. Depois de fazer isso, você terá um conjunto de dados de pré-visualização. Aqui está nosso conjunto de dados de pré-visualização. O Conselho Indiano de Pesquisa Médica é a entidade inicial da…

30:42 semente. E, aparentemente, fica em uma cidade chamada Bhubaneswar, que é a capital de algum estado da Índia. Esse é o nosso caminho-semente. E aqui está a pergunta que o modelo criou. A trajetória do agent não aparece aqui, mas, se você olhar, podemos ver como ela é. Ele fez várias chamadas de ferramenta, raciocinou sobre a pergunta e depois tentou encontrar a resposta na…

31:13 internet. É assim que você cria um conjunto de dados de chamadas a uma ferramenta de busca. Vou parar por aqui para responder a perguntas e, depois, podemos passar aos próximos slides. Alguma pergunta? Se algo… Sim.

31:51 Sim. >> Com certeza. >> Sim. Elevamos o benchmark BIRD de 26% para 41%. Você fez a pergunta certa, e também temos uma publicação no blog sobre isso. Você pode ler a respeito. Temos publicações no blog sobre todos os conjuntos de dados que criamos com o Data Designer, como você pode ver aqui. Também participei desse trabalho. Isso fala sobre SQL, e posso…

32:23 também compartilhar o link com vocês depois. Mas, essencialmente, o Data Designer pode ser usado para criar qualquer tipo de conjunto de dados para treinar modelos de IA, e talvez outros conjuntos de dados também, caso você esteja procurando conjuntos de dados de teste não relacionados ao treinamento de modelos, por exemplo. Além do Data Designer, criamos várias ferramentas de dados na nossa equipe, e vou falar delas no final.

32:55 >> Então, a pontuação de 70 no BIRD se deve ao fato de ser agentic. Nosso conjunto de dados SQL atual não é agentic. Além disso, a pontuação em benchmarks depende muito do modelo. Estamos falando de passar o Nemotron Nano, nosso LLM de tamanho pequeno — ou SLM. Não sei se dá para chamar de SLM, porque é um MoE, mas é um LLM. Para esse tamanho de modelo, o desempenho no BIRD é bem…

33:25 respeitável. Sim. Pergunta. >> Sim. Não, este é um algoritmo determinístico para criar os dados-semente. As chamadas de ferramenta e a parte agentic entram na criação efetiva, como…

33:57 na execução da busca propriamente dita, depois que você tem a pergunta, e na criação da trajetória. Chamamos isso de trajetória. Então, criar a trajetória de busca é determinístico. É simplesmente algo que inventei para criar dados-semente. Você pode ter qualquer tipo de dado-semente. Talvez consiga até pensar em uma forma melhor de criar dados-semente. >> Ótima pergunta. Podemos fazer isso.

34:29 Criamos conjuntos de dados que podem ser usados no pré-treinamento e no pós-treinamento. Meu foco principal é o pós-treinamento, ou, você sabe, criar conjuntos de dados para o pós-treinamento. Este projeto específico foi de SFT no pós-treinamento. Sim. >> Não há nenhum motivo especial, além do fato de que acho que alguém da NVIDIA fez um acordo com a Tavily para conseguir créditos. Você pode usar a Exa. A Exa é outro provedor de busca agentic.

35:00 Você pode escrever sua própria ferramenta de busca. Acho que sim. Também tem essa possibilidade. >> Sim, essencialmente. >> Então, as respostas de referência são geradas pelo Data Designer usando o modelo que você escolher. No primeiro notebook… E desculpe, acho que…

35:31 Acho que fui um pouco rápido, porque só temos uma hora para este workshop. A versão anterior deste workshop tinha duas horas. O modelo que usei para criar os dados foi o GPT-OSS-120B. Mas o Data Designer não é apenas uma coleção de LLMs que você pode usar para criar dados. Ele também tem vários modelos LLM e não LLM trabalhando juntos para ajudar você a criar dados diversos. >> Pode repetir? >> É SC. Sim. O que você quer dizer?

36:07 Sim. >> É. >> É. >> Sim. >> Sim, você está destilando. Mas, em alguns casos, você pode até ir além da destilação. E é esse o argumento que estou tentando defender, porque criamos esta ferramenta que permite gerar dados diversos. Por exemplo, um caso de uso completamente diferente em que eu estava trabalhando: GPTOSS obtém uma certa porcentagem

36:40 nesse benchmark chamado strructal, que é uma forma de medir o desempenho dos modelos em formatos JSON, Markdown, XML, YAML e CSV. E o Neotron foi destilado do GPTOSS, mas superou o desempenho do GPTOSS. Então, é destilação, mas também pode ser algo mais poderoso, por causa de tudo o que incorporamos ao Data Designer. Sim. >> Como posso usar o Data Designer? >> Você pode usar o Data Designer para RL.

37:10 >> Então, digamos… E, aliás, estamos fazendo isso para busca agora, ou melhor, a equipe da NVIDIA está fazendo isso para busca. Em vez de tentar criar a solução ideal, como ele descreveu, ou, sabe, executar os enigmas de busca conforme estão escritos no meu slide, você simplesmente pula essa etapa e acaba com um conjunto de dados cheio de prompts. Depois, temos uma ferramenta chamada Nemo Gym, que é essencialmente uma função de recompensa para RL. Acho que é uma… é uma

37:41 ferramenta para basicamente ensinar seus modelos a fazer RL. Mas o ponto é que, no Nemo Gym, você escreve uma função que essencialmente fornece uma recompensa, e então pode usar qualquer framework de treinamento de RL para executar isso em tempo real com essas ferramentas e, em seguida, fornecer uma recompensa no RL. >> É um ótimo ponto. Estamos pensando em

38:12 como fazer isso neste momento. Mas criar algo genérico é o desafio, certo? Não queremos criar algo específico para um único caso de uso. É. É confiável e preciso para ETL?

38:42 Eu mesmo ainda não testei, mas acho que sim, porque deveria ser: criamos um conjunto diversificado de dados com o Data Designer e, no início, mostramos cerca de 6,5 trilhões de tokens. Se não for confiável, você deveria falar conosco para vermos como podemos ajudar. >> Não consigo ouvir você. Desculpe. Desculpe, não estou conseguindo ouvir.

39:17 >> Ah, não sei. Vou falar com você no final e podemos conversar melhor. É, desculpe por isso. Certo. Temos mais ou menos 15 minutos. Então, vou avançar e podemos fazer mais perguntas no final. Vamos falar de algo muito interessante: avaliar seus dados sintéticos. E isso não é fácil, porque, sem essa etapa de avaliação, os dados sintéticos não são muito úteis. Para dar uma ideia, quando comecei…

39:48 com a geração de dados sintéticos, que chamamos de SDG, comecei com 50.000 sementes e, no fim, acabei com apenas 7.000 registros SFT de ponta a ponta e de alta qualidade. Depois, usei isso para treinar o modelo e elevamos o benchmark de 0 para 30. Isso é ótimo, mas passar de 50.000 para 7.000 significa muita filtragem para encontrar dados de alta qualidade. Então, o que

40:18 estou tentando enfatizar aqui é que a qualidade dos dados é o mais importante quando você está tentando criar dados. E o que quero dizer com qualidade? Ela pode ser específica à tarefa, mas também pode ser genérica. Por exemplo, a diversidade é um eixo de qualidade, eu diria. Depois disso, criei esta função para nos ajudar a mostrar as pontuações que o LLM as a judge atribui a cada trajetória

40:49 e a quantidade de palavras na sua pergunta ou consulta de busca; aqui está a porcentagem mantida: 66%, e assim por diante. O mais interessante… Você pode dar uma olhada nessa função mais tarde, mas o realmente interessante é: como verificar se as respostas obtidas pelo modelo estão corretas ou não? Encontrei este exemplo muito interessante. O enigma de busca era bem simples: dizia: “Qual país é dono da US Steel?”

41:21 e achei que a resposta era os EUA. Então, acho que o agent previu “EUA” no conjunto de dados de treinamento, e meu verificador disse que estava correto. Mas depois pesquisei no Google e, pelo que parece, os EUA venderam a US Steel para o Japão, acho que há alguns anos, se me lembro corretamente. Então, até mesmo minha semente de dados da Wikipédia pode ficar desatualizada, certo? Esse é o verdadeiro desafio: como avaliar e dizer se

41:54 os dados que você criou são bons, precisos, relevantes e assim por diante? Acho que, se você implementar uma função determinística simples de correspondência, como fiz, vai acabar com algo em torno de 24% e pensar: “Bem, meus dados são terríveis. Por que fiz tudo isso?”. Mas não é bem assim, porque eu esperava uma porcentagem baixa: não sei como criar essa função de verdade. Então, esta

42:25 é uma área de pesquisa ativa: como avaliar esses dados? Do meu ponto de vista, a avaliação é um problema multifacetado. Não basta simplesmente usar LLM as a judge e esperar que isso dê conta de tudo. A avaliação é um problema em que, se você verificar 100 problemas e constatar que esses 100 não aparecem, tudo o que pode concluir ao verificar esses 100 problemas é que esses 100 problemas não existem no seu conjunto de dados. Pode haver outros mil problemas. Então, esse é o

42:57 desafio: como avaliar os dados? Temos algumas maneiras diferentes de fazer isso. Uma delas é o LLM as a judge, que mencionei antes, algo genérico. Uma coisa muito interessante que fiz foi usar LLM as a judge e enviar os julgamentos a revisores humanos. Pedi que esses revisores verificassem os julgamentos do LLM e, essencialmente, me dessem confiança de que o LLM está julgando minhas respostas corretamente. Essa é uma maneira

43:28 de fazer isso. E, no caso da busca, você pode consultar informações em tempo real. Então, basicamente, precisa combinar todas essas diferentes camadas de avaliação para ter confiança suficiente no seu conjunto de dados. É isso quanto ao código. Sei que passei por ele muito rápido, mas espero ter disponibilizado tudo isso no meu repo do GitHub para que vocês possam dar uma olhada. Vamos falar de alguns outros casos de uso. Como mencionei antes, fazemos parte de uma equipe muito

44:00 maior que cria o Neotron, certo? Meu foco, ou o foco da minha equipe, é essencialmente criar conjuntos de dados ou criar um framework para criar conjuntos de dados — ou, acho, as duas coisas. Criamos todo tipo de conjunto de dados. O primeiro sobre o qual falamos hoje foi o de tool calling para busca. Também temos um conjunto de dados para chamadas de ferramentas com vários turnos. Acho que o de busca era de um único turno, certo? Passamos do prompt à resposta. Mas e se você tivesse vários

44:30 turnos ou várias ferramentas? Não apenas ferramentas de busca, mas, sei lá, uma ferramenta de previsão do tempo ou uma ferramenta de programação, e assim por diante. Estamos trabalhando em vários projetos diferentes. Outro caso muito interessante é a geração de saídas estruturadas. Falei brevemente sobre isso. Existe um benchmark chamado strructal, que mede seu desempenho em TOML, JSON, YAML, CSV, XML, e todos esses formatos são extremamente importantes, porque todo mundo quer usar agents para fazer

45:04 tudo. Tenho certeza de que todos vocês já viram o meme do lança-chamas, o blowtorrch, no LinkedIn ou em algum lugar. Mas, se vamos usar agents como peça central em aplicações de software, eles precisam nos fornecer de forma confiável algo como um formato JSON ou YAML, e assim por diante. Era nisso que estávamos trabalhando. Também trabalhamos com SQL, que alguém mencionou aqui, e também trabalhamos com pesquisa científica.

45:34 raciocínio. Também há conjuntos de dados de pré-treinamento que criamos usando o Data Designer para desempenho em STEM e outras coisas. Posso falar sobre as práticas recomendadas para gerar dados. Não vou detalhar isso, porque vocês sempre podem consultar os slides depois, mas, essencialmente, a diversidade vem antes do volume. Acho que o artigo do Kim K2 mostrou algo semelhante: 10 estratégias em uma época são melhores do que uma época. Desculpe, 10 estratégias em uma época são

46:05 melhores do que 10 épocas com uma estratégia. E vocês sempre devem usar o tipo de coluna correto mais barato. Usar um LLM para criar um sampler, por exemplo, não faz sentido, certo? É um desperdício completo de recursos. Mas usar um LLM para gerar dados de texto faz muito sentido. Então, nossos samplers são escritos em Python, é claro. Depois, vocês geram dados em excesso e filtram até chegar ao volume desejado, como mencionei antes, e verificam o que for possível. Vocês podem iterar na prévia. Acho que a melhor maneira de saber se seus dados são bons é

46:36 olhar os dados de fato. Essa é a melhor maneira. Se puderem, revisem algumas amostras. E, claro, qual é essa ideia do Data Designer? Essencialmente, vocês pegam o processo de criação de dados e o transformam em algo que pode ser controlado por versão e compartilhado, como código. Ou seja, criamos código que pode criar dados. Assim, vocês podem compartilhar esse código com qualquer pessoa, porque já criamos todas essas ferramentas para compartilhar código, manter o controle de versão e fazer todas essas outras coisas. Então, se vocês estão tentando fazer busca, mas não

47:08 exatamente do jeito que eu fiz, e sim de uma maneira um pouco diferente, peguem meu código, modifiquem-no e criem seu próprio conjunto de dados a partir dele. Bom, isso é muito interessante. Estou entrando nos slides extras, algo que achei que não faria. Acho que tenho mais 10 minutos. Certo. Então, isso é algo realmente interessante. Criamos algo chamado personas. O Neotron Personas USA também foi inspirado por este outro artigo, que trata de escalar a criação de dados sintéticos

47:39 com 1 bilhão de personas. Então, o que é uma persona? Essencialmente, estamos tentando resolver o problema de como saber se os dados que vocês criaram realmente correspondem a informações demográficas ou estão fundamentados em distribuições do mundo real. Isso é muito importante. Então, se eu fosse criar um conjunto de dados de prontuários de saúde em San Francisco, na Califórnia, gostaria de garantir que a demografia real de San Francisco estivesse refletida no meu conjunto de dados, certo? Então, o número de… a demografia…

48:11 real de San Francisco está refletida no meu conjunto de dados, certo? Há todos os tipos de características demográficas. Criamos um conjunto de dados chamado Neimatron Personas usando o Data Designer, que agora também é uma semente no Data Designer para criar mais conjuntos de dados. Isso permite aprender com dados de usuários sem expor as informações de nenhuma pessoa.

48:42 Assim, vocês podem treinar modelos de IA e aprender com o conjunto agregado de informações das pessoas, mas não precisam, por exemplo, usar diretamente meus prontuários de saúde no treinamento de um modelo de IA. Continuo usando o exemplo da saúde porque quero encontrar um setor sensível, em que há conformidade com a HIPPA e todo tipo de regulamentação que precisamos respeitar. Então, esta é uma persona. Essa pessoa é uma…

49:13 farmacêutica de 50 anos, de espírito livre, que equilibra sua abordagem descontraída, blá-blá-blá. Mas, essencialmente, há uma persona, uma persona profissional, nome, sobrenome, nome do meio, gênero, idade e todo tipo de informação. Temos um milhão delas. Vocês podem pegar isso e usar como quiserem, como semente para criar mais dados. Então, acho que vou parar por aqui com as personas. Temos mais dois

49:44 minutos. Vou falar sobre essas outras ferramentas e depois deixaremos tempo para perguntas. Ah, uma pergunta. Sim. >> Sim. >> Para… >> Sim, sim, sim. Então, essencialmente, foi por isso que criamos isso: para haver uma maneira de aprender com informações agregadas sem incluir pessoas individualmente. Assim, vocês poderiam criar números de Seguro Social sintéticos. Eles não

50:15 seriam realmente o seu número de Seguro Social, certo? Mas acho que a ideia é… Por exemplo, não sei qual seria um bom exemplo… >> Sim, sim. >> Sim, sim. Exatamente. Por exemplo, criamos alguns dados fiscais para um cliente e, nesses dados fiscais, eu…

50:47 percebi que há exatamente sete pessoas nos EUA com menos de 18 anos que ganham mais de 10 milhões de dólares por ano na declaração de imposto, mas há muito mais pessoas mais velhas que ganham determinada quantia. Então, nos dados fiscais que criamos, digamos que queremos criar um formulário W-2 sintético. Precisamos garantir que esse formulário não tenha apenas valores aleatórios gerados pelo LLM, porque o LLM não vai fornecer… Se vocês pedirem a um LLM para contar uma piada,

51:18 ele vai contar a mesma piada todas as vezes. Da mesma forma, não vai fornecer números realistas, certo? Vai sempre voltar à média das coisas. Então, quando criam dados, vocês precisam garantir que o formulário W-2 sintético, o formulário 1040 ou qualquer outro esteja de acordo com a distribuição do mundo real. Foi por isso que criamos esse conjunto de dados de personas. Temos várias ferramentas. Só mais dois minutos e depois mais perguntas. Desculpem. Temos várias

51:48 ferramentas que criamos. Acho que o Data Designer é só a ponta do iceberg. Mas é nossa ferramenta mais bem-sucedida até agora porque é a mais antiga. Também temos ferramentas de curadoria de dados na NVIDIA, como o Nemo Curator, sobre o qual certamente haverá outras palestras. Acho que vi uma no cronograma. É muito interessante. É preciso pegar dados do mundo real, selecioná-los, modificá-los, fazer o pós-processamento e deixá-los em um estado em que

52:19 possam ser usados para treinar LLMs, ou vocês podem criar dados sintéticos. Acho que depende do caso de uso. Não vou ficar aqui dizendo que dados sintéticos são a melhor coisa de todas para qualquer situação, mas há casos de uso específicos em que vocês querem selecionar dados do mundo real ou gerar dados sintéticos. Temos ferramentas de curadoria de dados e o Data Designer, nossa ferramenta de geração de dados sintéticos. Temos uma nova ferramenta chamada Anonymizer. Aliás, todas essas ferramentas são completamente open source. Tudo o que nossa organização faz na NVIDIA é totalmente open source,

52:50 incluindo Neotron e todas essas ferramentas. Vocês podem usá-las como quiserem. Essa ferramenta de dados se chama Nemo Anonymizer. O objetivo é saber se conseguimos anonimizar dados. Não sei quanto a vocês, mas não sei se deveria dizer isso com a palestra sendo gravada: já coloquei todo tipo de coisa nos meus agents. Uma vez, por acidente, coloquei minhas chaves de API lá, ou alguma outra informação sensível, sabe? Todos esses dados de log de todos os agents que vocês usam. É preciso ter uma maneira de

53:22 anonimizá-los antes que possam ser usados, certo? É isso que o Anonymizer faz. Esse é só um exemplo, mas há obviamente muitas outras maneiras de usar o Anonymizer. Também temos o Nemo Safe Synthesizer, que permite gerar versões sintéticas seguras de conjuntos de dados sensíveis. Então, venham falar comigo se tiverem alguma pergunta. Aqui está meu LinkedIn, caso queiram manter contato. Novamente, vocês podem usar o Data Designer. Adoraria que vocês experimentassem os notebooks. Sinto muito por termos tido apenas um

53:53 hora, então tive que passar por todo o código às pressas, mas vocês podem experimentar os notebooks. Também temos os blogs, caso tenham interesse em texto para SQL ou em algum outro caso de uso. Então, isso está nos mostrando como usar as personas. Acho que há um blog em algum lugar sobre como criamos o conjunto de dados de personas para os EUA. Pegamos as informações do censo e usamos um modelo gráfico probabilístico, um PGM, para essencialmente criar uma conexão entre todos

54:24 basicamente, pegar essas informações demográficas, processá-las e então tentar criar um conjunto de dados a partir delas, essencialmente. Foi isso que fizemos. E cada país publica essas informações demográficas. Então, não é bem… Estou olhando outros slides agora. Temos feito várias dessas oficinas recentemente. Mas há todo tipo de persona, caso vocês estejam tentando criar algo fora dos EUA, por exemplo, algo para o Japão, a Índia,

54:56 Singapura, Brasil; tenho certeza de que agora temos mais. Então, temos conjuntos de dados de personas de todos os tipos. Isso nos dá uma maneira de criar uma IA personalizada para qualquer país que lhes interesse.

Transcrição original

[00:12] The workshop is about something more generic and more powerful. It’s about how do we build data pipelines um using the tool that we created Nemo uh data designer uh to be able to create or add any kind of functionality to a model or an agent. So let’s get started. And by the way, I have a GitHub repo uh where I have some notebooks. So if you’re interested, you can scan the QR code or you can go to that GitHub repo. Um and I’ll have the same QR code on all the other slides as well. So if you miss it, there’ll be

[00:43] more chances to get it. So what is the workshop about and what will we learn here? Um the first thing we’re going to learn is how do you actually take a target agent behavior that you want and turn it into a data problem right? So basically can we create data for this targeted agentic behavior and then can we train a model to learn how to um uh do that task. And so we built a tool called data designer

[01:13] to build uh synthetic data pipelines uh which does exactly that. And the use case that we’re going to target today is search. Um, and by the way, this is a very reusable framework. So if you want to create data for something apart from search, this is exactly how you would do it. And there’s two ways to participate in today’s workshop. So um, we have, you know, of course, you can follow live, try to run the notebooks, but since we just have like probably an hour or less than an hour, um, you could also listen

[01:45] now and then run the notebooks later. Um, so yeah, make sure you get the GitHub link. And if you want the slides, I also have the slides on the on the uh GitHub repo. So you’re going to need four things if you’re going to follow along either now or after the workshop. Obviously, you need a GPU enabled machine. So a cloud VM or a workstation. Um, you also need a Tavi search API key. Tavi is a company that does uh search for agents. If you

[02:16] sign up on their website, they’ll give you a thousand credits for free. And you need data designer, which is our tool for creating data. It’s fully open source. Anyone can download it, use it, do whatever they want with it. And all the notebooks that I’ve provided um on the GitHub repo. So here’s the agenda for today. So we’ll first spend a few minutes talking about what is data designer and why do we actually need a framework like this and

[02:46] then we’ll talk about uh the basics. Um there’s three notebooks I’m going to actually be showing you code. U the first notebook is about the basics of data designer. How do you actually create data that you want? And then the second notebook is about model context protocol or MCP. How do you actually uh create agentic data? And then the third notebook which is what um is the super interesting use case of search. How do you actually teach a model to do search and then we’ll leave some time at the end for questions.

[03:19] So I want to start off with a quote from Andre Karpati and he said internet data is not the data you want for your transformer. So this is um a very uh valid point because internet data could be you know highquality sources like Wikipedia or it could be you know someone’s opinion on Twitter or X or some other platform right so how do we actually know um what data is useful for training AI models and what data is not useful so uh we need to process this

[03:49] internet data curate it and then uh create training data from it so that’s the traditional approach approach. What we’re proposing is that we could actually synthetically generate data uh either from scratch or from a seed data set. And so that’s what data designer is for. So data designer is a framework to create synthetic data. And what do I mean by um seed data? So seed data like you could use Wikipedia data as a seed and then try to create

[04:22] synthetic training data from Wikipedia. So your synthetic data is not just made up by a model. It is grounded in real world uh distribution and real world data. So data design is a completely open-source framework. We have a large team at NVIDIA that works on this. Um and uh you can just install it by uh running pip install data designer. And I think um what’s really um what

[04:55] we’re really proud of is data designer has been used to create six and a half trillion tokens of um training data and this is increasing every single day. Um and yeah we’re keeping track of the GitHub stars as well. So if you like our repo give us a star. So uh what is synthetic data generation right? U well one way to do synthetic data generation is take a loop run it a million times and then if you want to

[05:26] create a product review data set just you know continually prompt a LLM saying give me a product give me a review and then give me a customer profile that’s one way to create a data set but you’re going to run into a bunch of issues if you do that so what’s missing um well diversity diversity diversity that’s the most important thing right if you continually prompt LLM after 10, 12, maybe 20 tries, it’s going to start repeating stuff. It’s not going to give you what you need. Um, you’re also

[05:56] missing correlations between all the features that you’re looking for in your data set. Um, you don’t have multimodality. Um, you know, you’re not really able to steer the creation of that data set and there’s no validation, verification, uh, and so on. And if I create a data set, I can’t really share it with you because how do you actually take the uh process that I use to create my data set to create something similar. So that’s why we created data designer.

[06:26] So how does it work? Uh we have many different columns or features in data designer. U these columns are essentially um a data designer abstraction. In data designer, we generate data column by column. So first you have your seed column which is completely optional. So I gave the example of Wikipedia which could be a seed data set. Um we could use any data set as a seed. So anything which is a CSV, JSONL, parket file. So you could use your own

[06:58] company data as seed. And then you can try to uh add sampler columns to inject diversity. So let’s say you are trying to create a coding data set. Well, a very simpler sampler column would be like easy, medium, and difficult coding questions. So that’s a sampler column. You could add which is difficulty. You could also add subsamplers. So for easy, you could map it to a specific type of problem. For medium, you could map it to a specific type of problem and so on. So we’ll get into all of this. I know it

[07:30] feels a bit abstract, but we’ll get into all of this once we look at the code. Um and then we have columns for generating text, for generating structured data, for generating code. Uh we also uh data designer is now multimodal. So you can generate images as well. Um and you can validate your generations too. So the whole idea is we build a DAG or a graph which describes how your data set should be and then this DAG once you’re

[08:00] ready to execute on it you can just hit one click and get a data set out of it. So there’s three different notebooks we’ll walk through today. Um I know some of you are thinking well in 2026 he’s going to be showing us code right? I mean now there’s codeex and cloud code and all these amazing tools. So I think if you understand the code, it’ll be much easier to use codeex or cloud code to write your own uh synthetic data workflows for you. Uh so we’ll just take a brief look at each notebook now.

[08:33] And by the way, this is our repo. So this is our data designer repo. It’s fully open source. Um and this is the GitHub repo that um I have created for this workshop where we have notebooks. Um so you can try out notebook one 2 3 and then we also have um the slides here if you want to follow along or if you want access to the slides after the workshop. So let’s go to the first notebook. So

[09:04] this is our intro to data designer notebook. Can everyone see? Okay. or should I zoom in? It’s good. Okay, so first things first, we set up our environment. Um there’s a bunch of uh prompts in here that we’re importing. And then what we do is we just, you know, import data designer. That’s it literally. Uh and once you do that, you see in data designer there’s a concept

[09:35] of model providers. Um, so we’re currently using uh VLLM, so that’s local inference. So I’m running this on a on a on a Nvidia GPU cluster and then we have access to different types of models, right? So on my local cluster, I have access to GPTOSS 120 billion. You can use any model or any open model to create synthetic data. Um, some closed models prevent you because of licensing issues uh from creating data from it and using it for training models. But open

[10:06] models are usually fair game. So I’m using this model and um the goal here is can I actually take a data set of Wikipedia topics uh for this notebook. So like you know different like uh what Wikipedia has so many different pages and um uh many different topics. So we just made a list of those put it in a CSV and then we basically just call our config builder with seed data set. And so essentially now we’re um trying to create a data designer workflow but with

[10:36] Wikipedia uh topics. Um so once you do that you can add question difficulty. You can say easy, medium, hard, however you want your data set to be. And then there’s weights you can specify. So you can have more medium questions than um you know easy or hard. And then there’s all kinds of sampler columns you can add about question difficulty. So for example for easy you might do like direct lookup or simple fact or definition right but difficult might be you want something in more detail or

[11:08] obscure um and then once we get to the LLM generated columns you just call this function add column and then you have your prompt which is essentially going to um look something like this. Just trying to find it. Yep. So, you are an expert trivia question writer. Um, so here’s a topic

[11:40] difficulty question type. So whenever you put these uh ginger templating for topic, what it’s going to do is the topics you created in the previous um or in the seed that you had from your Wikipedia, it’s going to insert those at runtime into this prompt. So essentially every prompt that the LM sees is now unique and diverse. And so the model is going to give you diverse data when you actually hit generate. Um and then um you you can also have

[12:12] like a structured column. So a structured column is when instead of trying to generate like text data um you can try to generate like a JSON or markdown format or any custom format that you’re interested in. Um and uh we know that LLMs you know we have to be nice to them. We have to talk to them but sometimes they may not give you that structured format that you want. So then we just end up dropping those records. So the way um data creation works is

[12:44] we have something called preview mode in data designer. So essentially when you hit preview what’s going to happen is it’s going to try to create three records for you and then you can go and look at those records. So let’s look at some records. So all of this will make a lot more sense. So the topic here is the worldwide web. Um, and the question or I guess some consortium of the worldwide web and the question is which W3C recommendation is identified by the same three-letter abbreviation that serves as a airport code for some city in Norway.

[13:16] So there’s no way I would know the answer to this question, right? That’s why these questions are essentially hard because you want to invoke the model to do search, right? But in this first notebook, we’re just trying to create question answer pairs. So uh which is a very simple data set. So I guess this is the answer the model came up with. And then you can also add LLM as a judge to score how your model is doing. So this is the question the model came up with. This is the answer it came up with. And then um this is the question quality. So we can have another model judge what uh

[13:48] it thinks of the question that the uh previous model created um and so on. So in the end you end up with a data set like this. And by the way, we have a a function that you can just push your data sets directly to hugging face. Um so it’s super easy to use and um you can also visualize all of your questions here as you can see. And then you can get some stats about your data set. Obviously we generated only three records here. So uh you know these stats are not very meaningful but if you generate like hundreds or thousands of

[14:19] records you could do that. And then we have something called batch mode. So which is data designer.create create and here instead of a 100 I could just you know put how many other records I need and then I can go and create all these records and as I mentioned previously we generate data column by column so in the batch mode first you generate the questions and then you generate the answers right so this is obviously a very simple example and then you have the LLM as a judge

[14:49] um and here’s your final data set that’s what it looks like so That was the first notebook. I think it’s quite straightforward once you look at it and try it out. Um, we have a second notebook which focuses more on MCP and then we’re going to build to the third notebook which I think everyone will find interesting because that’s where we’ll actually talk about search. Sorry. >> Yeah. >> Oh yeah. The all the GitHub links are

[15:20] the same. I’m just putting them in every single slide. So, if you missed the first one, you can you can get it. But I’ll pause here for a minute if you want to scan. So, um let’s talk about MCP. So, MCP is a standard which allows um an agent to essentially connect to tools, right? So the tool here is tavly which is nothing

[15:50] but a search tool for agents. There are many other search tools as well. Um so that’s basically the um uh what what we need the mo what we’re trying to teach the model here is how do you do search right so uh tavly is a good tool for the model to use to learn how to do that search. Um so going back to the second notebook. So here what we’ll do is we’ll just build upon some simple concepts from the

[16:22] first notebook and we’ll add um how to create agentic data. So again you have the imports you have the the model configs and then the same seed data set the same sampler column. So question difficulty, question type and so on. And then you actually create the question and then at the end you get like a config, right? I don’t know why it’s printing printed this in like uh light color but yeah this is essentially your graph um that you’re creating and then

[16:53] you have the answer. So it’s the exact same thing except now when you actually create the answer you add this tool alias here. And so the goal is instead of just trying to answer the question, the model is now going to use a tavly search tool to try to find the answer on the internet. Right? So that’s we’re build we’re building upon the first notebook where we were just like okay please generate a question and then please generate an answer. Now it’s

[17:24] please generate a question and then hey you have this tool available. Can you use this tool to go to try to find the answer rather than trying to generate the answer? So that’s that’s the difference between the first and the second notebook. And then again you have the preview mode where you can generate a few records and then you look at your records. And by the way data creation is very iterative. It’s not like one and done. So when you create some data you look at it. If you’re not happy with it, then probably

[17:55] you go change your workflow, change your prompts and then you know iterate on it and then once you’re happy with it, you can send it off to batch execution. So let’s look at what um the second notebook produced. So let’s say the question is uh to which German city did Teleifan move its headquarters in 1949. Does anyone know the answer? No. Right? I mean I don’t know the answer. So um what we want to do is create questions

[18:26] that are difficult so it invokes reasoning and tool calling from the model and so when the model is actually trying to respond to this um it’s as you can see here it’s using tavly so the first search it made is tell if you can moved its headquarters in 1949 to which company so essentially it’s using one search tool called here and then um it’s going to get an answer so this is the query from the model and then here are the results. These are all the URLs and then for each URL it’s going to give you

[18:56] a title and then it’s also giving you the content. So that’s what Tavali gives us right if you make a query or that’s what it gives the agent when the agent makes the query and then you end up with the response and then finally at the end you can create your data set with batch mode just like we did last time. And if you’re thinking he just blazed through this whole first two notebooks, that’s because the crux of it is in the third notebook, right? So, um that’s what I really want us to focus on today. So,

[19:27] let’s talk about search. Um cuz we just went through a couple of notebooks showing us how to use data designer and that’s fine, but what’s the problem we’re actually trying to solve? So, um like I mentioned before, I’m a research scientist at NVIDIA and we’re also part of the Neotron team. So, Neimotron is a collection of found open-source foundation models um that we’ve created. Uh we just released our latest model Ultra, but we also have two other models. So, we have three different sizes of models. And so, as part of that

[19:58] work, we actually had to teach Neotron how to do search. And that’s very important, right? Because maybe this feels like a long time ago now, but maybe two or three years ago, I’m sure you all remember looking at like I don’t know chat GPT Claude or Gemini and then looking at the web UI and it says the knowledge cutoff date is December 2023. So the reason it said that is because well you have to start training the model at some point. So you have to stop collecting and creating data at some point, right? So let’s say they’re

[20:30] training the model in January 24. by December 23, they need to like um essentially freeze the data. So, anything that the model knows after um December 23 is not part of its training data. So, if you had to ask a question like what is the weather today, there’s no way the model can answer that question from its training data, right? Uh question. >> Yeah.

[21:00] So yeah, definitely scan the QR code. So the idea is how do you actually um teach the model about current events because learning about current events seems as important if not more important than you know knowing about uh things from the past, right? So um that’s why search exists and that’s why models need to learn how to do search. Um so coming back to the slide um so teaching neotron models how to use search tools that was our motivation and um um we essentially

[21:35] the model needs access to real-time information to be able to do useful things. So how did we actually do this? So before I get to how did we do this? We need something to measure progress on. Right? So um in the foundation model community when you need to measure progress on something you use a benchmark which is like a standardized test set without the answers right like we don’t have the answers so one of the benchmarks for search is browse comp uh which is a really difficult benchmark and uh the FIFA World Cup is going on

[22:07] right now so I don’t know how many soccer fans there are here but I’m I’m a big soccer fan but we don’t call it soccer but um between 1990 and 1994 four. Which teams played in a soccer match with a Brazilian referee? Had four yellow cards, two for each team, three in total, blah blah blah. I won’t read the rest of the question, but it’s it’s quite complicated question, right? There’s no way that any of us know the answer to that or maybe there’s like, you know, someone who’s um really wellversed in this who has the answer at

[22:38] the top of their head. What we would do back in the day like you know three four years ago is we’d actually try to break a problem down if we had a complicated uh query like this and then we would reason about what queries to actually make. We would go and search on Google or elsewhere uh get access to more information and then reason about what was our original goal, what information did we get access to and then proceed from there and then finally arrive at the answer. Right? So the answer is Ireland versus Romania. I I didn’t know

[23:09] that. Um so how did we actually create a data set that allows us to train a model to go from 0% to 30% on this browsecom benchmark? Um so that’s what we’re going to learn about today. So to do that we took we did something um uh we we used a seed data set which I described earlier except our seed data set is not just Wikipedia it’s something that um is essentially a graph of Wikipedia topics

[23:42] so it’s called wiki data and what we did is we did a few hops along this graph and that is our seed data set and I know the diagram on the right looks like a tree it’s not a tree it’s a graph So um if it looks like a tree that’s my fault. Uh it should it should it should be a graph. Um and essentially um you can see um on the right the first topic is Nvidia and then Nvidia is connected to Jensen who is our CEO and then that

[24:13] is connected to Oregon State University because Wiki Wiki data says that that’s where he went to college and then that college is located in Benton County and Benton County is loca is actually named after a person called Thomas Hart Benton. So if you took um if you randomly sampled an entity in wiki data and then did five to eight hops along it and I’ll explain why five to eight you’ll end up um with a hop like this

[24:45] like the green you know set of entities with like arrows in between. So that is essentially our seed data set to create uh search riddles. So, one search riddle that I could create from this, and I’m going to have to read this from my speaker notes, is um which company was founded by the person who went to college where the county was named after Thomas Hart Benton. So, there’s no way the LLM knows the answer to that in the training data, right?

[25:17] Because if we give an agent the chance to cheat, it’s going to cheat. It’s going to just give us the answer. it’s not going to use the tool calls or the tools sorry like search that we want it to use right so we want to make the questions as difficult and as I guess um riddle like as possible so we can invoke the search behavior from the model so this is our seed so I I spoke about the first step which is create random walks with seed and why four to eight or five

[25:48] to eight hops sometimes it just you know if you do these hops it just goes completely off topic like It will say um I don’t know like u a person’s name and then it will say well human being well sure that is true but you know it’s not really related like basically your hops will go off topic so that’s why we want to as a heristic stay between four and eight that’s what worked well for me and then you transform these seeds into search riddles and then um you execute the search via the search tool which is

[26:20] tavly so that’s how you create a data set with a prompt and a with a search prompt and a search response, right? And then we evaluate our data and then something that’s not mentioned here is, you know, we train our models, right? So once you have the data set, you train the model with it and then you measure performance on a standardized benchmark. So let’s look at the notebook and see how we can do this. Any questions so far? Yes.

[26:57] So the reason uh it was important to do I guess it’s not difficult questions it’s questions that the model uh cannot find on the internet readily uh cannot find answers readily on the internet too. So like if you took that full blob of text that we had in the browsecom benchmark and you put that on the web you’re not going to get the answer. I mean you will get the answer because of the AI search thing with Gemini now but that’s what we’re trying to teach the model essentially. Yeah.

[27:30] Okay. So um so this is the tutorial for the end to end aentic search. So we already spoke about the way we do this and how we create the data. We already spoke about how we import all these um prompts and I wrote a function to like use Tavi with MCP. You can go and look at the code later. Um and here is where we have our seed entities.

[28:03] So this is the example I showed you. This is just one seed entity. So the way uh my seed collection algorithm works is like you can run it a million times and you get million different hops along wiki data right so those are just topics we want to ground our search riddle creation on so another topic is um we like modern art and like I’m not really an art buff but so I don’t understand most of these words but essentially this is like another seed hop that you can

[28:36] So the way to create this data set is um well you are an expert search agent that uses web search to answer questions accurately provide valid JSON with the final answer supporting URLs and a short justification and here are the tools you have available. You have one tool which is tavly search and then here’s some usage guidelines for the tool. So, like we’re like, “Okay, please please don’t use more than like, you know, don’t don’t like call the tool like a hundred times and spend, you know, $1,000 or

[29:08] something.” I guess those are like all kinds of instructions you can put in there, but essentially um uh jokes aside, what you want here is um your agent shouldn’t go crazy and try to like you know spend way too much money answering a question that’s very easy or you know something like that. So that’s why we have all these instructions and we also have an example. So this is um um something like in context learning, right? So you put an example into the

[29:40] prompt and then the model can essentially um learn from that example how to actually call the search tool. So here’s your prompt that you want to create. So here what we do is um we collected the wiki data hops. We can insert those hops into the prompt here uh which is our um you know seed entity. And then uh we ask the model to essentially come up with a question um

[30:11] using any or all of the seed entities from this hop. And then we ask the model to create a response using uh this agent solution draw which I showed earlier. So in the in the second notebook. So once you do this, you’ll end up with a preview data set. And so here’s our preview data set. So Indian Council of Medical Research is the start entity for

[30:42] the seed. And then apparently that’s located in a city called Bhuaneshwar which is a capital of some state in India. Uh so that’s our seed path. And then here is the question that the model came up with. And then this Asian solution draw is not displayed in here. But if you look at it, we can we can see what it looks like here. So it did a bunch of tool calls. It reasoned about the question and then it’s trying to find the answer on the

[31:13] internet. So that’s how you create um a search tool called data set. And I guess I’ll pause here for questions and then we can move on to the next few slides after that. Any questions? If something was Yes.

[31:51] Yeah, >> absolutely. >> Yes. So we moved the bird benchmark from 26 to 41%. So you asked the you know exact right question and we have a blog post on this as well. Um you can read about it. Um so all the data sets we’ve created with data designer um we have blog posts and you can see right here so I was involved in this work as well. Uh so yeah this talks about SQL and I can

[32:23] also share the link with you after um but essentially data designer can be used to create any kind of data set for training AI models possibly other data sets as well if you’re looking for test data sets not related to model training and so on. Um and we have a bunch of data tools that we’ve created in our team apart from data designer that I’ll talk about in the end.

[32:55] >> So the soda is 70 on bird is because it’s agentic. Our um current SQL data set is not agentic. And um also a sort on benchmarks is very much model dependent. We’re talking about moving uh Neotron Nano which is our small size um LLM or SLM. Okay. I don’t I don’t know if you can call it an SLM because it’s an MOE but it’s an LLM. And so um for that model size it’s a pretty

[33:25] respectable performance on board. Yeah. question. >> Yeah. No, this is a deterministic algorithm to create the seed data and then the uh tool calls and the agentic stuff is in creating the actual like

[33:57] performing the actual search once you have the question and creating the trajectory. We call it a trajectory. So creating the search trajectory this is deterministic. This is just something I came up with to create seed data. Yeah, you can have any kind of seed data. Maybe like you know you can come up with a better way of creating seed data than this as well. >> Oh great question. So we could do that.

[34:29] Um we have created data sets that can be used in pre-training and post- trainining. My main focus is post- training um or you know creating data sets for post- training. So this specific uh um I guess project was SFT uh in posting. Yes, >> there’s no reason apart from the fact that uh I think someone at Nvidia did a deal with Tavly to get credits. You can use Exa. Exa is another search agent uh

[35:00] provider. You can write your own search tool. Um I guess so. Yeah, there’s that as well. >> Yeah. essentially. >> So the golden responses are generated by um tail designer using the model that you choose and so um in the first notebook um yeah and sorry I think I

[35:31] think um you know I went a bit quick because it’s we just have an hour for this workshop uh previous version of this workshop was 2 hours. So the model that I used is GPDOSS120B to create the data. Um but data designer is not just a collection of LLMs that you can use to create data. It has a bunch of LLM and nonLLM models as well working together to help you create diverse data. >> Say that again. >> This is SC. Yeah. Uh what do you mean?

[36:07] Yes. >> Yeah. >> Yeah. >> Yes. >> Yes, you are distilling. But in some cases, you can even go beyond distillation. And that’s the case that I’m trying to make because we have built this uh tool that allows you to create diverse data. So for example, a completely different use case that I was working on. GPTOSS gets some percentage

[36:40] on this uh benchmark called strructal which is a way to measure how models do on JSON, markdown, XML, YAML and CSV formats. And Neotron actually distilled from GPTOSS but went beyond GPOSS’s performance. So it’s distillation but it can also be more powerful than that because of all the things we’ve built into data designer. Yes. >> How can I use data designer? >> You can use data designer for RL.

[37:10] >> So let’s say uh and by the way we’re doing this for search right now or or the team at NVIDIA is doing this for search. So instead of trying to create the golden solution like how he described it or or you know um executing the search riddles as written on my slide, you just don’t do that step and then you essentially end up with a data set full of prompts and then we have a tool called Nemo Gym which is essentially um an RL um reward function. You know I guess it’s an it’s a it’s a

[37:41] tool to basically teach your models how to do RL. But the thing is in Nemo gym you write like a a function that essentially gives you a reward and then you can use our uh any RL training framework to execute in real time with those tools and then provide a reward in RL. >> It’s a great point. We’re thinking about

[38:12] how to do this actually currently. But to build something generic is the is the challenge, right? Like we don’t want to build something specific to one use case. Yeah. Yeah. Is this reliable and accurate for ETL?

[38:42] So I haven’t tried it myself but I think it is because it it should be because um we’ve created a diverse set of data sets with data designer and I think at the start we showed about 6 and a half trillion tokens and if it’s not reliable you should come talk to us and see how we can help you. >> I can’t hear you. Sorry. Sorry, I’m not able to hear.

[39:17] >> Oh, I I don’t know about that. I I’ll come back to you at the end and we can we can chat more. Yeah, sorry about that. Okay. Um, we have about 15 more minutes. So let me move on and we can have more questions at the end to something really interesting which is evaluating your synthetic data right and that’s not an easy thing to do because without this evaluation step the synthetic data is not that useful. So when I started just to give you a

[39:48] sense of how SDG as we call it works synthetic data generation I started with 50,000 seeds and in the end I ended [clears throat] up only with 7,000 high quality endtoend SFT records and then I used that to train the model and we moved the benchmark from 0 to 30 right so that’s great but 50,000 to 7,000 that’s a lot of you know um um funneling and filter ing for high quality. So what

[40:18] like I’m trying to focus on here is that data quality is the most important thing when you’re trying to create data and um what do I mean by quality? It can be task specific but it can also be generic like diversity is one way to um you know one axis of quality I would say. Um so after that I created this function to help us um show like this is what the LLM as a judge scores for each trajectory

[40:49] um and what is like your um you know number of words in your uh question or search query and then here is your keep percentage 66% and so on. So what’s really so you can take a look at that function later but what’s really interesting is how do you actually check if the answers that the model got are correct or not. So I came across this really interesting example and the search riddle was quite simple. It said which comp which country owns US steel

[41:21] and I thought the answer is the US. And so um I you know I I guess the agent predicted US in the training data set and um my verifier said that it was correct but then I went and googled it and apparently the US sold US steel to Japan I think if I remember correctly a couple of years ago. So even my wiki data seed can become stale, right? And so that’s the real challenge is how do you actually evaluate and um uh tell if

[41:54] the data that you’ve created is um good, accurate, you know, relevant and so on. Um so I guess if you go and implement a determinist I guess like a simple matching function like how I did you’ll end up with like 24% and then you’ll be like well my data is terrible why did I do all of this but that’s not entirely true because here low percentage I expected because I don’t know how to actually create that function. So this

[42:25] is an active area of research is how do you actually evaluate this data? So I think evaluation from my perspective is a very multifaceted problem. So you can’t just take LLM as a judge and put it in there and hope that that’s going to you know give you everything. Evaluation is a problem where if you check for a 100 problems and if you see that those 100 problems do all you all you can tell from checking for a 100 problems is those 100 issues don’t exist in your data set. there could be a thousand other issues. So that’s the

[42:57] challenge is how do you actually evaluate the data? Um so we have a few different ways that we do that. Um one of them is like I mentioned earlier LLM as a judge which is generic. Uh something I did really interesting is I actually did LLM as a judge with uh and I took the judgments and I sent them to human reviewers and I have those reviewers um cross-check the judgments of the LLM and essentially give me confidence that the LLM is judging my responses correctly. So that’s one way

[43:28] to do it. And then in search you could look at real-time information. So you have to basically find a union of all these different different uh layers of evaluation that’s going to essentially give you enough confidence in your data set. So that’s it for the code. I know I blazed through this but hopefully I’ve you know um given access to all of this in my GitHub repo so you all can take a look. Um so let’s talk about a few other use cases. So like I mentioned earlier, we are the um you know part of a much

[44:00] larger team that creates Neotron, right? So um my focus or my team’s focus is essentially creating data sets or creating a framework for creating data sets and or I guess both of those. So there’s all kinds of data sets we’ve created. The first one that we spoke about today, search tool calling. Um and then we also have a data set to do multi-turn tool calls. So, I think the search one was very much single turn, right? Like we’re going from prompt to response. But what if you had multiple

[44:30] turns or what if you had multiple tools um or you know not just search tools but like you might have a I don’t know a weather tool or a coding tool and so on. Um so we’re working on multiple different projects here. Another really interesting one is structured output generation. I briefly spoke about it. There’s a benchmark called strructal which measures your performance on toml, json, yaml, csv, xml and all of these are super important because everyone wants to use um you know agents to do

[45:04] everything. Now, I’m sure you all have seen the the uh the blowtorrch meme uh on LinkedIn or something, but but uh if we’re going to be using agents as um the central piece in software applications, then they need to reliably give us um like a JSON format or a YAML format and so on. So, that’s what we were focused on there. Um we’ve also worked on SQL um that someone asked about here and uh we’ve also worked on scientific

[45:34] reasoning. Um there’s also pre-training data sets that we’ve created using data designer for stem performance and so on. Um and so I can talk about the best practices for generating data. Um I won’t go over this in detail. There’s because you can always look at the slides later but essentially diversity before volume. I think the Kim K2 paper showed something similar which is 10 strategies one epoch is better than one epoch. Sorry 10 strategies one epoch is

[46:05] better than 10 epochs one strategy. And um you always want to use the cheapest correct column type. So like using a LLM to create a sampler makes no sense, right? It’s a complete waste of resources. But using LLM to generate text data makes a lot of sense. So our samplers are written in Python of course. Um and then you generate you overproduce data and then you filter down like I mentioned earlier and then you verify what you can uh iterate on the preview. I think the best way to know if your data is any good is to

[46:36] actually look at the data. That’s the best way. Uh if you can look review a few samples and um of course what is this idea of data designer? Essentially you’re taking the data creation process and making it um something you know version controllable uh sharable like code. So essentially we’re creating code that can create data. So now you can share this code with anyone because you know we already built all this tooling for sharing code and having version control and all of these other things. So if you’re trying to do search but not

[47:08] exactly the way I did it and just slightly differently you take my code you modify it and you can create your own data set from it. Um, so something that’s super interesting. I’m getting into the extra slides which I didn’t think I would. I think I have 10 more minutes. Right. So, um, this is something that’s really interesting. We’ve created uh something called personas. So, Neotron Personas USA um it’s also inspired from this other paper which is scaling synthetic data creation

[47:39] with 1 billion personas. So, what is a persona? Right. A persona is essentially um so we’re trying to solve the problem here of how do you know if the data you’ve created actually um adheres to like demographic information or you know grounded in some real world distributions right that’s very important u so if I were to create a data set of healthcare records in San Francisco California well I want to make sure that the uh the demograph the

[48:11] actual demographic of San Francisco is reflected in my data set, right? So like the number of uh you know there’s all kinds of demographic features. Um so we created a data set called Neimatron personas uh using data designer but is also now a seed in data designer to create more data sets and um this essentially allows you to learn from user data without actually leaking any single person’s information out there.

[48:42] So now you can train AI models and you can learn from the aggregate of um you know people’s information but you don’t actually have to have like for example my healthcare records you know directly um uh being used in training an AI model. I I keep using the healthcare example because I want to find a sensitive industry which is like you know there’s HIPPA compliance there’s all kinds of regulations there right that we have to respect. So, um, so this is a persona. Um, this person is a

[49:13] 50-year-old pharmacist with a free spirit, balances her relaxed approach, blah, blah, blah. But essentially, there’s a persona, there’s a professional persona, um, first name, last name, middle name, gender, age, um, all kinds of things. And we have a million of these. You can take this, you can use it, um, however you please as seed to create more data. So yeah, I think with the personas um I will probably stop here. So we have two

[49:44] more minutes. I’ll talk about these other tools and then we’ll leave time for questions. Oh, one question. Yeah. >> Yeah. >> For >> Yeah. Yeah. Yeah. Yeah. So essent that’s essentially why we created it is to um have a way to learn from aggregate information without actually like you know having individual people. So like you could create synthetic social security numbers. Now, they’re not

[50:15] actually going to be like your social security number, right? But I think the idea is like if there’s um for example um um I don’t know what is a good example that I >> Yeah. Yeah. >> Yeah. Yeah. Exactly. So for example, we we actually created some tax data for u you know a customer and this tax data I

[50:47] realized there’s exactly uh seven people in the US who are below 18 earning more than $10 million a year on their tax return but there’s like way more people who are older and they’re earning you know x or y or z amount of money and so the tax data that we create let’s say we want to create a synthetic W2 form we want to make sure that that form is not just random values from the LLM because the LLM is not going to give you um if you have you asked LLM to tell a joke

[51:18] it’s going to tell you the same joke every time. So similarly, it’s not going to give you like numbers that are realistic, right? Like it’s always going to come back to the average of things. And so when you create data, you want to make sure that that synthetic W2 form or 1040 form or whatever is actually um adhering to real world distribution. So that’s why we created this persona data set. So we have a bunch of tools uh just two minutes and then more questions. Sorry about that. Um so we have a bunch of

[51:48] tools that we’ve created. Data designer is only the tip of the iceberg I guess. Uh but it’s our most successful tool so far because it’s our oldest tool. Uh we also have uh you know at NVIDIA we have data curation tools. So which is Nemo curator which I’m sure there are other talks about this. I I believe I saw on the schedule. Um it is very interesting. you know you have to take data uh real world data curate it modify it post-process it get it to a state where

[52:19] it’s usable to train in LLMs or you can create synthetic data so I think it depends on your use case like I’m not going to stand here and say synthetic data is the best thing ever for everything but I think there are specific use cases where you want to curate real world data or where you want to you know generate synthetic data um and so we have data uh curation tools we have data designer which is our synthetic data generation tool We have a new tool called anonymizer. And by the way, all these tools are completely open source. So everything that our org does at NVIDIA is fully open source,

[52:50] including Neotron, including all these tools. Um, so you can use it however you want. Um, so this data tool is called Nemo Anonymizer. And the goal here is can we actually anonymize data? So, I don’t know about you guys, but I I don’t know if I should be saying this when the talk is recorded, but I’ve been putting all kinds of things into my agents like you know, I accidentally put my API keys in there once or like you know some other sensitive information, right? All this log data for like all your agents that you’re using. You need some way to

[53:22] anonymize it and before it’s usable, right? So, that’s what anonymizer does. So, that’s just an example, but there’s obviously many other ways to use anonymizer. And then we have Nemo safe synthesizer which is allowing us to generate safe synthetic versions of sensitive data sets um as well. So yeah come talk to me if you have any questions. Um here’s my LinkedIn if you want to stay in touch. Uh again you can use data designer. I would love for you guys to try out the notebooks. I’m so sorry that we had to we had only one

[53:53] hour so I had to just like blaze through all the code but you can try out the notebooks. We also have the blogs if you’re interested in text to SQL or some some other use case. So um this is this is showing us how to use the personas. Um I think there’s a blog somewhere on how we created the personas data set for the US. We took the census information and we used a PGM, a probabilistic graphical model to essentially um create um like a connection between all

[54:24] basically take that demographic information, process it and then try to uh uh create a data set from it uh essentially. So that’s what we did. Um and so every country pro uh publishes this uh demographic information. So, it’s not really like um I’m looking at other slides now. We we’ve done a bunch of these workshops recently. Um but yeah, there’s all kinds of personas if you’re not if you’re trying to build for something outside the US, if you’re building something for Japan, India,

[54:56] Singapore, Brazil, I’m sure we have more now. So, we we have all kinds of personas data sets. So, um it’s giving us um um a way to uh create customized AI for whichever country you’re interested in.