Pular para o conteúdo

Microsoft FrogNano 4B para quem tem pouca GPU: engenheiro de software de IA econômico

Ver no idioma original →

Autoria: Fahd Mirza · 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: Microsoft FrogNano 4B for GPU Poor: Budget AI Software Engineer · Canal: Fahd Mirza · 10:57 · Assistir no YouTube

Tópicos: Agentes de IA, Avaliação e benchmarks de IA, Engenharia de software com IA, Modelos locais e open source

O vídeo apresenta o FrogNano 4B, um modelo de código da Microsoft treinado com reinforcement learning em tarefas sintéticas de engenharia de software e projetado para rodar em uma única GPU. O apresentador testa o modelo com o Hermes agent em três tarefas: corrigir um bug em um dashboard, criar uma página de kebab em HTML e desenvolver um rastreador de despesas em Python. O modelo corrige o bug no backend e constrói um aplicativo Python funcional, mas não consegue fazer a página HTML funcionar no navegador. A demonstração indica que o FrogNano pode ser útil para tarefas de programação em Python, embora seu desempenho dependa também do harness usado.

  • O FrogNano 4B é baseado no Qwen 3.5 4B e foi treinado com reinforcement learning em cerca de 1.500 tarefas sintéticas de engenharia de software.
  • O modelo foi projetado para rodar em uma única GPU, e reduzir o context length pode diminuir o uso de VRAM.
  • O harness Leaf oferece cinco ferramentas: Read, Write, Edit, Glob e Bash.
  • No teste do dashboard de balsas, o modelo corrigiu uma consulta SQL que contava reservas em vez de passageiros.
  • O raciocínio do modelo identificou o bug, mas também foi lento, desorganizado e incluiu tentativas malsucedidas.
  • O modelo não conseguiu produzir uma página de kebab funcional em HTML e JavaScript.
  • O aplicativo de despesas em Python passou nos cinco testes unitários escritos pelo próprio modelo.
  • O apresentador conclui que o modelo é especialmente promissor para tarefas em Python, mas não é um modelo que supera todos os modelos maiores.
Início Capítulo Resumo
00:01 Apresentação do FrogNano 4B O apresentador descreve o modelo, seu treinamento, as ferramentas do harness Leaf e a configuração usada para executá-lo.
03:39 Treinamento e correção do bug no dashboard O vídeo explica o treinamento iterativo do modelo e mostra como ele corrige o cálculo de ocupação das balsas.
05:44 Teste de HTML e comparação com outros modelos O apresentador comenta o desempenho do FrogNano em benchmarks, mas o teste de criação de uma página HTML não funciona no navegador.
07:50 Aplicativo de despesas em Python O modelo cria um rastreador de despesas com SQLite e passa nos testes de inclusão e consulta de gastos.

Um modelo compacto de 4 bilhões de parâmetros para código, capaz de rodar em uma única GPU. — 00:01

Ele identificou o bug exato logo no início e o corrigiu, mas depois divagou bastante. — 04:43

HTML e JavaScript não parecem ser o forte dele. — 07:19

Se o seu caso de uso é Python, o modelo de 4 bilhões de parâmetros se saiu muito bem. — 10:26

  • FrogNano 4B (modelo): Modelo compacto de código da Microsoft, com 4 bilhões de parâmetros, apresentado como capaz de rodar em uma única GPU.
  • Qwen3.5 4B (modelo): Modelo-base sobre o qual o FrogNano 4B foi construído.
  • Leaf (ferramenta): Harness leve associado ao FrogNano, com ferramentas para ler, escrever, editar, localizar arquivos e executar comandos.
  • Hermes (ferramenta): Agent usado pelo apresentador para executar os testes com o modelo.
  • SGLang (ferramenta): Ferramenta usada para iniciar e executar o modelo durante a demonstração.
  • reinforcement learning (conceito): Método de treinamento usado no FrogNano com tarefas sintéticas de engenharia de software.
  • Nusantara Ferry Lines (ferramenta): Aplicativo de dashboard de ocupação de balsas usado no teste de correção de bug.
  • Microsoft (empresa): Empresa que lançou o modelo FrogNano apresentado no vídeo.

