一份 Windows 实战部署指南——从零环境到模型开口说话(还会看图)

一、为什么要在自己的机器上跑大模型

云端大模型固然好用,但也有例外,有时你的数据不能离开公司,有时你在没有 Wi-Fi 的飞机上,有时你只是不想再付一笔按量计费的 token 账单。好消息是:Google 于 2026 年 6 月开源的 Gemma4-12B-it,一个 120 亿参数的多模态模型,把过去得靠云端服务器才能跑的多模态与智能体能力,塞进了一台 16GB 内存的普通笔记本——离线、免费,还能看图、听音频。

本文将带你用 OpenVINO™ 在本地把这个会看图、能调工具的多模态 Agent 跑起来——涵盖从搭建环境、下载模型到完成部署的完整流程——所用的是开源示例仓库 openvino-dev-samples/openvino-gemma4-12b。作为一个展示 Gemma4-12B-it 能力的抢先体验(early-access)示例,它全程使用预编译发行包,上手快捷简单。更广泛、完整集成的支持将在未来的 OpenVINO™ 版本中提供。

仓库地址:https://github.com/openvino-dev-samples/openvino-gemma4-12b

二、先认认主角:Gemma4-12B 究竟是什么

Gemma4-12B 约有 120 亿参数,恰好位于 Gemma 4 家族的轻量级 E4B 与旗舰级 26B MoE 之间,补齐了中段空档。不过它最大的看点不是参数规模,而是一套「无编码器」的统一多模态架构。

传统多模态模型是两段式的「编码器 + 大语言模型」:图片先过视觉编码器,音频先过语音编码器,然后才进入语言模型。Gemma4 走了更激进的一条路:它砍掉传统视觉编码器,换成一个轻量的嵌入模块——一次矩阵乘法,加上位置编码与归一化——把图像数据映射进模型的嵌入空间;对于音频它更进一步,干脆完全移除音频编码器,把原始音频波形直接映射到与文本 token 相同的表示空间。于是图像、声音、文本都以统一形式进入同一个共享主干网络。收益很实在:更低的延迟、更省的内存,以及训练和微调都只需维护一个模型。它也是 Gemma 家族首个原生支持音频理解的中端模型。

几个开发者关心的硬指标:

  • 内存门槛低:约 16GB 显存 / 统一内存即可本地运行;多模态质量接近 26B MoE,内存占用却不到其一半。

  • 面向智能体:为多步推理与智能体工作流(agentic workflows)而生,并配套 Skills Repository 助力智能体开发。

  • 更快的生成:内置多 Token 预测(MTP)草稿模块,提前预测后续 token 以降低延迟。

  • 友好的许可:Apache 2.0,可免费商用,并兼容主流开源推理框架。

我们用 OpenVINO™ 配合 Intel GPU 加速在本地运行该模型。以上描述的能力来自模型本身;本文余下部分聚焦于如何用 OpenVINO™ 部署它。

三、它能拿来干嘛:典型应用场景

把一个多模态 + 智能体模型放到本地硬件上,能换来三样实在的东西:数据留在本地、断网也能用、还更省钱。常见场景:

  • 隐私敏感工作:医疗、法务、财务等不便上云的资料——本地推理让数据留在你的硬盘上。

  • 离线 / 弱网环境:出差、外勤、车间产线——网络不行时 AI 照样在线。

  • 个人开发者与中小企业:不用昂贵的工作站或云 GPU;一台消费级笔记本就够做多模态原型和本地智能体。

  • 长文处理:超长文档总结、大型代码库问答、会议纪要与财报分析,跨越长上下文。

  • 多模态交互:图像问答(看图说话)与音频理解,串入本地智能体工作流。

场景说够了——动手吧,先从我们要用的 OpenVINO™ 工具讲起。

四、再认认工具:这套部署方案是怎么搭起来的

整个发行包是一棵由三个仓库构建而成的「统一安装树」,各司其职:

  • openvino —— OpenVINO™ 推理核心运行时(openvino.dll),负责把算子真正跑在 CPU/GPU/NPU 上。

  • openvino.genai —— GenAI 层:LLM/VLM 流水线、模型构建、分词器(openvino_genai.dll)。

  • openvino.pipeline —— 模块化管线引擎,用 YAML 描述「编码器 → 嵌入融合 → LLM」的拓扑,并附带可运行的 yaml_pipeline_sample.exe。

它们打包在一起,你只要解压即用。部署有两条路线,我们两条都会走:

        Hugging Face safetensors (google/gemma-4-12B-it)                          |  阶段一: yaml_pipeline_sample.exe + 配置 YAML                          |        就地量化成 INT4 并序列化出 OpenVINO IR:   openvino_language_model.xml / openvino_text_embeddings_model.xml   openvino_vision_embeddings_model.xml / openvino_audio_embeddings_model.xml                          |  阶段二: 同一个示例再跑一次 -> 直接从磁盘加载 IR(不再重建)                          == 用 openvino.genai 部署 IR

一句话:阶段一把原始权重炼成 OpenVINO™ 专用的 INT4 中间表示(IR),阶段二则证明这套 IR 可以被反复、快速地部署——这正是生产环境所需要的。

五、开工前的准备:给机器装好「弹药」

先对一下清单:

  • Windows 11(x64)。

  • 一块 Intel GPU(Arc 独显,或 Core Ultra 的核显都行)加上较新的 Intel GPU 驱动。

  • 约 40 GB 空闲磁盘:约 24 GB safetensors + 约 7 GB 导出的 IR + 发行包。

  • Python 3.10+(用于下载模型和一次性的分词器转换)。

下面所有命令都在仓库根目录、用 cmd 命令行执行。

5.1 并解压预编译发行包

