15 pontos por GN⁺ 2025-05-14 | 1 comentários | Compartilhar no WhatsApp
  • Repositório oficial de "FastVLM: Efficient Vision Encoding for Vision Language Models", apresentado pela Apple na CVPR 2025
  • O FastViTHD demonstra redução no número de tokens e menor tempo de codificação de imagens em alta resolução
  • O menor modelo alcança resultados 85 vezes mais rápidos que o LLaVA-OneVision-0.5B e um encoder 3,4 vezes menor
  • O modelo grande mostra desempenho superior e velocidade 7,9 vezes maior que o Cambrian-1-8B
  • Há um app de demonstração que roda em dispositivos móveis, como o iPhone

Importância e vantagens do projeto FastVLM

  • O FastVLM é uma implementação oficial open source para modelos de linguagem visual (Vision Language Model, VLM)
  • Oferece vantagens destacadas em velocidade e eficiência em relação aos encoders visuais existentes
  • Tem alta utilidade em vários tipos de hardware, especialmente em Apple Silicon e ambientes móveis
  • Permite escolher e usar diretamente modelos pré-treinados de vários tamanhos e níveis de desempenho
  • Em comparação com outros projetos, garante respostas em tempo real otimizadas e baixo uso de recursos de hardware graças ao tamanho reduzido dos modelos

Principais características

  • O FastViTHD é um encoder visual inovador de arquitetura híbrida que reduz a quantidade de tokens de saída e encurta significativamente o tempo de codificação de imagens em alta resolução
  • O menor modelo, FastVLM-0.5B, tem TTFT (tempo até o primeiro token) 85 vezes mais rápido que o LLaVA-OneVision-0.5B e um encoder 3,4 vezes menor
  • O modelo grande FastVLM-7B, combinado com o LLM Qwen2-7B, apresenta TTFT 7,9 vezes mais rápido e desempenho superior com um único encoder de imagem quando comparado a SOTAs recentes como o Cambrian-1-8B
  • Também é fornecido um app de demonstração que funciona em ambiente móvel real (iOS), permitindo verificar imediatamente a aplicabilidade da tecnologia

Informações dos modelos (Model Zoo)

  • Modelos FastVLM de vários tamanhos (FastVLM-0.5B, FastVLM-1.5B, FastVLM-7B) são oferecidos nas versões de estágio 2 e estágio 3
  • Arquivos de checkpoint do PyTorch são fornecidos oficialmente para cada modelo
  • Os usuários podem usar os comandos oficiais para baixar em lote vários modelos para o diretório checkpoints

Exemplo de uso (Usage Example)

  • É possível testar inferência de forma fácil e rápida com checkpoints do PyTorch já treinados usando o script predict.py
  • Com os comandos de exemplo, basta inserir uma imagem e um prompt (pergunta) para obter uma descrição da imagem ou a resposta à pergunta

Suporte a Apple Silicon e dispositivos móveis

  • É fornecido um guia explicando o processo separado de exportação do modelo e quantização para inferência em Apple Silicon
  • Arquivos de checkpoint de uma versão diretamente otimizada para Apple Silicon são distribuídos oficialmente
  • O guia de desenvolvimento de app e o código-fonte prontos para uso em iPhone, iPad e Mac estão indicados na pasta /app

Informações adicionais e orientações sobre open source

  • São fornecidos o link oficial do arXiv do artigo do FastVLM e o formato de citação do paper da CVPR 2025
  • A base de código se apoia em vários projetos open source, e as contribuições e informações de licença são apresentadas separadamente
  • Antes de usar os modelos e o código, é necessário verificar a licença (arquivo de licença e licença dos modelos)