00:01 A Microsoft lançou um modelo para quem tem pouca GPU: FrogNano, um agent de programação compacto de 4 bilhões de parâmetros, pequeno o bastante para rodar em uma única GPU. Ele é baseado no Qwen 3.5 de 4 bilhões de parâmetros e, em vez de copiar respostas de um modelo maior, foi treinado exclusivamente com aprendizado por reforço em cerca de 1.500 tarefas sintéticas de engenharia de software. Ele funciona por meio de um harness leve chamado

00:32 Leaf. Isso lhe dá apenas cinco ferramentas: read, write, edit, glob e bash. Só isso. Esse treinamento deu a ele um grande salto em relação ao próprio modelo base. Então, vamos ver se um modelo minúsculo consegue mesmo encontrar e corrigir um bug em um aplicativo real. Já comecei a executá-lo com o SGLang, como vocês podem ver aqui, com este comando. E esta é a quantidade de VRAM que ele está consumindo por causa deste cache KV. Basta reduzir o tamanho da context window e ele

01:02 ficará pequeno o bastante para rodar em uma GPU comum. Também habilitei tool calling porque quero executá-lo com este agent Hermes. Não estou usando o harness Leaf deles, porque ele é mais voltado para Kubernetes, e eu só queria garantir que conseguíssemos executá-lo em uma GPU comum para ver se funciona ou não. Se você está procurando alugar uma GPU por um preço muito bom, pode encontrar o link para Master Compute na descrição do vídeo. Recentemente, também comecei esta newsletter gratuita

01:33 semanal sobre IA, na qual você pode se inscrever em fazmaha.substack.com. E, se quiser ajudar o canal, torne-se membro. Agora, voltando a este modelo, primeiro vou testar uma correção de bug com ele. Na tela, vocês podem ver um aplicativo em funcionamento. Este é o Nusantara Ferry Lines, um painel de ocupação ao vivo para balsas de passageiros entre as ilhas da Indonésia. Cada balsa tem um número fixo de assentos, e

02:05 uma reserva pode incluir uma família inteira ou um grupo de excursão. Então, cada reserva tem uma contagem de passageiros. O painel mostra um indicador, uma barra de capacidade e os assentos restantes. Isso não é, de forma alguma, um aplicativo de demonstração. Como podem ver, já o iniciei com o Docker Compose, e a pilha tem três serviços: um banco de dados PostgreSQL 16, um backend FastAPI, um frontend Nginx, um cache Redis e algumas outras coisas

02:37 em execução. Se vocês olharem para este aplicativo agora, especialmente para os números, todas as balsas parecem quase vazias. Por exemplo, a KMP JetRA 1 aparece com 5% de ocupação e 114 assentos disponíveis. E este é o bug: o backend conta as linhas de reservas em vez de somar os passageiros. Seis reservas de famílias e grupos são contadas como seis pessoas. Quando o número real é 92 passageiros, com apenas 28 assentos restantes,

03:08 o impacto é sério. Uma balsa quase lotada parece quase vazia. Assim, funcionários e clientes confiam em assentos que não existem, o que leva à venda de passagens em excesso: uma falha real de segurança e operação. Então, é aqui que vou passar este prompt, ou objetivo, para o agent Hermes com este modelo, para que encontre e corrija todos os bugs. Vamos executá-lo. Enquanto isso, deixe-me mostrar algumas coisas

03:39 mais interessantes sobre este modelo, especialmente este diagrama. Quando vi o diagrama, ele me pareceu o de um estudante elaborando as próprias provas de treino. O modelo cria tarefas de programação e descarta as que são difíceis demais, que nunca consegue resolver, e as fáceis demais, que sempre resolve; mantém apenas aquelas em que às vezes tem sucesso. O modelo treina com elas usando aprendizado por reforço, melhora e, então, cria tarefas mais difíceis para seu novo nível. Foi assim

04:10 que ele foi treinado. Isso se repete cinco vezes. Assim, ele está sempre praticando bem no limite do que consegue fazer. E a folha verde indica onde o harness Leaf é usado. Talvez eu consiga um cluster Kubernetes mais adiante e mostrar como o Leaf funciona. Mas acho que a Microsoft precisa mesmo simplificar um pouco isso. O modelo já respondeu. E, como sempre, deixe-me mostrar rapidamente o raciocínio, porque essas coisas importam. Eu diria que importam até mais do que o próprio resultado. Olhem só.

