← 返回博客

NOTE / LOG

使用轻薄本也可以进行本地推理的全模态大模型 MiniMind-O 初体验

0.1B 参数的全模态模型,居然能在核显轻薄本上跑视频通话

AI大模型MiniMind-O全模态本地推理

前言

最近挖到了一个很有意思的开源项目:MiniMind-O,是 Jingyao Gong 做的一个全模态模型。

一开始看到 0.1B 参数的时候我是很意外的,但仔细一看发现它居然同时支持 文本、语音、图像 三种模态输入,输出 文本 + 流式语音,而且号称可以在消费级显卡上跑。本着试试的心态就折腾了一下 (´・ω・`)

结果确实有点东西。


我的设备情况

我只有一台笔记本,但这台笔记本通过 OCulink 外接了一张 RTX 5060

模式CPUGPU内存说明
🖥️ 外接显卡AMD Ryzen AI 9 H 365 (10核20线程)RTX 5060 8GB (Blackwell)32GBOCulink 连接,CUDA 加速推理
💻 纯核显AMD Ryzen AI 9 H 365 (10核20线程)AMD Radeon 880M (512MB)32GB拔掉外接显卡,只用笔记本自身核显

笔记本型号是机械革命无界系列。所以所谓的”核显也能跑”,是真的把外接显卡拔掉的效果。能在 880M 核显上跑通一个全模态模型的实时视频通话,确实挺意外的


0.1B 究竟意味着什么

现在市面上主流的大模型动辄 7B、13B、70B、甚至 671B… 0.1B(也就是 1 亿参数)放在里面基本上就是蝼蚁级别。

但 MiniMind-O 的巧妙之处在于它的架构设计:

主模型(Thinker + Talker):113M 参数
├── Thinker(语言核心):63.91M
├── Talker(语音生成):47.05M
├── 音频投影层:0.99M
└── 视觉投影层:1.18M

外挂编码器(冻结,不参与训练):
├── SenseVoice 语音编码器:234M
├── SigLIP2 视觉编码器:95M
└── Mimi 音频编解码器:96M

注意那些外挂编码器在推理时也是要加载到显存/内存里的,所以实际运行时总加载约 538M 参数…但还是很小。


环境搭建过程

PyTorch 版本踩坑

第一个坑就来了。RTX 5060 是 Blackwell 架构(sm_120),而 PyTorch 2.6 的 CUDA 内核只支持到 sm_90(Ada Lovelace)。装好之后根本跑不起来,报奇怪的 CUDA 错误。

查了一下需要升级到 PyTorch 2.7+cu128 或更高版本才能识别。我实际安装的是 PyTorch 2.11.0+cu128,完美支持。

pip uninstall torch torchvision torchaudio -y
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

模型资源下载

整个项目需要下载的资源大概 1.6GB 左右,包括各种编码器和模型权重(227MB)。

model/
├── SenseVoiceSmall/    (447MB)  语音编码器
├── siglip2-base-p32-256-ve/ (180MB) 视觉编码器
├── mimi/               (183MB)  音频编解码器
├── campplus/           (13.5MB) 说话人编码器
├── speaker/            (内置音色)
└── vad/                (语音活动检测)

out/
├── sft_omni_768.pth    (227MB)  ← 主要权重
├── sft_omni_768_moe.pth (610MB) ← MoE 版本
├── llm_768.pth         (基座模型)
└── sft_zero_768.pth    (零阶段权重)

推理体验

命令行模式

最简单的测试方式就是跑一段命令行推理:

python eval_omni.py --load_from model --weight sft_omni --mode 0

默认会用英文问 7 个问题,模型会输出文本回答并生成对应的语音帧。

命令行推理的运行截图

文本回答的质量嘛…很符合 0.1B 的水平。句式重复、逻辑跳跃的问题都有,有时候前言不搭后语。但考虑到它的体量,能说出完整的英文句子已经不错了。

Gradio Web UI

然后试了 Gradio 版的 Web 界面:

python web_demo_omni.py --load_from ../ --port 8888

打开 http://localhost:8888 就能看到一个聊天界面。

Gradio 版的实时语音对话界面

支持文本、上传语音文件、上传图片,模型会回复文本 + 合成语音。还内置了 12 种音色可以切换。

视频通话

这个是我觉得最惊艳的部分 (`・ω・´)