从仓库的 Releases 页面(标签 v2026.06)下载约 150 MB 的发行包,解压到根目录的 install\ 下:

:: 下载发行包(约 150 MB)curl -L -o pipeline_windows_x86_64.zip ^  https://github.com/openvino-dev-samples/openvino-gemma4-12b/releases/download/v2026.06/pipeline_windows_20260617_x86_64.zip
powershell -Command "Expand-Archive -Path pipeline_windows_x86_64.zip -DestinationPath install -Force"
:: 验收一下dir install\setupvars.batdir install\samples\cpp\yaml_pipeline_sample.exe

install\setupvars.bat 会把 OpenVINO 和 GenAI 的 DLL 加进 PATH——后面的 .bat 脚本会替你自动调用它。

5.2 建好 Python 

scripts\setup_env.bat

这一步会创建 python-env\ 虚拟环境,并安装 transformers、huggingface_hub,以及 openvino-tokenizers==2026.2.*(版本特意对齐发行包里的 OpenVINO 2026.2,别让它们各说各话)。

六、把模型搬回家

激活虚拟环境,然后从 Hugging Face 把模型拉下来(约 24 GB,泡杯咖啡的时间):

call python-env\Scripts\activate.batpython samples\common\download_model.py google/gemma-4-12B-it models\gemma-4-12B-it

下载完成后,models\gemma-4-12B-it\ 里会有 model.safetensors(约 24 GB)、config.json、tokenizer.json 等。

接着做一次性的分词器转换,把 HF 分词器转成 OpenVINO 的 IR 格式:

python samples\stage1_safetensors\prepare_tokenizer.py models\gemma-4-12B-it

它会在模型目录里写出 openvino_tokenizer.xml / openvino_detokenizer.xml。这一步是必需的,因为推理引擎里负责「文本↔token」互转的模块吃的是 OpenVINO IR 格式的分词器,而不是原始的 tokenizer.json——转一次,以后就一直能用。

七、第一次部署:从 safetensors 点火

万事俱备——点火:

samples\stage1_safetensors\run.bat "How do black holes work?"

第一次运行时,引擎会加载 safetensors、就地量化成 INT4、把 IR 序列化写回模型目录,然后才开始生成。日志大致长这样(节选):

[Safetensors Copy] Loaded 677 tensors ...[SafetensorsWeightFinalizer] In-flight quantization enabled (INT4_ASYM) ...Pipeline constructed successfully.Pipeline execution finished in ~? msOutput 'generated_text': To understand how black holes work, ...

确认 IR 已经落到磁盘上:​​​​​​​

dir models\gemma-4-12B-it\openvino_language_model.xmldir models\gemma-4-12B-it\openvino_text_embeddings_model.xmldir models\gemma-4-12B-it\openvino_vision_embeddings_model.xml

看到这几个 openvino_*.xml 文件,就说明「炼丹」成功——原始权重已经变成 OpenVINO 原生的 INT4 IR 了。

八、第二次部署:直接吃 IR,省去重建

既然 IR 已经躺在磁盘上,这次让引擎直接加载它——这才是「用 openvino.genai 部署 IR」真正的含义:

samples\stage2_ir_genai\run_ir.bat "Explain how OpenVINO accelerates inference."

你会注意到日志里再也没有 [Safetensors Copy] 和 In-flight quantization 那几行——引擎跳过了「炼丹」,直接从磁盘上的 IR 构建流水线,所以首 token 时间明显更短。生产环境里你显然不想每次启动都重新量化 24 GB 的权重,所以这才是你实际会用的路径。

想用 C++ 体验 GenAI 原生 API?仓库 samples\stage2_ir_genai\ 里附了两个参考样例(ov::pipeline::LLMPipeline 与 ov::genai::VLMPipeline)。它们之间的 IR 契约差异在 NOTES.md 里讲清楚了,动手前建议先读一眼,能省下不少挠头时间。

九、它还会看图说话

Gemma4 是个多模态选手——阶段一其实已经一并导出了视觉、文本、语言三套 IR。给 yaml_pipeline_sample.exe 喂一张图片,你只需接上视觉分支:​​​​​​​

call install\setupvars.batinstall\samples\cpp\yaml_pipeline_sample.exe ^    samples\stage1_safetensors\config\config_modeling_text_img_audio_cb_st.yaml ^    "image=path\to\your.png" "prompt=What is shown in this image?"

拿金门大桥的照片实测,输出(节选)大致是这样的:​​​​​​​

Pipeline constructed successfully.Pipeline execution finished in ~13000 msOutput 'generated_text': The image shows a close-up view of a large, complex metalor steel structure, likely part of a bridge ... set against a background of water ...

注意这依然是「从 IR 部署」——引擎读的还是磁盘上那几个 openvino_*.xml,只是这次多走了一条视觉分支,并没有回头去碰 safetensors。音频也是同理:把参数换成 audio=你的录音.wav,引擎就会用上 openvino_audio_embeddings_model.xml。

十、给它套个壳:多模态聊天机器人

命令行跑通固然爽,但要给同事演示,你需要一个能点的界面。仓库里带了一个基于 Gradio 的多模态聊天机器人 demo(samples\chatbot\):打开网页、输入文字、可选附上一张图片或一段音频,回答会一个词一个词地流式蹦出来。

samples\chatbot\run_chatbot.bat

▶ 演示视频

十一、收尾

到这里,你已经在自己的机器上、完全离线地跑通了一个 120 亿参数的多模态 Agent:把原始权重炼成 INT4 IR,反复快速地部署这套 IR,让它描述了一张图片,并把它接入了工作流。没有云、没有 token 账单,数据一步也没离开过你的硬盘。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