Um Chip de US$ 10 Está Rodando um Modelo de IA de 45 Milhões de Parâmetros (Needle 2)
BBetter Stack
컴퓨터/소프트웨어가전제품/카메라
스크립트
00:00:00Este é o Needle 2. É um modelo LLM Argentic de 14 megabytes. Deixe-me repetir caso você tenha perdido.
00:00:07Ele tem 14 megabytes e 45 milhões de parâmetros. Basicamente, este LLM é tão minúsculo que pode rodar
00:00:14em qualquer dispositivo de ponta, até mesmo em um ESP32 S3 básico. Foi desenvolvido pela Cactus Compute, que agora
00:00:21tornou este modelo de código aberto sob a licença Apache 2.0. Eu mesmo testei e ele realmente
00:00:28funciona. Então, neste vídeo, vamos dar uma olhada no Needle 2, ver como ele funciona e depois vamos
00:00:34executar alguns testes divertidos de inferência em um microcontrolador real para ver seu desempenho. Vai ser
00:00:40muito divertido, então vamos nessa. Há algumas semanas, fiz outro vídeo onde
00:00:49implantei um modelo de 29 milhões de parâmetros em um ESP32 S3, mas aquilo era mais um truque do que
00:00:56um LLM real, porque era tão simples que foi treinado com histórias infantis, sendo tudo o que
00:01:03conseguia gerar. No entanto, este LLM é um modelo real que entende seu contexto, mas antes que você
00:01:10se empolgue muito, há uma ressalva. Este não será o seu chatbot LLM comum. Em vez disso,
00:01:16este modelo foi feito especificamente para funcionar como um despachante de chamadas de ferramentas. A forma como funciona é que você
00:01:22predefine um conjunto de chamadas de ferramentas, que pode ser qualquer coisa, desde girar um servo até qualquer outra operação mecânica
00:01:29ou executável que você possa imaginar. E então você pode dar comandos ao modelo em linguagem natural
00:01:35e ele será inteligente o suficiente para entender, com base no seu comando, qual chamada de ferramenta executar. E essa é
00:01:40basicamente a essência. Agora, isso é muito legal porque em uma placa como o Raspberry Pi 5, ele pode alcançar
00:01:47até 500 tokens por segundo, podendo ser um driver muito eficiente para, digamos, projetos de robótica. Mas em dispositivos maiores e mais
00:01:55performáticos, o Needle 2 pode realmente operar como um chatbot? Bem, a resposta é não, porque não é realmente uma questão de velocidade,
00:02:04já que o Needle não foi treinado em conhecimento geral ou conversação. Todos os seus dados de treinamento são
00:02:10ações de dispositivos, como comandos de casas inteligentes, ações móveis, ações de vestíveis, esse tipo de coisa. Portanto,
00:02:17mesmo em um dispositivo potente, se você perguntar qual é a capital da França, ele não conseguirá responder. Ele será
00:02:23muito bom em escolher a função certa e preencher os argumentos corretos, mas só isso. E essa é a
00:02:28compensação que tiveram de fazer para torná-lo tão pequeno. Mas vamos falar sobre como eles conseguiram
00:02:3345 milhões de parâmetros que realmente competem com modelos cinco ou sete vezes maiores. Porque
00:02:40normalmente, quando você encolhe um modelo tanto assim, ele simplesmente fica burro. Mas a Cactus não queria isso, então reconstruiu
00:02:47algumas partes da arquitetura do zero. A grande mudança é algo que eles chamam de engram.
00:02:53Normalmente, todo o conhecimento do modelo vive em seus pesos, e cada um desses pesos precisa passar
00:02:59por uma multiplicação de matrizes para cada token, o que é custoso. Mas a Cactus moveu uma parte desse
00:03:06conhecimento para tabelas de consulta hash. Assim, o modelo pode simplesmente buscar uma linha de memória em vez de
00:03:12fazer contas com ela. Eles também trocaram as camadas MLP normais por algo construído em uma transformada de Hadamard,
00:03:19que é uma operação matemática fixa com quase nenhum parâmetro aprendível associado. Normalmente, essa
00:03:25etapa de mistura é feita por matrizes enormes que o modelo precisa aprender do zero, o que consome
00:03:32quase todo o orçamento de parâmetros do modelo pequeno. Mas uma transformada de Hadamard pula todo esse aprendizado porque é uma
00:03:38fórmula fixa que faz toda a mistura de graça. Assim, a Cactus obtém esse benefício sem gastar nenhum dos
00:03:44seus 45 milhões de parâmetros com isso. E depois há a quantização, que honestamente é a parte que torna
00:03:50tudo isso implantável. O Needle 2 roda com dois bits por peso e foi realmente treinado em dois
00:03:57bits, e não quantizado depois do fato. O problema é que muitos modelos pequenos desmoronam quando você
00:04:03os comprime pós-treinamento, porque nunca foram construídos para sobreviver a essa compressão. Mas o Needle foi
00:04:09treinado contra sua própria compressão desde o início, então sua versão padrão já está otimizada. Será que nada disso
00:04:16se sustenta? Bem, nos benchmarks da própria Cactus, o Needle 2 está genuinamente competindo de igual para igual com um modelo
00:04:23cinco vezes maior. E em alguns dos testes de chamada de ferramentas mais difíceis, ele realmente o supera,
00:04:30apesar de rodar em precisão de dois bits contra a precisão total de 16 bits do LFM 2.5. E no benchmark de ações móveis,
00:04:38o Needle escolhe o nome de função correto 98,3% das vezes, o que é maior do que todos os
00:04:45modelos com os quais é comparado. Então não é perfeito em tudo, mas no trabalho para o qual foi construído,
00:04:51ele é muito, muito bom. Então vamos testá-lo para ver como funciona na prática. Para isso, construí
00:04:57meu próprio motor de inferência personalizado que roda exatamente nesta placa, um ESP32-S3. Deixarei um link para o
00:05:05repositório do GitHub na descrição abaixo, caso queira testar você mesmo. Aqui no terminal,
00:05:10podemos ver que temos um pequeno aplicativo TUI. Agora posso simplesmente enviar uma solicitação em linguagem natural
00:05:17e ver como ele funciona. Primeiro, vamos dar um comando simples, digamos, piscar uma luz vermelha
00:05:25por três segundos. Assim que eu executo isso, você pode ver que ele está mapeando o modelo direto do
00:05:32chip de flash e configurando sua memória de trabalho. E uma vez feito isso, ele passa pela fase de raciocínio.
00:05:39Podemos ver que ele identificou que a cor é vermelha, o modo é piscar, e também identificou
00:05:48que precisamos fazer isso por três segundos. Então, terminada a fase de raciocínio,
00:05:53ele prosseguirá para escrever a chamada de ferramenta real. Isso leva um momento porque é lento
00:06:00em um ESP32. Mas, mesmo assim, isso é muito legal. E vejam só, agora temos uma luz vermelha piscando por
00:06:08três segundos. Também podemos ver que há uma pontuação de confiança que nos diz o quão confiante ele estava
00:06:15sobre esta chamada de ferramenta específica. Isso é embutido no Needle 2. É bem legal porque, com base
00:06:21nessa pontuação de confiança, podemos programar o chip para diferentes cenários. Como viram, isso levou cerca de
00:06:2739 segundos para concluir, o que pode parecer lento. Mas lembrem-se de que este é um modelo de 45 milhões de parâmetros
00:06:35rodando em um microcontrolador de 8 megabytes sem GPU. Agora, vamos ver o que acontece se eu lhe perguntar
00:06:41algo totalmente fora de contexto. Deixe-me perguntar: qual é a capital da França?
00:06:48Como podem ver, ele está lendo nossa solicitação novamente. Agora, na fase de raciocínio,
00:06:54ele diz que não há nenhuma ferramenta disponível para fatos sobre países. Portanto, a chamada de ferramenta será vazia. E
00:07:00vejam só, ele estava muito confiante de que não há ferramentas que possam ser executadas com confiança com base
00:07:07neste comando. Então, eu diria que ainda é uma resposta muito inteligente. Desta vez, vamos pedir para ele
00:07:14acender uma luz roxa por sete segundos. Vamos ver se ele entende. Ele identifica que
00:07:21a cor é roxa. E ele entende que acender significa que o modo deve ser contínuo e não piscando.
00:07:29Ele também entende que deve ser por sete segundos. Então ele prossegue para escrever a chamada de ferramenta
00:07:36real. E uma vez feito isso, vejam só. Ele está acendendo uma luz roxa. Deve durar sete segundos.
00:07:46Aí está. Quão legal é isso? Curiosamente, desta vez ele não estava tão confiante.
00:07:52A pontuação de confiança foi de 0,57, mas ele ainda conseguiu raciocinar sobre a tarefa adequadamente e
00:08:00executar exatamente o que pedimos. Há mais uma coisa que quero mostrar. Construí este projeto
00:08:06especificamente para ser reutilizável. Então você pode trocar os comandos de luz piscando por outra coisa. Como,
00:08:12por exemplo, se você tem um projeto de robótica que usa servos, você pode basicamente substituir esses
00:08:17comandos pelos seus próprios. Documentei um processo de três etapas sobre como fazer isso no arquivo readme
00:08:24do projeto. Então, se quiser reutilizá-lo para seus próprios projetos, basta seguir essas três etapas e você
00:08:29estará pronto. Vamos tentar outra variação. Exibir uma luz amarela por cinco segundos. E pronto.
00:08:36Ele está piscando uma luz amarela por cinco segundos. E esta teve a menor pontuação de confiança de todas,
00:08:420,46. Acho interessante que ele tenha achado que exibir significava piscar a luz e não exibi-la
00:08:50por um período prolongado. Pois é. Isso mostra que o modelo não é perfeito. Ele ainda pode
00:08:56mal-entender suas intenções, mas, mesmo assim, conseguimos uma luz amarela por cinco segundos. E
00:09:03a maioria dessas chamadas de ferramentas leva cerca de 40 segundos para ser processada, com uma média de 1,86 tokens por segundo. Portanto,
00:09:10esse é um resultado muito legal na minha opinião. Então é isso aí, pessoal. Esse é o Needle 2 em resumo,
00:09:16um modelo de 45 milhões de parâmetros, 14 megabytes rodando totalmente offline em um chip que custa cerca de 10 dólares.
00:09:24E pessoal, se vocês gostam desse tipo de análise técnica, por favor, me avisem esmagando aquele
00:09:28botão de like abaixo do vídeo. E também não se esqueçam de se inscrever no nosso canal.
00:09:33Aqui foi o Andrus da BetterStack e vejo vocês nos próximos vídeos.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기