首页 / 资讯中心 / 文章详情

d1-omni-600M架构拆解:LFM2卷积-注意力混合Trunk如何共享三种模态权重?

d1-omni-600M架构拆解:LFM2卷积-注意力混合Trunk如何共享三种模态权重? ★ FEATURED ARTICLE
【免费下载链接】d1-omni-600M项目地址https://ai.gitcode.com/hf_mirrors/LiquidAI/d1-omni-600M点击查看免费下载d1-omni-600M 是 Liquid AI 开源的 600M 参数多模态决策模型基于 LFM2.5-Encoder-350M 骨干把文本、图像、音频三种模态送进同一个共享 Trunk单次前向传播即可对命名问题输出类型化答案——零输出 token答案直接读自模型在选项上的概率分布不生成、不解析。本文拆解它的完整架构。d1-omni-600M 是什么:不写文字的系统1决策模型d1-omni-600M 不是聊天模型不产出任何文字。你给它一个状态state文本或 JSON可附带图像或语音片段和一组命名问题它返回带类型的结构化答案问题类型criteria返回内容noul是/否可选的 true/false 描述noulP(yes)choice多选一{选项名: 描述}选中项、置信度、各选项概率score2–10 级评分等级描述列表期望等级、置信度、概率、图例一次调用即可同时回答多个命名问题且媒体只需编码一次。典型用途路由分诊、内容审核、意图/话题分类、语音指令路由、重排序、agent 护栏和视觉检查。五大模块:587M 参数如何分配整个模型只有五个模块核心思想是小编码器 大共享 Trunk模块参数职责源码TrunkLFM2.5-Encoder-350M 骨干381M与决策头合计三种模态共享的编码器encoder.pyDecisionHead2 层 transformer 共享 MLP在 marker 位置打分不生成encoder.pyVisionSigLIP2 视觉塔 投影器94M图像 → 前缀嵌入vision.pyAudio17 层 FastConformer112M语音 → 前缀嵌入audio.py合计587M边缘设备可部署—全局超参数集中在 config.json 中上下文长度 16,384 token、词表 65,536、投影器隐层 2048、决策头 2 层。关键机制:三种模态如何共享同一套 Trunk 权重这是 d1-omni-600M 最巧妙的地方。文本、图像、音频调用运行完全相同的权重差异只在于输入如何组织。媒体作为前缀嵌入进入 Trunk无论图像还是语音先由各自编码器变成一串嵌入向量再拼接在文本嵌入前面作为序列前缀进入 Trunk见 modeling_d1.py 的_forward纯文本请求无前缀整个 16,384 上下文都给文本图像请求文本预算压缩为 896 token训练时的设定音频请求文本预算为 15,360 token音频最长 30 秒。单向注意力:媒体读不到文本文本读一切Trunk 的前向传播构造了一个方向性 maskencoder.py前缀位置媒体只能 attend 前缀自身且中心 3-tap 卷积通过keep_right被截断——媒体嵌入是纯媒体的函数不会被后面的文本污染文本位置可读全部媒体前缀 所有文本——所以语义整合发生在文本侧Trunk 是双向的LFM2 块被改造成无因果 mask、卷积居中与原版单向 LFM2 不同。这意味着无论传入的是两张猫图 问题、30 秒语音 问题还是纯文本 问题Trunk 里没有任何一条权重是为某一模态专属的。94M 视觉塔和 112M 音频塔只负责翻译理解与决策全部由共享的 381M 完成——这正是600M 参数就能三模态的根本原因。Trunk 内部:卷积-注意力混合块如何排布layer_types在 config.json 中显式定义16 层 10 层短卷积 6 层 GQA 注意力conv, conv, attn, conv, conv, attn, conv, conv, attn, conv, attn, conv, attn, conv, attn, convShortConv:卷积层替代一半注意力每个卷积块ShortConvencoder.py内部in_proj把输入切成 b / c / u 三分量门控结构b*u过一个居中的 3-tap depthwise 卷积conv_L_cache3手工展开为三组加权求和避免 padding 引入方向偏差c * 卷积结果再经out_proj输出。卷积只负责局部模式注意力层负责长程依赖二者交替——这是 LFM2 家族低延迟骨干的招牌配方。注意力层:GQA RoPE per-head RMSNorm6 个注意力层encoder.py采用16 个 Q 头 / 8 个 KV 头GQAKV 显存减半、head_dim 64、RoPErope_theta1e6、Q/K 各做 per-head RMSNorm。FFN 是标准 SwiGLU2/3 × 6656 ≈ 4437隐层。每层结构为 pre-norm 双残差operator → MLP。图像通路:SigLIP2 塔 智能分块 2x2 像素重排视觉模块vision.py约 94M的完整管线步骤说明智能 resize 分块大图切成最多10 个 512px tile 一张缩略图小图整读沿用 LFM2-VL 的 tiling 策略SigLIP2 视觉塔12 层、768 维、patch 16px每张裁剪最多 256 patch投影器2×2 pixel-unshuffle把 4 个相邻 patch 合并成 1 个 tokentoken 数 ÷4再经两层 GELU MLP 升到 Trunk 宽度 1024多张图像按给定顺序级联成同一个前缀因此一个状态 若干图 多问题可以在单次前向里完成。音频通路:FastConformer 把 30 秒语音压成时间序列音频模块audio.py约 112M源自 LFM2-Audio / NVIDIA Canary 系谱Mel 前端16 kHz 单声道 → 预加重 → STFTn_fft512, hop160即每 10ms 一帧→ Slaney 128 维 log-mel → 逐特征标准化8 倍下采样卷积3×3 stride-2 卷积堆叠后接线性层512 维 d_model17 层 Conformer每层含相对位置注意力Transformer-XL 风格 u/v 偏置 GLU 门控 depthwise 卷积模块 双 FFNAdapter Residual512 → 1024 的 MLP 适配器对齐到 Trunk 宽度再加一个与 Trunk 联训的残差校正层。最终产物每 80ms 语音对应 1 个前缀嵌入——30 秒语音即 375 个 token与文本 token 共用同一个 16,384 位置预算。零输出 token:DecisionHead 如何直接读出答案问题被渲染成固定模板prompt.pybos state state q 问题指令 opt |mask| 选项1 /opt opt |mask| 选项2 /opt … decide每个选项里埋了一个|mask|marker 标记其序列位置被单独记录。DecisionHeadencoder.py随后加问题类型嵌入choice / score / noul 三种之一跑 2 层 pre-norm transformer 只融合文本位置gather出每个 marker 位置的隐状态过一个所有选项共享的 MLP 打分器得到 logit对该问题的全部选项 logit 做 softmax——这就是答案usage.output_tokens恒为 0。文本通路还会按选项数量套用 config.json 里的分类型温度做概率校准如choice:2用 1.75、noul:2用 1.67图像和音频答案则是训练时的原始 softmax。关键参数速查与使用建议参数值位置上下文长度16,384 tokenconfig.json图像时文本预算896 tokenimage_text_length音频时长上限30 秒16kHz 单声道audio.py图像分块上限10 个 512px tile 缩略图vision.py词表大小65,536text_config.vocab_size使用建议源自 README.md依赖transformers5.15模型自带代码需用trust_remote_codeTrue加载精度选择模型以 float32 训练。GPU 上用 float16 更快且答案与 float32 完全一致文本 243 / 图像 214 / 音频 416 条全部一致避免 bfloat160.8% 文本、1.7% 音频样本会改变 top 答案一个请求只能带图像或音频二者同传会抛ValueError音频能力面向英语场景训练话语类型、话题、说话人意图中文语音不在训练分布内在 Decision Index 0.2.1 上587M 的 d1-omni-600M 拿到 15.95 分其中 Retrieval 子项达 35.0是同尺寸段唯一的多模态选手。结语:一套 Trunk,三模决策d1-omni-600M 的架构精髓可以浓缩成三句话卷积-注意力混合 Trunk10 conv 6 GQA双向编码局部模式靠卷积、长程语义靠注意力延迟与精度兼得模态差异被隔离在 94M / 112M 的廉价翻译器里381M 的理解与决策权重三种模态完全共享答案从 marker 位置的隐状态一次读出零生成 token天然适合高吞吐的边缘决策场景。如果你想进一步阅读源码建议按 modeling_d1.pyAPI 与前向总装→ encoder.pyTrunk 与决策头→ vision.py / audio.py两个模态前端→ prompt.py问题模板与答案解码的顺序五份文件加起来不过千行是理解多模态共享骨干的极佳范本。赞分享【免费下载链接】d1-omni-600M项目地址https://ai.gitcode.com/hf_mirrors/LiquidAI/d1-omni-600M点击查看免费下载相关推荐拆解 Motus 的 MoT 架构三大专家如何共享一次注意力完成三模态推理拆解 Motus 的 MoT 架构三大专家如何共享一次注意力完成三模态推理 Motus 是一个统一潜动作世界模型Unified Latent Action拆解Liquid架构卷积注意力混合设计如何让LFM2.5-1.2B-Instruct-5bit领跑端侧推理拆解Liquid架构卷积注意力混合设计如何让LFM2.5 1.2B Instruct 5bit领跑端侧推理 LFM2.5 1.2B Instruct 5biMAX Pipelines 的 LFM2 架构支持混合全注意力 短卷积解码器实现解析MAX Pipelines 的 LFM2 架构支持混合全注意力 短卷积解码器实现解析 导读 本文围绕 MAX 推理框架Modular Platform编程语言编译器标准库语言运行时人工智能大模型模型推理服务深度学习算子库高性能计算上一篇yoinks终端里下载视频粘贴链接、选个清晰度30 秒拿到文件下一篇go-gin-example5G应用低延迟API服务设计与实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站