24 pontos por GN⁺ 2025-05-14 | 2 comentários | Compartilhar no WhatsApp
  • Como criar você mesmo um assistente de voz pessoal rodando no dispositivo sem depender de APIs de LLM nem da nuvem
  • Esse assistente entende linguagem natural, executa chamadas de funções pessoais e funciona apenas localmente, o que permite garantia total de privacidade
  • Para isso, o modelo LLaMA 3.1 é ajustado finamente com LoRA, o Whisper é usado para converter voz em texto, e então isso é interpretado como comandos e executado diretamente no dispositivo
  • O projeto é composto por geração de dataset → fine-tuning → conexão da interface de voz → testes e deploy, e é oferecido como uma minissérie gratuita de 5 partes que cobre cada etapa
  • O texto alerta contra o equívoco de que “rodar on-device = ser simples” e enfatiza que mesmo no ambiente local, mentalidade de MLOps e controle rigoroso de qualidade são essenciais

Por que criar um assistente de voz local agora?

  • Conversar com o ChatGPT é útil, mas será que até comandos simples precisam ser enviados para a nuvem?
  • Se o modelo estiver instalado diretamente no seu dispositivo, é possível garantir velocidade, privacidade e controle ao mesmo tempo
  • Isso é especialmente útil em ambientes sensíveis como saúde, jurídico e ferramentas internas

Visão geral da arquitetura completa

Componentes do projeto

  1. Reconhecimento de voz (Whisper) → conversão para texto
  2. LLM (LLaMA 3.1) → interpretação de comandos
  3. Executor de funções → execução de funções reais como lock_screen()

Parte 1: Arquitetura e mentalidade de MLOps

Por que MLOps também é necessário no ambiente local

  • Existem problemas como model drift, mudanças de prompt, confiabilidade do dataset e falta de logs para depuração
  • Pensar que “só o local já basta” é perigoso, e uma abordagem sistemática é necessária

Desenvolvimento online vs execução offline

  • O desenvolvimento (fine-tuning, geração de dados) é feito na nuvem, enquanto a execução acontece localmente
  • Separar esse processo com clareza e gerenciá-lo de forma sistemática é o núcleo do MLOps

Geração de dataset (Dataset Generation Flow)

  • Não se trata apenas de coletar prompts, mas de projetar padrões estruturados de chamadas de função e a estrutura de solicitações conversacionais
  • Geração de datasets de alta qualidade que cubram diferentes formas de expressão, intenções e casos de falha

Pontos-chave

  • lock_screen() → inclui várias expressões em linguagem natural como “bloqueia a tela”
  • Um mecanismo de validação automática verifica se a saída está no formato pretendido

Fine-tuning (Instruction Tuning for Function Calling)

  • Ajuste fino de um modelo pequeno (via SFT) para mapeamento preciso de comandos
  • Uso de ferramentas de produção como Unsloth, W&B e extração em formato GGUF

Objetivos

  • Converter o LLaMA 3.1 8B em um modelo de 4 bits capaz de rodar localmente
  • Buscar leveza a ponto de até o Raspberry Pi ser um alvo possível

Conexão do modelo e execução real

  • O Whisper converte a entrada de voz em texto
  • O LLM ajustado interpreta os comandos
  • Conexão com um executor local de funções de API (lock_screen(), get_battery_status() etc.)

Resultado

  • Possibilidade de operar um assistente de voz em tempo real
  • Sem necessidade de rede, sem vazamento de dados pessoais e com controle total do usuário

Gestão de riscos na etapa offline

  • É necessário testar em vários dispositivos e sistemas operacionais
  • É essencial construir um sistema de logging (com envio manual no formato opt-in)
  • Antes do deploy oficial, testes de estresse e feedback de usuários ajudam a detectar problemas cedo

Próximos passos

  • Na próxima aula, haverá uma prática de geração de dataset para function calling
  • Será construído de forma estruturada um dataset dedicado para aprender o mapeamento de comandos em linguagem natural → chamadas de API
  • Scraping proibido, usando apenas simulações baseadas em prompt e dados com validação automática

Conclusão

  • Sistemas de IA locais podem ser simples, mas estabilidade e qualidade exigem um nível ainda maior de gestão
  • Como não dependem de logs em nuvem nem de hotfixes, exigem mais confiabilidade e responsabilidade
  • Para isso, é preciso aplicar mentalidade de MLOps e design estrutural desde o início

> “Chegou a era de criar assistentes de IA de verdade, centrados em privacidade e local-first”
> No próximo episódio começa a prática real de geração de dataset para mapeamento entre comandos e funções.

2 comentários

 
asheswook 2025-05-15

