Omni 开发文档
Omni — 把 MiniMind / MiniMind-V / MiniMind-O 三套代码融合成一个按模态分层(文本 / 视觉 / 全模态)的训练 + 推理框架。面向学习与面试的模块化开发文档。
仓库结构
docs/ ↔ src/
├── architecture/ # 概念总览(入口,非代码模块)
├── core/ ↔ src/core/ 纯 Transformer 组件
├── models/ ↔ src/models/ lm / vlm / vam 模型拼装
├── multimodal/ ↔ src/encoders/ + src/projectors/ 多模态编码与投影
├── training/ ↔ src/dataset/ + src/trainers/ + src/utils/ 训练相关
├── serve/ ↔ src/serve/ 实时语音会话
└── interview/ # 面试速查(学习辅助)
文档导航
架构(概念入口)
| 文档 | 说明 |
|---|---|
| 架构总览 | 能力分层设计、模型能力矩阵、前向数据流、训练入口、关键设计取舍 |
core/(基础组件)
| 文档 | 说明 |
|---|---|
| 组件索引 | 与模态无关的纯 Transformer 组件总览 |
| RMSNorm | RMSNorm 实现与数值技巧 |
| RoPE | 旋转位置编码(含 YaRN)、repeat_kv |
| Attention | 带 QK-Norm + GQA 的注意力 |
| MLP / MoE | SwiGLU FFN 与 MoE 前馈 |
| Block | Pre-Norm Transformer 块、MoE 可插拔 |
models/(模型拼装)
| 文档 | 说明 |
|---|---|
| 模型索引 | lm / vlm / vam 三子包拼装、继承链、共享主干 |
| LM | 纯文本主干 LM + LMForCausalLM |
| VLM | 文本 + 图像(SigLIP 编码器 + 视觉投影) |
| VAM | 文本 + 图像 + 语音,TalkerModule 双 head |
multimodal/(多模态)
| 文档 | 说明 |
|---|---|
| 多模态索引 | 编码器 + 投影器、模态对齐范式 |
training/(训练)
serve/(实时语音会话)
| 文档 | 说明 |
|---|---|
| 服务索引 | SileroVAD / RealtimeSession 端到端语音链路 |
面试速查
| 文档 | 说明 |
|---|---|
| 面试准备 | 高频问题 + 一句话答法,按主题组织 |
类名
| 类 | 说明 |
|---|---|
LM |
纯文本主干 |
LMForCausalLM |
文本模型(含 lm_head + 生成) |
LMConfig |
文本模型配置 |
VLM |
文本 + 视觉多模态 |
VAM |
全模态(文本 + 视觉 + 语音) |
VAMConfig |
全模态配置 |
model_type = "omni" |
LM 架构 ID |
model_type = "omni-v" |
VLM 架构 ID |
model_type = "omni-o" |
VAM 架构 ID |
包结构(已扁平化,无 omni 中间层):
src/
├── core/ # 纯组件:norm / rope / attention / mlp / block
├── models/ # lm / vlm / vam 三个子包(config + model)
├── dataset/ # 每类一个文件的数据集
├── encoders/ # vision / audio 编码器
├── projectors/ # 视觉/音频桥接层
├── serve/ # 实时语音会话
├── trainers/ # lm / vlm / vam 训练脚本
└── utils/ # training / distributed / checkpoint / multimodal