04:43 O raciocínio é muito impressionante e confuso ao mesmo tempo, além de bem lento. Ele identificou o bug exato logo no começo e o corrigiu seguindo uma sequência correta, mas depois se desviou bastante. Derrubou o banco de dados, reconstruiu-o várias vezes, atribuiu a causa ao motivo errado e executou alguns scripts quebrados. Isso faz sentido, porque ele foi treinado com o Leaf e este é um harness diferente, e o harness importa muito para esses modelos. No fim, como podem ver, conseguiu chegar lá sozinho e informou os números corretos para cada

05:14 viagem. Então, não vamos acreditar só no que ele diz: vamos conferir o painel nós mesmos. Vou até aqui e pressionar Ctrl+F5 para atualizar completamente. E o modelo acertou em cheio. O painel agora mostra os números reais. A JetRA 1 passou de 5% de ocupação, com 114 assentos disponíveis, para 76,7% de ocupação, com 28 assentos disponíveis. Então, o modelo corrigiu a consulta SQL de fato. Certo. Agora vamos fazer outro teste.

05:44 Vamos ver se o modelo consegue preparar um döner kebab. É um döner kebab com cobertura completa, em um único arquivo HTML independente, usando um elemento a gás. Vamos ver o que ele produz. Enquanto isso, o modelo trabalha. Observem este diagrama. Cada ponto representa um modelo; o tamanho aparece na parte inferior e a pontuação, na lateral. Quanto mais à esquerda e mais alto estiver um ponto, mais impressionante ele é. O FrogNano, a estrela verde, está bem à esquerda. É um dos menores modelos do gráfico, mas claramente

06:16 supera seu próprio modelo base e o irmão maior, o Qwen 9 bilhões. No principal benchmark de programação, ele fica lado a lado com um modelo cerca de sete vezes maior. Alguns modelos especializados em programação, com cerca de 30 bilhões de parâmetros, ainda ficaram um pouco à frente. E os grandes modelos de fronteira na zona vermelha estão bem acima dele. Então, não é um matador de gigantes, mas, para algo pequeno o bastante para rodar em uma única GPU comum, tem um desempenho muito acima do esperado para seu tamanho. E acabamos de ver isso em um exemplo. Vamos voltar e esperar que ele produza o resultado e

06:48 depois vamos conferir. Certo, sabem de uma coisa? Ele já criou isto. Deixem-me abrir rapidamente. Vou abrir aqui na frente de vocês. Certo. Não aparece nada. Vou voltar e dizer a ele que, quando acesso este arquivo… Desculpem. Ele não faz nada

07:19 no navegador. Sim, deixem os erros de digitação como estão. Ele identificou alguns erros. Vamos esperar que os corrija. Certo, ele diz que corrigiu o bug. Vou voltar e recarregar com Ctrl+F5. Nada acontece. Olha, acho que este é um modelo de programação especializado em Python. HTML e JavaScript não parecem ser o forte dele. Então, vamos fazer outro teste. Vou passar outro prompt

07:50 com o objetivo de criar um aplicativo Python que seja simplesmente um gerenciador de despesas com um backend SQLite. Vamos ver se ele consegue criar este aplicativo simples em Python. Não é tão simples assim, mas ainda é um bom resultado para um modelo de 4 bilhões de parâmetros. Certo, o modelo parece bem empolgado com o teste em Python. Ele construiu a ferramenta, e seus cinco testes unitários também passaram. Ele mesmo os escreveu. A demonstração que ele próprio criou também montou o banco de dados SQLite

08:21 e preencheu alguns valores de exemplo; depois, forneceu os comandos para testar. Então, vou sair do Hermes e vamos conferir isso no terminal. Certo. Para testar, vamos fazer isso de maneira metódica. Primeiro, vou limpar quaisquer dados que tenham sobrado do teste anterior do modelo. Já limpei o banco de dados. Agora, vamos inicializar o banco de dados usando a própria opção de inicialização do modelo. E como sei que essa opção de inicialização existe? Deixem-me mostrar algo muito, muito interessante. O modelo, na verdade, criou sua própria ferramenta CLI. Se você executar o comando de ajuda, estes são todos os comandos que o modelo diz ter gerado, e é por isso que vou testá-los. Primeiro, vamos inicializar. Ele está inserindo alguns dados iniciais no banco de dados e coisas assim, colocando tudo no estado inicial.