A 3.1 é difícil de usar para quem não fala inglês, e com a 3.3 ou a 4 talvez até dê para usar coreano, mas se for para rodar on-device, considerando que para idiomas não ingleses seria preciso pelo menos algo acima de 32b para fazer sentido, ainda parece difícil...

 
GN⁺ 2025-05-14
Comentários do Hacker News
  • Gostei da ideia e queria muito montar algo assim eu mesmo, mas minha experiência usando os modelos menores do Whisper localmente ficou abaixo do esperado; fico curioso se alguém conseguiu resultados bons o bastante para esse tipo de uso, embora talvez o problema tenha sido meu microfone ruim
    • Vale muito a pena verificar de novo o estado do microfone; na nossa empresa usamos Whisper para transcrever e traduzir reuniões inteiras em tempo real, e o desempenho é excelente
    • Fiquei curioso sobre qual modelo vocês usam; eu normalmente uso o modelo large na GPU, ele é rápido e funciona muito bem, mas é importante notar que ele só consegue reconhecer um idioma por vez; se você não especificar, ele faz detecção automática. Os modelos pequenos realmente ficam devendo em desempenho e muitas vezes suportam principalmente inglês. Para mim, o large entrega o melhor desempenho, mas para ter uma velocidade realmente utilizável você precisa de hardware com GPU; isso continua valendo mesmo com faster-whisper ou insanely-fast-whisper
  • Seria ótimo se isso existisse como um produto ou app que fosse só instalar e usar, com uma UI para configurar e treinar facilmente; ainda assim, sou muito grato por este guia porque parece que ele vai me permitir construir exatamente o que eu quero
  • Material realmente muito legal, queria agradecer; ainda não segui tudo até o fim, mas fiquei curioso se esse modelo realmente roda bem no iPhone; aqui em casa, meu aparelho de 9 anos conseguiu rodar o modelo Qwen 0.6B com ollama, mas os outros modelos ficaram lentos demais para oferecer uma experiência de uso aceitável
    • Ah, então você estava falando de um celular de 9 anos; eu tinha entendido que uma criança do ensino fundamental estava fazendo deploy de modelos por conta própria e fiquei chocado. Na minha idade naquela época eu ainda estava aprendendo tabuada
    • Segundo o material do MLC, até modelos na faixa de 8B podem rodar no iOS, mas algo entre 1B e 3B parece mais realista. Há uma referência aqui: https://llm.mlc.ai/docs/deploy/ios.html#bring-your-own-model
  • Por que o texto precisaria ter sido escrito por uma LLM? Fico me perguntando
    • Esse estilo de resumo, com formatação pesada e (!) todos os parágrafos em lista com marcadores, é muito confuso; principalmente em textos longos, a tela fica visualmente poluída e sem variação, o que prejudica a legibilidade
  • Recentemente (talvez eu tenha perdido algum anúncio) percebi que a Siri já funciona localmente pelo menos para alguns comandos; por exemplo, basta colocar o Apple Watch em modo avião e pedir um timer ou lembrete
    • A Siri já tinha capacidades offline limitadas pelo menos desde o iOS 15, mas a maioria dos usuários mal percebeu isso, porque a maior parte dos comandos da Siri ainda depende de conexão de rede
  • Fico me perguntando por que a Apple não analisou os dados para criar handlers hardcoded para, digamos, os mil casos de uso mais comuns
    • Na prática eles até estão fazendo isso, mas num ritmo muito lento; eles adicionam recursos ligados a brilho e energia, por exemplo, mas não informam direito o que pode ser usado offline. O usuário precisa entrar em modo avião e sair testando várias coisas por conta própria para descobrir, o que resulta numa experiência de uso muito ruim
  • Projeto muito legal e ótimo resumo
  • Fico pensando se a Apple permite substituir a Siri por outro assistente; no Android, assistentes que não são do Google por muito tempo tiveram limitações para escuta em background, botões físicos, gestos e atalhos. Não sei se o Google Assistant ainda mantém esse tratamento privilegiado, mas também não me surpreenderia se mantivesse
    • Parte do problema está em um coprocessador separado (AOP) que processa a wake word “hey siri”, e o modelo também é compilado no firmware. Não é tecnicamente impossível, mas não dá para resolver apenas deixando um app do Google rodando em background, porque os gestos acontecem quando o AP está dormindo. Até seria possível iniciar um app de assistente com o botão de ação lateral e afins, mas a experiência provavelmente não seria satisfatória (por exemplo, o app pode não estar aberto). Mais detalhes no link abaixo: https://machinelearning.apple.com/research/hey-siri
    • Com o novo botão de ação, ficou bem fácil abrir um app de assistente alternativo usando um atalho personalizado
    • O Perplexity também funciona desse jeito
  • Há um ano e meio venho usando o chatGPT fielmente no iPhone, e a Siri me frustra tanto que estou gostando cada vez menos dela; fico imaginando quando a OpenAI, com ajuda da Microsoft, vai lançar um GPT Phone para competir com o iPhone. Estou cansado do iPhone sem graça; preciso de um GPT Phone em que o GPT resolva tudo direto da tela bloqueada. Estou esperando ansiosamente que isso apareça logo, e tenho a impressão de que talvez já estejam desenvolvendo isso em segredo