- 人工智能
- 大模型
- 基础模型
- 多模态
【免费下载链接】Qwen2.5-Omni-3B-Thinker-bf16
Qwen2.5-Omni-3B-Thinker-bf16是 Qwen2.5-Omni-3B 全模态模型中 Thinker(语义理解主干)的 MLX 格式转换版,以 bfloat16 未量化形式保存。它包含一个36 层 Transformer 文本主干(2048 隐藏维度)、GQA 分组查询注意力(16 个查询头共享 2 个 KV 头)、RoPE 旋转位置编码(rope_theta = 1,000,000,支持 32K 上下文),以及一座 Whisper 结构的 32 层音频编码器。下面结合 config.json 逐项拆解,一篇文章看懂全部核心超参数。
一、仓库定位:只装"主干"的 MLX 编码器 🎯
先说清楚它是什么、不是什么,避免新手踩坑:
- ✅ 它是 Qwen2.5-Omni-3B 的 Thinker 部分:Qwen2 语言模型主干(36 × 2048)+ 音频塔;
- ❌不是聊天模型:不含 LM head、视觉塔、Talker 和 token2wav,不能直接拿来对话,而是作为 AuK 项目的语义编码器,输出隐藏状态(hidden states);
- 📦 bfloat16 未量化,完整权重约7.45 GB(约 37 亿参数);
- 权重集中在 encoder.safetensors,键前缀为
thinker.model.*(文本主干)与thinker.audio_tower.*(音频塔),音频卷积权重采用 MLX 的 (O, K, I) 内存布局; - 分词器、chat 模板、预处理器文件从原版完整保留、未做改动。
| 文件 | 作用 |
|---|---|
| config.json | 模型配置:text_config / audio_config / 多模态 token id |
| encoder.safetensors | 文本主干 + 音频塔权重(safetensors 格式) |
| vocab.json / merges.txt | 词表与 BPE 合并规则(约 15.2 万词表) |
| added_tokens.json / special_tokens_map.json | 特殊 token:<\|AUDIO\|>、<\|audio_bos\|>等 |
| preprocessor_config.json | 音频预处理(WhisperFeatureExtractor) |
| chat_template.json / tokenizer_config.json | 原版聊天模板与分词配置 |
| LICENSE / NOTICE | 研究许可协议与署名声明 |
二、text_config 核心参数速览 🔍
以下数据全部来自 config.json 的text_config段:
| 参数 | 值 | 含义 |
|---|---|---|
num_hidden_layers | 36 | Transformer 层数 |
hidden_size | 2048 | 隐藏层维度 |
intermediate_size | 11008 | FFN 中间维度(约为隐藏维的 5.4 倍) |
num_attention_heads | 16 | 查询(Query)注意力头数 |
num_key_value_heads | 2 | KV 注意力头数(GQA) |
rope_theta | 1000000.0 | RoPE 旋转编码基础频率 |
rms_norm_eps | 1e-06 | RMSNorm 数值稳定项 |
vocab_size | 151936 | 词表大小 |
max_position_embeddings | 32768 | 最大上下文长度(32K) |
36 层 × 2048:3B 级文本主干的"骨架"
36 层结构相同的 Transformer Block 堆叠而成,每层遵循 Qwen2 标准配方:RMSNorm → GQA 自注意力 → 残差连接 → RMSNorm → SwiGLU FFN → 残差连接。
- 隐藏维度 2048 ÷ 16 个查询头 =每个注意力头维度 128,是该量级模型的常见取值;
- FFN 中间维度 11008,约为隐藏维度的 5.4 倍,比传统的 4 倍更"肥",为文本理解保留了更大容量;
- 全模型(文本主干 + 音频塔)bf16 下约 7.45 GB,换算约 37 亿参数,正好对应 "3B" 这个名字。
GQA 分组查询注意力:16 个 Q 头,只用 2 个 KV 头
num_attention_heads = 16而num_key_value_heads = 2,意味着这是一个8:1 的 GQA(Grouped Query Attention)结构:
- 标准 MHA 中 Q、K、V 各用 16 个头;这里每 8 个查询头共享一组 K/V 头;
- 核心收益:解码时的KV 缓存缩小到 1/8(降低 87.5%),显存占用大幅下降、生成速度更快,同时质量损失极小;
- 这是 Qwen2 系列的默认配置,也是 3B 小模型能在消费级硬件上高效推理的关键之一。
RoPE 旋转位置编码:rope_theta = 1,000,000 与 32K 上下文
- RoPE通过旋转矩阵把位置信息编码进 Q/K 向量,具备相对位置特性,外推能力优于绝对位置编码;
rope_theta = 1,000000.0明显高于常见的 10000(GPT-NeoX 风格取值)——theta 越大,低频分量衰减越慢,长上下文保持力越强;max_position_embeddings = 32768,即最长支持32K token上下文;rms_norm_eps = 1e-06是 RMSNorm 的归一化稳定项,属常规取值,调参时无需关注。
三、音频塔:Whisper 结构的 32 层编码器 🎧
Thinker 能"听懂"音频靠的是 config.json 中audio_config定义的音频塔:
| 参数 | 值 | 含义 |
|---|---|---|
d_model | 1280 | 音频编码器隐藏维度 |
encoder_layers | 32 | 音频编码器层数 |
encoder_attention_heads | 20 | 注意力头数 |
encoder_ffn_dim | 5120 | FFN 中间维度 |
num_mel_bins | 128 | Mel 频谱 bins 数 |
max_source_positions | 1500 | 最长可处理帧数 |
n_window | 100 | 窗口大小(100 帧 ≈ 1 秒) |
output_dim | 2048 | 输出投影到文本主干的隐藏维度 |
activation_function | gelu | 激活函数 |
关键设计:音频塔的output_dim = 2048正好对齐文本主干的hidden_size,音频特征经投影后即可无缝混入文本 token 序列。
预处理参数见 preprocessor_config.json:
- 16 kHz 采样率,400 点 FFT → 128 维 Mel 频谱(
WhisperFeatureExtractor); chunk_length = 300:按 30 秒一块切分(300 帧 × 0.1 秒);n_samples = 4800000:单次最多处理 5 分钟音频。
音频在词表中以<\|AUDIO\|>(151646)占位,配合起始/结束符<\|audio_bos\|>(151647)、<\|audio_eos\|>(151648),映射关系见 added_tokens.json 与 config.json。
四、转换精度:与官方参考实现的 Parity 对照 ✅
这个仓库是 MLX 格式转换产物,README 中给出了与 transformers 4.57.1 官方参考实现(fp32)的逐项对照(见 README.md):
| 对比项 | 相对误差(relL2) |
|---|---|
| token ids | 完全一致 |
| Whisper 特征 | 1.5e-6 |
| 音频塔输出 | 3.9e-6 |
| 最后隐藏状态 | 2.2e-5 |
| AuK 36 层融合条件 | 3.8e-6 |
误差都在 1e-5 量级以内,说明 bf16 转换在数值上是高度保真的;bf16 / 8-bit / 4-bit 各档位也均通过了 AuK 的预注册质量门控。
五、获取与使用建议 📥
git clone https://gitcode.com/hf_mirrors/mlx-community/Qwen2.5-Omni-3B-Thinker-bf16使用要点(新手向):
- 它输出隐藏状态,不是文本:定位是 AuK(mlx-auk-swift)的语义编码器,不要把它当聊天模型加载;
- 权重文件 encoder.safetensors 中的音频卷积权重是 MLX 专属 (O, K, I) 布局,与 HF 格式不能直接互换;
- 分词侧文件(
vocab.json、merges.txt、tokenizer_config.json)与原版一致,可直接用于音频/文本输入的 token 化。
六、许可注意 ⚠️
本仓库受Qwen RESEARCH LICENSE约束:仅限研究或评测用途、非商业使用,商用需向阿里云申请许可。完整条款见 LICENSE,署名声明见 NOTICE。
小结:Qwen2.5-Omni-3B-Thinker-bf16 用 36 层 Transformer 构成 2048 维文本主干,通过 8:1 的 GQA 把 KV 缓存压缩到 1/8,再配合 rope_theta = 1,000,000 的 RoPE 支撑 32K 上下文——这是一份"小而精"的多模态理解主干的超参数范本。读懂它的 config.json,你就掌握了 Qwen2 系列文本主干的设计语言。
- 人工智能
- 大模型
- 基础模型
- 多模态
【免费下载链接】Qwen2.5-Omni-3B-Thinker-bf16
相关推荐
K2-Horizon-3.7B-bf16架构深度剖析:36层Decoder、GQA注意力与RoPE全解读
K2 Horizon 3.7B bf16架构深度剖析:36层Decoder、GQA注意力与RoPE全解读 这篇文章带你深度解读 K2 Horizon 3.7B
揭秘K2-Horizon-7B-bf16架构:36层Decoder、GQA注意力与RoPE(theta=10M)如何实现512K超长上下文
揭秘K2 Horizon 7B bf16架构:36层Decoder、GQA注意力与RoPE theta=10M 如何实现512K超长上下文 K2 Horizon
sapiens2-pointmap-0.4b-bf16 的 config.json 全解读:24层 ViT 主干、GQA 注意力头与点图 Head 关键参数
sapiens2 pointmap 0.4b bf16 的 config.json 全解读:24层 ViT 主干、GQA 注意力头与点图 Head 关键参数 s
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考