Asier Arranz (NVIDIA) publicou no Hugging Face um tutorial de VLA (Vision-Language-Action) rodando 100% local num Jetson Orin Nano Super de 8 GB. Stack: Parakeet STT → Gemma 4 → webcam (se precisar) → Kokoro TTS. O modelo decide sozinho quando olhar pela câmera pra responder, sem keyword trigger nem lógica hardcoded. Tudo em um script Python só.
Asier Arranz, da NVIDIA, publicou no Hugging Face um tutorial rodando Gemma 4 em modo VLA (Vision-Language-Action, modelo que combina linguagem e visão pra agir) num Jetson Orin Nano Super de 8 GB. Tudo local, sem API externa.
O fluxo é direto: você fala, Parakeet transcreve (STT), Gemma 4 processa, e se precisar da câmera pra responder, ela mesma decide tirar a foto. A resposta volta falada via Kokoro TTS.
Fala com a Gemma 4 e ela decide sozinha se precisa olhar pela webcam pra te responder. Tudo rodando local num Jetson Orin Nano Super.
O ponto legal aqui não é o modelo ver imagem. É o modelo decidir sozinho se precisa ver, sem keyword matching nem if/else hardcoded. Você pergunta "que horas são?" e ela responde de texto. Pergunta "o que tem na minha mesa?" e ela aciona a câmera. Decisão feita pelo próprio LLM via tool calling.
Não precisa ser exatamente isso. Qualquer webcam, mic USB e speaker USB que o Linux enxergue serve.
O script expõe uma tool só pra Gemma 4:
{
"name": "look_and_answer",
"description": "Take a photo with the webcam and analyze what is visible."
}
Quando você pergunta algo:
look_and_answer, o script pega um frame da webcam e devolveA flag --jinja no llama-server é o que liga o tool-calling nativo do Gemma.
1. Pacotes do sistema: básicos de build, áudio (ALSA, PulseAudio), webcam (v4l-utils) e ffmpeg.
2. Ambiente Python: venv com opencv-python-headless, onnx_asr, kokoro-onnx, soundfile, huggingface-hub.
3. Liberar RAM (opcional mas recomendado): adiciona 8 GB de swap como rede de segurança no carregamento do modelo (não acelera inferência), mata Docker, tracker-miner e outros processos pesados. A placa de 8 GB fica no limite.
4. Servir o Gemma 4: build do llama.cpp nativo com CUDA (-DGGML_CUDA=ON, arquitetura 87 pro Orin), baixa o modelo gemma-4-E2B-it-Q4_K_M.gguf e o vision projector mmproj-gemma4-e2b-f16.gguf do Hugging Face. Sem o mmproj a Gemma não enxerga, então não pula.
O comando de subida do servidor:
~/llama.cpp/build/bin/llama-server \
-m ~/models/gemma-4-E2B-it-Q4_K_M.gguf \
--mmproj ~/models/mmproj-gemma4-e2b-f16.gguf \
-c 2048 \
--image-min-tokens 70 --image-max-tokens 70 \
--ubatch-size 512 --batch-size 512 \
--host 0.0.0.0 --port 8080 \
-ngl 99 --flash-attn on \
--no-mmproj-offload --jinja -np 1
O -ngl 99 manda todas as camadas pra GPU. Se der OOM, reduz o número.
5. Achar mic, speaker e webcam: arecord -l pro mic (ex: plughw:3,0), pactl list short sinks pro speaker (nome feio tipo alsa_output.usb-...analog-stereo), v4l2-ctl --list-devices pra webcam (geralmente /dev/video0).
6. Rodar o demo:
export MIC_DEVICE="plughw:3,0"
export SPK_DEVICE="alsa_output.usb-...analog-stereo"
export WEBCAM=0
export VOICE="af_jessica"
python3 Gemma4_vla.py
SPACE pra começar a gravar, SPACE de novo pra parar. Tem modo texto também (--text) se não quiser mexer com áudio.
Nos testes do autor, Q4_K_M (build nativo) e Q4_K_S (Docker) rodam confortável nos 8 GB depois do cleanup. Se travar, dá pra cair pro Q3_K_M (mesmo modelo, um pouco menos esperto, bem mais leve). Mas o sweet spot é Q4_K_M.
Se quiser só brincar com Gemma 4 em modo texto, sem compilar nada, tem imagem pronta do Jetson AI Lab:
sudo docker run -it --rm --pull always \
--runtime=nvidia --network host \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
ghcr.io/nvidia-ai-iot/llama_cpp:latest-jetson-orin \
llama-server -hf unsloth/gemma-4-E2B-it-GGUF:Q4_K_S
Uma linha, pega o GGUF direto do Hugging Face. Só que essa rota Docker não carrega o vision projector, então não serve pro VLA completo. Pra webcam funcionar, tem que fazer o build nativo do passo 4.
Script completo no GitHub do autor: github.com/asierarranz/Google_Gemma, pasta Gemma4. Um arquivo só (Gemma4_vla.py) que baixa STT/TTS do Hugging Face no primeiro run.
Pra quem trabalha com edge AI ou robótica, esse tipo de stack (LLM multimodal + tool calling + STT/TTS local) numa placa de US$ 249 começa a mudar o jogo do que dá pra fazer offline. O tempo de primeiro token não é citado, mas vale rodar o benchmark se você tá avaliando hardware pra prototipagem.
☕ gostou dessa?
Matérias favoritadas ficam no seu /favoritos e, se você tem o cafecomtech instalado, disponíveis offline — no metrô, no avião, na fila do café.
☕ comentários · 0