08:53 Então, está inserindo alguns dados iniciais no banco de dados e tudo mais, colocando tudo no estado inicial.

09:24 Então, dá para ver que o banco de dados foi inicializado. Agora, vamos adicionar a primeira despesa com alimentação, de 150, usando a flag subm models build. Muito bom. Vamos adicionar outra despesa com alimentação, de cerca de 7.550. E ainda estou usando a flag que ele me deu. Essa também foi adicionada. Agora, vamos adicionar a despesa com transporte da mesma forma. A despesa com transporte foi adicionada. Vamos adicionar

09:54 outra despesa com transporte. Essa também foi adicionada. Agora, vamos ver se ele consegue listar todos esses itens que adicionei. Aí está. Todos os quatro itens foram listados diretamente do banco de dados. Agora, vamos ver se ele consegue calcular o total, porque esse é um dos recursos que pedi para ele criar. Aí está. Ele me informou o total das despesas com alimentação e o total das despesas com transporte.

10:26 Então, olha, para Python, se esse for o seu caso de uso, um modelo com 4 bilhões de parâmetros dá um banho nos outros. Ele também passou no primeiro teste com louvor, porque o backend era em Python. E eles também têm uma versão quantizada em GGUF, caso você queira aproveitar ainda mais o armazenamento. Me diga o que acha do FrogNano. Agora você já conhece o caso de uso. De novo, se quiser ajudar o

10:57 canal, torne-se membro.

Transcrição original

[00:01] Microsoft has released a model for GPU poor frog nano a compact 4 billion parameter coding agent small model to run on a single GPU. It is built on quen 3.5 4 billion and instead of copying answers from a bigger model it was trained purely with reinforcement learning on around 1,500 synthetic software engineering tasks. It works through a lightweight harness called as

[00:32] leaf. That gives it just five tools. Read, write, edit, glob, and bash. That’s it. That training gave it a big jump over its own base model. So, let’s see if a tiny model can really find and fix a bug in a real app. I already have started running it with SG lang as you can see here with this command. And this is how much VRAM it is consuming due to this KV cache here. You just need to you know reduce this context length and it

[01:02] will be small enough to run on a commodity GPU. I have also enabled tool call because I want it to run with this Hermes agent. Now, I’m not using their leaf harness because that is more geared towards Kubernetes and I just wanted to make sure that we run it on commodity GPU to see if it works or not. If you’re looking to rent a GPU on very good price, you can find the link to master compute in videos description. Recently, I also have started this free

[01:33] weekly AI newsletter which you can subscribe at fazmaha.substack.com. And if you want to help out the channel, please become a member. Now, coming back to this model, first up, I’m going to check out a bug fix for this model. So, on your screen, you can see a live app. This is Nusantara Ferry Lines, a live occupancy dashboard for passenger fairies between Indonesian islands. Each ferry has a fixed number of seats and

[02:05] one booking can carry a whole family or tour group. So every booking has a passenger count. The dashboard shows a gauge, a capacity bar and the seats remaining. This is not a toy app by any stretch of imagination. As you can see, I already have started it with docker compose and the stack is with three services. A postgress SQL 16 database, a fast API back end, enginex front end, Android is cache and few other things

[02:37] running. If you look at this app at the moment, especially the numbers, every ferry looks almost empty. For example, KMP JetRA 1 says 5% full with 114 seats available. And this is the park. The back end counts booking rows instead of summing the passengers. Six booking of families and groups are counted as six people. When the real figure is 92 passengers with only 28 seats left,

[03:08] impact is serious. Nearly full ferry looks almost empty. So staff and customers trust seats that do not exist that leads to overbooking which is a real safety and operation failure. So this is where I’m going to go and give this prompt or goal to Hermes agent with this model to go find and fix every bug. So let’s run this. While this runs, let me show you a bit

[03:39] more uh interesting things around this model, especially this diagram. So when I saw this diagram, it you know it just feels like a student who is writing its own his own practice exams. The model is creating coding tasks, throws out the ones that are too hard, it never solves them and too easy, it always solves them and keeps only the ones where it sometimes wins. The model trains on those with reinforcement learning, gets better, then writes harder task for its new level. So this

