Gemma 4 VLA 在 Jetson Orin Nano Super 上的演示
摘要
NVIDIA 与 Hugging Face 发布实操演示,展示 Gemma 4 作为视觉-语言-动作模型在 Jetson Orin Nano Super 上完整运行,使用本地语音转文字/文字转语音及网络摄像头输入。
查看缓存全文
缓存时间: 2026/04/22 20:23
在 Jetson Orin Nano Super 上体验 Gemma 4 VLA 演示
来源:https://huggingface.co/blog/nvidia/gemma4
返回文章列表(https://huggingface.co/blog)
与 Gemma 4 对话,她会自己判断是否需要通过摄像头“看”一眼再回答你。全部在 Jetson Orin Nano Super 本地运行。
你说 → Parakeet STT → Gemma 4 → [必要时摄像头] → Kokoro TTS → 扬声器
按空格录音,再按空格结束。这是一个极简 VLA:模型根据你的问题上下文自行决定是否调用视觉,无需关键词、无硬编码逻辑。如果问题需要“睁眼”,她会拍照、理解并据此回答——不是描述图片,而是用看到的内容回答你的真实问题。
而且,这居然能在 Jetson Orin Nano 上跑起来,确实挺惊艳的 :)
获取代码
完整脚本放在 GitHub 我的 Google_Gemma 仓库,与 Gemma 2 演示并列:
👉 github.com/asierarranz/Google_Gemma(https://github.com/asierarranz/Google_Gemma)
任选其一:
# 方案 1:克隆整个仓库
git clone https://github.com/asierarranz/Google_Gemma.git
cd Google_Gemma/Gemma4
# 方案 2:只下载脚本
wget https://raw.githubusercontent.com/asierarranz/Google_Gemma/main/Gemma4/Gemma4_vla.py
单文件 Gemma4_vla.py 即可,首次运行会自动从 Hugging Face 拉取 STT/TTS 模型与音色资源。
硬件清单
- NVIDIA Jetson Orin Nano Super(8 GB)
- Logitech C920 摄像头(自带麦克风)
- USB 扬声器
- USB 键盘(按空格用)
设备不挑,Linux 能认的 USB 摄像头/麦克风/扬声器都行。
步骤 1:系统依赖
新系统先装基础包:
sudo apt update
sudo apt install -y \
git build-essential cmake curl wget pkg-config \
python3-pip python3-venv python3-dev \
alsa-utils pulseaudio-utils v4l-utils psmisc \
ffmpeg libsndfile1
build-essential 与 cmake 仅在本地编译 llama.cpp(步骤 4 方案 A)时需要,其余用于音视频与 Python。
步骤 2:Python 环境
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install opencv-python-headless onnx_asr kokoro-onnx soundfile huggingface-hub numpy
步骤 3:释放内存(可选但推荐)
8 GB 板子跑大模型,清理一下更丝滑。
加交换文件
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
杀掉内存大户
sudo systemctl stop docker 2>/dev/null || true
sudo systemctl stop containerd 2>/dev/null || true
pkill -f tracker-miner-fs-3 || true
pkill -f gnome-software || true
free -h
浏览器、IDE 统统关掉,每一 MB 都值钱。
若步骤 4 用 Docker,别停 Docker,其余照旧杀。
还是吃紧?
Q4_K_M(本地)/Q4_K_S(Docker)在 8 GB 上清理后稳稳运行。实在紧张就降一档 Q3:
gemma-4-E2B-it-Q3_K_M.gguf # 替换 Q4_K_M
能跑 Q4 就别降,智商差距明显。
步骤 4:启动 Gemma 4 服务
需先跑起 llama-server 并加载视觉投影文件。
本地编译 llama.cpp
cd ~
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_CUDA_ARCHITECTURES="87" \
-DGGML_NATIVE=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j4
下载模型与视觉投影
mkdir -p ~/models && cd ~/models
wget -O gemma-4-E2B-it-Q4_K_M.gguf \
https://huggingface.co/unsloth/gemma-4-E2B-it-GGUF/resolve/main/gemma-4-E2B-it-Q4_K_M.gguf
wget -O mmproj-gemma4-e2b-f16.gguf \
https://huggingface.co/ggml-org/gemma-4-E2B-it-GGUF/resolve/main/mmproj-gemma4-e2b-f16.gguf
mmproj 是视觉投影,缺了它模型就“瞎”。
启动服务
~/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
-ngl 99 把所有层扔 GPU,内存吃紧可改小。
--jinja 开启 Gemma 原生工具调用,是 VLA 关键。
验证服务
curl -s http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"gemma4","messages":[{"role":"user","content":"Hi!"}],"max_tokens":32}' \
| python3 -m json.tool
返回 JSON 即成功。
步骤 5:确认麦克风、扬声器、摄像头
麦克风
arecord -l
找到 USB 麦克,如 plughw:3,0。
扬声器
pactl list short sinks
选对应 USB 扬声器的冗长名字,如 alsa_output.usb-Generic_USB2.0_Device_20130100ph0-00.analog-stereo。
摄像头
v4l2-ctl --list-devices
通常 /dev/video0。
快速测试
export MIC_DEVICE="plughw:3,0"
export SPK_DEVICE="alsa_output.usb-Generic_USB2.0_Device_20130100ph0-00.analog-stereo"
arecord -D "$MIC_DEVICE" -f S16_LE -r 16000 -c 1 -d 3 /tmp/test.wav
paplay --device="$SPK_DEVICE" /tmp/test.wav
能听到自己声音就 OK。
步骤 6:运行演示
确保步骤 4 的服务已跑,然后:
source .venv/bin/activate
export MIC_DEVICE="plughw:3,0"
export SPK_DEVICE="alsa_output.usb-Generic_USB2.0_Device_20130100ph0-00.analog-stereo"
export WEBCAM=0
export VOICE="af_jessica"
python3 Gemma4_vla.py
首次会下载 Parakeet STT、Kokoro TTS 并生成音色文件,稍等即可。
- 空格 → 开始录音
- 说话提问
- 空格 → 结束录音
纯文本模式(跳过音频):
python3 Gemma4_vla.py --text
切换音色
export VOICE="am_puck"
python3 Gemma4_vla.py
推荐音色:af_jessica、af_nova、am_puck、bf_emma、am_onyx。
工作原理
脚本只给 Gemma 4 注册了一个工具:
{
"name": "look_and_answer",
"description": "Take a photo with the webcam and analyze what is visible."
}
流程:
- 本地语音转文字(Parakeet STT)
- Gemma 收到文本+工具定义
- 需视觉时自动调用
look_and_answer,脚本拍照回传 - Gemma 结合图像回答,Kokoro 朗读
无关键词匹配,模型自行判断何时“睁眼”——这就是 VLA。
--jinja 标志激活了 Gemma 的原生工具调用能力。
常见问题
- 服务 OOM:重做步骤 3 清理,关浏览器。
- 没声音:检查
SPK_DEVICE是否填对。 - 麦克录不到:用
arecord -l确认设备并手动测试。 - 首次启动慢:正常,下载模型+生成音色,第二次飞快。
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
LLAMA_URL | http://127.0.0.1:8080/v1/chat/completions | llama-server 地址 |
MIC_DEVICE | plughw:3,0 | ALSA 录音设备 |
SPK_DEVICE | alsa_output.usb...analog-stereo | PulseAudio 播放 sink |
WEBCAM | 0 | 摄像头索引 /dev/videoN |
VOICE | af_jessica | Kokoro 音色 |
附:只想纯文本体验 Gemma 4?
懒得编译?Jetson AI Lab 提供了现成 Docker 镜像,已预装 llama.cpp:
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
一行命令,纯文本聊天,访问 http://localhost:8080 即可。
注意:该镜像不含视觉投影,无法跑 VLA 演示。要摄像头体验请用步骤 4 的本地编译方案。
祝你玩得开心!有问题或想法欢迎交流 :)
Asier Arranz | NVIDIA
相似文章
Gemma 4 发布:前沿多模态智能,端侧可用
Google DeepMind 发布 Gemma 4,这是一系列前沿多模态模型,已在 Hugging Face 上以 Apache 2 协议开源,针对端侧部署进行了优化,并支持多种推理框架。
使用 Transformers.js 在 WebGPU 上完全离线运行 Gemma 4,并通过 WebSerial 控制 Reachy Mini
演示了如何使用 WebGPU 和 Transformers.js 在浏览器中离线运行 Gemma 4,并通过 WebSerial 控制 Reachy Mini 机器人。
Gemma 4 视觉
Gemma 4 的视觉表现受默认 token 预算过低拖累;在 llama.cpp 中将 --image-max-tokens 提到 2240,可解锁顶尖 OCR 与细节识别,代价是额外占用约 14 GB 显存。
从 RTX 到 Spark:NVIDIA 加速 Gemma 4 赋能本地智能体 AI
NVIDIA 与谷歌合作优化 Gemma 4 模型,以实现在 RTX GPU、DGX Spark 和 Jetson 设备上的本地部署,从而支持高效的端侧智能体 AI,具备推理、编程、多模态能力以及 35 多种语言的支持。
google/gemma-4-31B-it-assistant
Google DeepMind 发布了 Gemma 4,这是一个开源权重的多模态模型家族,支持文本、图像、视频和音频,具备增强的推理和编码能力,并通过多令牌预测(MTP)实现高达 2 倍的解码速度提升。