1 comentários

 
GN⁺ 2025-05-14
Comentários do Hacker News
  • Um modelo topo de linha de 0.5B com 2 GB de tamanho... parece sem sentido fazer cada app baixar isso separadamente. Imagino que a Apple claramente deva estar planejando pré-carregar esses modelos no nível do sistema operacional e fornecer um SDK para que todos os apps possam chamá-los localmente. É uma fase realmente empolgante. Até abri uma issue para tentar confirmar esse ponto
    • Acho que haveria um potencial enorme se existisse um modelo fundacional padronizado pelo SO com base em pesos abertos. Se a API permitisse que desenvolvedores de apps carregassem fine-tunings LoRa personalizados em tempo de execução sobre o modelo padrão do SO, idealmente daria para ter ao mesmo tempo as vantagens de um modelo especializado por app, mantendo o tamanho de um app popular, e também os benefícios de um modelo fundacional
    • Talvez desse para reduzir ainda mais o tamanho do modelo com quantização em f16 ou até int8, mas o ponto principal é o que você disse. Mesmo do ponto de vista do usuário, baixar um arquivo de 500 MB para um único app não é uma experiência agradável
    • Lembro de terem falado algo parecido no WWDC do ano passado em relação a LLMs também. A ideia era que o SO fornecesse um modelo base, e cada app pudesse ajustá-lo com LoRAs ou adicionar heads personalizados
    • Acho que isso não vai ser mencionado publicamente a menos que seja em uma grande apresentação. Meu palpite é que só vamos confirmar algo assim em um evento como a WWDC
  • Tenho a impressão de que elevar bastante a velocidade de time-to-first-token é essencial para apps que olham para a tela e agem imediatamente, como assistentes baseados em visão contínua on-device. Ver um app real rodando no repositório foi bem impressionante, e estou animado para compilar e testar eu mesmo hoje à noite
  • Queria que contribuíssem de forma mais ativa com a comunidade de AI/ML e também publicassem os pesos e a arquitetura do modelo no HuggingFace. Engraçado que hoje vi uma demo parecida de VLM usando um VLM gratuito. Link de referência: https://github.com/ngxson/smolvlm-realtime-webcam
  • Estou criando pessoalmente um app de voz + visão em tempo real chamado Sen. No momento ele está em beta público e faz streaming de frames em tempo real com webrtc. Estou achando rápido e inteligente, e fico curioso para saber o quanto isso vai melhorar à medida que esses modelos ficarem mais próximos do hardware. No futuro, parece que esse tipo de modelo poderá rodar no dispositivo com TTFB natural e rápido
    • Se você tiver algum texto organizando a stack técnica e a configuração, poderia compartilhar? Ou mesmo um resumo já seria ótimo. Quero fazer algo como um Qwen pessoal para crianças, com botões e voz para enviar e receber prompts, e por enquanto nem preciso da parte de visão (embora fosse legal adicionar isso um dia). A Siri é realmente decepcionante. Ainda não chegou nem perto do que eu gostaria
  • É muito empolgante ver que, em vez de simplesmente despejar recursos infinitos, há um esforço em andamento para reduzir recursos com eficiência e fazer modelos menores rodarem
  • Estou sentindo cada vez mais que o futuro da robótica será na área de modelos VLA (vision-language-action). O Tesla FSD também é um modelo VLA end-to-end, e parece que uma codificação visual eficiente será decisiva para a segurança e a capacidade de resposta dos robôs
  • Como pai de uma criança pequena com dano grave no nervo óptico, que poderia perder a visão a qualquer momento, conseguimos preservar parte da visão graças a um tratamento experimental em um ensaio clínico do NIH (acho que o apoio à ciência precisa continuar). Com os avanços em Vision-Language Models, isso me deu esperança de que, mesmo se meu filho ficar cego, ainda poderá interagir com o mundo, cursar uma faculdade e atuar nas áreas de ciência ou engenharia que ele ama. Ele é muito talentoso para a idade e tenho grandes expectativas para o futuro dele
    • Queria compartilhar a experiência de ter crescido como uma pessoa 100% cega nos anos 80. Naquela época a tecnologia não era avançada como hoje, e foi só por volta dos 12 anos que os computadores apareceram; antes disso aprendi a datilografar numa máquina de escrever antiga e a escrever em braille com uma pesada máquina metálica. O OCR daquela época era fraco, e só no ensino médio consegui acompanhar as aulas com um notebook equipado com display braille. Eu usava DOS e fazia anotações no Word 5.5. Tirando o PC Lingua para aprender latim, quase não havia ferramentas especializadas para estudo. No fim, tudo o que eu tinha eram minhas anotações eletrônicas e minha própria cabeça, mas ainda assim concluí a escola e hoje tenho um trabalho muito satisfatório, moro na minha própria casa, tenho uma namorada adorável e vivo de forma totalmente independente. Na verdade, precisei até afastar propositalmente minha mãe, que vivia tentando me ajudar. Entre pessoas com deficiência, costumamos dizer que a superproteção dos pais é a maior fonte de limitação adicional, algo como "uma deficiência extra causada pelos pais". Não leve isso para o lado emocional; pense de verdade no significado disso. Seu filho pode perfeitamente ser independente aos 18 anos. Quanto mais você adiar isso à força, mais difícil será a independência real e mais chances ele perderá de desenvolver força interior. Entendo sua esperança com o avanço da tecnologia, mas acredito que as possibilidades do seu filho vão além do que você imagina. Se você ajudá-lo a descobrir o próprio potencial, coisas realmente surpreendentes podem acontecer. E espero que você também não dependa apenas de dispositivos caros ou das ferramentas mais recentes. Eu também adoro modelos de visão, mas até hoje, quando saio de casa, levo só minha bengala e meu celular. Às vezes pergunto à Siri "onde estou?", mas no fim quem realmente me guia é minha bengala. Na prática, boa parte da tecnologia mais recente é exagerada, e quero enfatizar que dá para fazer muito mais apenas com audição e tato normais do que as pessoas costumam pensar. Desejo sinceramente muita sorte para sua família e para o crescimento do seu filho daqui para frente
  • Acho que, com esse tipo de tecnologia, dá para criar um assistente realmente útil para pessoas com deficiência visual usando apenas um celular e uma câmera acoplada aos óculos. Pessoas que antes não conseguiam se locomover sem um ajudante talvez possam ter uma vida independente, movendo-se sozinhas no dia a dia
    • Isso pode ser útil para distinguir frango com creme de sopa cremosa de cogumelo, mas para mobilidade não me parece que vá ajudar muito em comparação com as estratégias que pessoas cegas já usam. Um feedback do tipo "tem uma árvore aqui, outra árvore ali, um pedestre ali, outra árvore, uma placa" não parece ser muito útil na locomoção real
  • Fico pensando se daria para converter/executar isso no llama.cpp. O fato de ser baseado em LLaVA me deixa bastante animado