项目还带了一个 Flask 版的 Web UI,支持实时视频通话:

cd webui
python web_demo.py --load_from ../ --port 7860

打开 http://localhost:7860/call,打开摄像头,按住说话键,模型就会实时捕捉视频画面 + 语音输入,然后通过语音回答你

Flask 版 Web 的视频通话界面,图中摄像头已开启

在轻薄本的 AMD 880M 核显 上居然也能跑起来,画面捕获和语音交互都很顺畅。一个 0.1B 的模型在核显上做视频通话,还挺魔幻的

图片分析能力测试

既然是全模态,那肯定要测测它的图片理解能力

测试一:初音未来 × JavaScript 海报

初音未来 JavaScript 宣传海报分析

输入了一张以初音未来为 IP 的 JavaScript 编程语言宣传海报,AI 生成的

结果嘛…它完全没认出来这是初音未来

后面就是大段重复的”VASCRITIONS”循环,句子结构也开始崩了

能看出模型大致抓到了画面内容(虽然人物、服装、姿势大都是错误的),细节全是错的——名字乱编、文字识别完全失败、而且有明显的句式重复和循环问题。毕竟 0.1B 的视觉理解能力就这样了 (´・ω・`)

测试二:Linux 作业截图

Linux 终端作业截图分析

这张明显好一些,能认出是终端界面、命令行操作,大概能描述出有人在执行命令。虽然具体的命令内容和输出描述的不正确,但至少方向对了。


在轻薄本(核显)上跑的体验

说实话一开始没抱太大期望。对我来说核显跑深度学习模型感觉拿自行车上高速 (´・_・`)

但实际跑下来:

  • 文本对话:毫无压力,秒回
  • 语音输入:1s 以内,基本感觉不到延迟
  • 图片问答:也是 1s 以内出结果
  • 视频通话:核显也能跑,画面实时捕获 + 语音流处理

说实话核显的性能表现比我想象中好很多。之前以为语音和图片处理要等好几秒,实际体验基本是秒出。

当然,因为模型本身很小,回答的”智商”确实有限。你问它人生的意义,它可能会给你一些看起来很合理但细想又很空洞的回答。

但关键在于:一个能在核显轻薄本上做实时视频通话的全模态模型,这件事本身就很有意义。


一些主观感受

优点

  • 硬件门槛极低:核显都能跑,几乎等于没有门槛
  • 全模态架构:文本、语音、图像三模态输入,文本 + 流式语音输出,设计完整
  • 搭建简单:跟着步骤半小时到一小时就能跑起来
  • 开源友好:代码风格清晰,全部 PyTorch 原生实现
  • 项目完整度:从训练到推理到 Web UI 一条龙,还有实时视频通话

缺点

  • 智商感人:0.1B 就是 0.1B,别指望它能帮你写代码或做复杂推理
  • 英文为主:虽然支持中英文,但训练数据偏英文,中文效果更弱
  • 语音质量一般:合成语音能听,但距离自然流畅还有差距
  • 视频交互响应速度一般:核显上有轻微延迟,但可用
  • 图片理解薄弱:对非自然图像(海报、二次元等)的理解有限

总的来说优缺点都很鲜明,毕竟 0.1B 的体量摆在那里,能做成这样已经很惊喜了 (`・ω・´)

总结

MiniMind-O 这个项目让我想起一个词——“螺蛳壳里做道场”。

0.1B 的参数规模,硬是把文本、语音、图像三种模态的输入揉到一起,还能输出文本 + 流式语音,在核显轻薄本上跑起来。虽然每个单项拿出来都不算强,但能在一个模型里同时做到这些,本身就是技术上很有意思的尝试。

对于想了解全模态模型的人来说,这是个很好的学习材料。毕竟能亲手在自己电脑上跑一个能看、能听、能说、能聊的模型,本身就是一件挺酷的事情。

另外,我计划后续用 RTX 5060 的 8GB 显存尝试跑一下主模型的训练,如果可行会再发一篇博客分享经验。感兴趣的可以关注一下 ( ´ ▽ ` )ノ

项目地址:https://github.com/jingyaogong/minimind-o

设备环境:AMD Ryzen AI 9 H 365 / 32GB 内存,通过 OCulink 外接 RTX 5060(8GB 显存),拔掉外接后回退至 AMD Radeon 880M 核显