Gezeigt wird eine einfache VLA-Demo mit Gemma 4 auf einem NVIDIA Jetson Orin Nano Super (8 GB). Der Ablauf ist: gesprochene Eingabe zu Parakeet STT, dann zu Gemma 4, bei Bedarf zur Webcam und anschließend über Kokoro TTS zur Sprachausgabe. Das Modell entscheidet ohne Keyword-Trigger oder hart codierte Logik selbst, ob für eine Antwort ein Kamerabild benötigt wird.
Verwendet wurden ein Jetson Orin Nano Super, eine Logitech-C920-Webcam mit integriertem Mikrofon, ein USB-Lautsprecher und eine USB-Tastatur zum Starten und Stoppen der Aufnahme per Leertaste. Laut Tutorial ist die Konfiguration nicht auf genau diese Geräte festgelegt; grundsätzlich sollen auch andere unter Linux erkannte Webcams, USB-Mikrofone und USB-Lautsprecher funktionieren.
Das eigentliche Demo-Skript ist die Datei Gemma4_vla.py aus dem GitHub-Repository Google_Gemma. Beim ersten Start lädt das Skript die benötigten STT-/TTS-Modelle und Sprach-Assets von Hugging Face herunter. Für die Python-Umgebung werden unter anderem opencv-python-headless, onnx_asr, kokoro-onnx, soundfile, huggingface-hub und numpy installiert.
Im Tutorial wird zusätzlich empfohlen, auf dem 8-GB-System etwas Speicherreserve zu schaffen, etwa durch eine 8-GB-Swap-Datei und das Stoppen nicht benötigter Prozesse. Das beschleunigt die Inferenz nicht, soll aber beim Laden des Modells als Absicherung gegen Out-of-Memory-Abbrüche dienen. Genannt wird auch, dass Q4_K_M im nativen Build und Q4_K_S im Docker-Setup auf dem 8-GB-Board nach dieser Bereinigung komfortabel laufen. Falls der Speicher dennoch knapp bleibt, wird als leichtere Alternative ein Q3-Quant desselben Modells genannt, mit dem Hinweis, dass dieses etwas weniger leistungsfähig ist.
Voraussetzung für die Demo ist ein laufender llama-server mit Gemma 4. Für die vollständige VLA-Funktion wird ein nativer Build von llama.cpp auf dem Jetson beschrieben, weil damit laut Tutorial die beste Performance und die notwendige Kontrolle über den Vision Projector erreicht werden. Neben dem Modell gemma-4-E2B-it-Q4_K_M.gguf wird dafür auch die Datei mmproj-gemma4-e2b-f16.gguf geladen. Diese mmproj-Datei ist der Vision Projector; ohne sie kann Gemma keine Bildinformationen verarbeiten.
Der gezeigte llama-server-Start nutzt unter anderem –mmproj, –image-min-tokens 70, –image-max-tokens 70, –flash-attn on und –jinja. Der Parameter -ngl 99 steht dafür, dass möglichst alle Modell-Layer auf die GPU ausgelagert werden. Wenn Speicherprobleme auftreten, kann dieser Wert reduziert werden, damit weniger Layer auf der GPU und mehr auf der CPU laufen.
Die Funktionsprüfung erfolgt zunächst über eine lokale Anfrage an den OpenAI-kompatiblen Endpoint des Servers. Danach werden Mikrofon, Lautsprecher und Webcam unter Linux identifiziert, etwa mit arecord -l, pactl list short sinks und v4l2-ctl –list-devices. Die Geräte werden dann über Umgebungsvariablen wie MIC_DEVICE, SPK_DEVICE und WEBCAM gesetzt.
Nach dem Start von Gemma4_vla.py lädt das Skript beim ersten Durchlauf Parakeet STT und Kokoro TTS und erzeugt WAV-Dateien für die Sprachprompts. Danach wird die Aufnahme mit der Leertaste gestartet und beendet. Zusätzlich gibt es einen reinen Textmodus über –text, um den LLM-Pfad ohne Audio-Setup zu testen. Für Kokoro werden mehrere Stimmen genannt, darunter af_jessica, af_nova, am_puck, bf_emma und am_onyx.
Das Skript stellt Gemma 4 genau ein Tool bereit: look_and_answer. Dieses Tool nimmt ein Bild mit der Webcam auf und analysiert, was sichtbar ist. Laut Beschreibung wird die Spracheingabe lokal mit Parakeet STT transkribiert, anschließend erhält Gemma den Text zusammen mit der Tool-Definition. Wenn für die Anfrage visuelle Information nötig ist, ruft das Modell look_and_answer auf, das Skript nimmt ein Webcam-Bild auf und sendet es zurück, und Gemma antwortet mit diesem zusätzlichen Kontext. Für die Sprachausgabe wird die Antwort anschließend mit Kokoro gesprochen. Das Tutorial betont, dass dafür kein Keyword-Matching verwendet wird, sondern dass das Modell selbst entscheidet, wann Sehen erforderlich ist. Aktiviert wird dies über die native Tool-Calling-Unterstützung von Gemma, die im gezeigten Setup durch –jinja im llama-server genutzt wird.
Als typische Probleme werden Speichermangel auf dem Server, falsche Audio-Sinks, stille Mikrofonaufnahmen und langsamer Erststart genannt. Beim ersten Start ist die Ausführung langsamer, weil Modelle heruntergeladen und Sprach-Prompts erzeugt werden; spätere Starts sind schneller.
Zusätzlich wird ein alternativer Docker-Weg über ein vorbereitetes Image von Jetson AI Lab beschrieben. Damit lässt sich llama-server mit Gemma 4 auf dem Jetson ohne eigenen Build starten und über einen OpenAI-kompatiblen Client unter http://localhost:8080 verwenden. Dieser Docker-Pfad ist laut Tutorial jedoch auf Text beschränkt, weil dabei der Vision Projector nicht geladen wird; für die Webcam-basierte VLA-Demo ist daher weiterhin der native Build erforderlich.