[04:10] is how it got trained. This repeats five times. So it is always practicing right at the edge of what it can do. And the green leaf marks where the leaf harness is used. I might get um a Kubernetes cluster down the road and show you how leaf work. But I think Microsoft really needs to make it bit simpler. model has come back with the response. And as always the case, let me quickly show you the reasoning because these things matter. I would say even more than the result itself. So look at this.

[04:43] The reasoning is very impressive and messy at the same time and quite slow. It spotted the exact bug early and fixed it with a right chain, but then it wandered a lot. It tore the database down, rebuilt it several times, blamed the wrong cause and fired off a few broken scripts which makes sense because it was trained in leaf and this is a different harness and harness matters a lot for these models. In the end, as you can see, it got there on its own and reported correct numbers for every

[05:14] selling. So, let’s not take its word for it and check the dashboard ourselves. So I’m just going to go here and press Ctrl F5 to hard reset. And model has thrown it out of the park. The dashboard now shows real numbers. JetRA one went from 5% full with 114 seats to 76.7% full with 28 seats. So the model fixed the actual SQL query. Okay. So now let’s do another test.

[05:44] Let’s see now if model can cook a donor kebab. So, it’s a full coverage in a single self-contained HTML file, a donor kebab on a gas powered element. Let’s see what it produces. Meanwhile, the model works. Have a look at this diagram. Each dot is a model with size along the bottom and score up the side. So, the further left and higher a dot sits, the more impressive it is. Frog Nano, the green star, is way over on the left. One of the smallest models on the chart, yet it clearly

[06:16] beats its own base model. and the bigger coin 9 billion sibling. On the main coding benchmark, it sits right alongside a model about seven times its size. A few coding specialist models around 30 billion still edged out. And the big frontier models in the red zone are well above it. So, it’s not a giant killer, but for something small enough to run on one GPU, commodity one, it punches far above its weight. And we just saw it in one example. Let’s go back and wait for this to produce and

[06:48] then we will check it out. Okay, you know what? It already has created this thing. So, let me quickly open it. I’ll just open it in front of you. Okay. So, it doesn’t show me anything. I’ll just go back and tell it when I access this file. Sorry. It doesn’t do anything

[07:19] in browser. Yeah, let the typos be there. It has identified few errors. Let’s wait for it to fix. Okay, so it says that it has fixed the bug. I’ll just go back and reload it with control F5. Nothing happens. So look, um I think this is Python rich coding model. So HTML JavaScript doesn’t seem to be its forte. So let’s do another test then. So I’m going to give it another prompt

[07:50] with a goal to build a Python application which is just a expense tracker with a backend SQLite. And let’s see if it is able to create this simple app in Python. It’s not as simple but still not a bad one for a 4 billion parameter model. Okay, so the model seems quite excited about Python uh test. It has built the tool and its five unit tests also passed. It wrote them by itself. Its own demo uh actually built the SQLite

[08:21] database, filled in some of the dummy values and then provided us the commands to test. So let me get out of this Hermes and then we will check it out in the terminal. Okay. So for the testing, let’s do it in a methodical way. First up, I’m going to clean up any leftover data from the models earlier test. So I have cleaned up that database. Let’s now initialize the database using model’s own init option. And how do I um know that init

[08:53] option is there? Let me show you something very very interesting. Model has actually built its own CLI tool. So if you do the help these are all the commands which model says that it has spilled and that is why I’m going to test them out and first up let’s initialize. So it is uh putting in some seed data into the database and all that stuff putting everything at the starting point.

[09:24] So you can see that the database has been initialized. Let’s now add the first food expense of 150 using the flag subm models build. So that is pretty good. Let’s do another second uh food expense of around 7550. And I’m still using the flag it gave me. That is also done. Now let’s do the transport expense in a same fashion. Transport expense is done. Let’s do

[09:54] another transport expense. That is also done. And now let’s see if it is able to list all these items which I have added. There you go. All four items have been listed directly from the database. And now let’s see if it is able to do the total cuz that is one feature I asked it to build. There you go. So it has given me that okay this is the total for food and this is the total for transport.

[10:26] So look as far as Python is concerned and if that is your use case 4 billion parameter model throws it out of the park and the first test it also passed with flying colors because the back end was Python and they also have a you know quiz version in GGF if you want to even squeeze more juice out of the storage. Let me know what do you think about prog nano and now you know the use case. Again, if you want to help out the

[10:57] channel, please become a member.