>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Visão para projetos pessoais sem comprar um cluster de GPUs

Toda vez que você precisa adicionar reconhecimento de imagem ou perguntas e respostas baseadas em fotos a um projeto, suas mãos reaches for cloud APIs. Mas pagar por cada chamada OpenAI ou rotear requisições através de serviços de terceiros nem sempre é desejável. Executar um modelo multimodal pesado localmente também não é fácil: a maioria das soluções open source requer GPUs com 24 GB de memória ou mais.

O repositório moondream resolve exatamente esse problema. Desenvolvedores do m87-labs montaram um modelo multimodal compacto que analisa imagens com confiança, pesando apenas alguns gigabytes e rodando suavemente até mesmo em hardware modesto.

O que o moondream pode fazer

O modelo recebe uma imagem junto com uma consulta em texto como entrada e retorna uma resposta significativa em linguagem natural. O repositório contém duas versões:

  • moondream 2B com dois bilhões de parâmetros para tarefas padrão, incluindo geração de legendas, resposta a perguntas visuais e detecção de objetos
  • moondream 0.5B com 500 milhões de parâmetros, comprimido via destilação para rodar em smartphones, computadores de placa única e microsserviços com consumo mínimo de RAM

Aqui estão alguns exemplos do repositório:

A girl eating a hamburger

Se você perguntar ao modelo o que a pessoa na foto está fazendo, ele responderá: "A garota está sentada em uma mesa comendo um hambúrguer grande". Quando perguntado sobre a cor do cabelo, ele especifica claramente que são brancos.

O segundo exemplo mostra uma análise mais detalhada do ambiente:

Server rack

Quando perguntado "O que é isso?", o moondream produz um parágrafo detalhado: reconhece o rack de servidores, observa os cabos de energia conectados, o carpete no chão e um sofá próximo, bem como a parede de tijolos ao fundo.

Como executar localmente

O modelo é escrito em Python e se integra a projetos em apenas algumas dezenas de linhas de código. A inferência básica requer apenas as bibliotecas padrão do Hugging Face.

from PIL import Image
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "vikhyatk/moondream2"
revision = "2024-08-26"

model = AutoModelForCausalLM.from_pretrained(
    model_id, 
    trust_remote_code=True, 
    revision=revision
)
tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision)

image = Image.open("photo.jpg")
enc_image = model.encode_image(image)

answer = model.answer_question(enc_image, "Describe this image in detail.", tokenizer)
print(answer)

A versão 0.5B roda até mesmo em CPU pura sem atrasos críticos. Se recursos locais não estiverem disponíveis, os autores prepararam exemplos de deploy via plataforma serverless Modal.

Onde isso é útil na prática

O tamanho pequeno abre cenários onde modelos grandes simplesmente não cabem no orçamento ou nos requisitos de latência:

  1. Marcação automática e legendagem em arquivos de mídia locais.
  2. Moderação de conteúdo em bots e formulários web diretamente no servidor da aplicação.
  3. Robótica e dispositivos DIY baseados em Raspberry Pi, onde não há acesso à internet estável.
  4. Filtragem rápida de imagens antes de enviar para pós-processamento mais pesado.

Claro, você não deve esperar que um modelo de meio bilhão de parâmetros entenda infográficos complexos ou leia texto manuscrito. Mas para navegação básica de imagens e descrição de cenas, o moondream se sai excelente.

Se você precisa de um módulo VLM rápido e leve que não vai estourar o orçamento em servidores e vai rodar até mesmo em um laptop, o moondream definitivamente merece ser testado em um sandbox. Você pode experimentar o modelo no navegador no site oficial do projeto na seção Playground.

Projetos relacionados