ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MoE、推理模型与多模态:三个维度看懂大模型选型

MoE、推理模型与多模态:三个维度看懂大模型选型 1. 三种“模型”根本不是同一个维度先搞清分类坐标最近我收到不少类似的提问“MoE模型、推理模型和多模态模型到底哪个更好”或者“DeepSeek是不是多模态模型R1是不是MoE”这类问题听起来好像只是问法不准确实际上一查就会发现提问的人把三个完全正交的分类维度搅到了一起。这就像问“篮球运动员、左撇子和戴眼镜的人哪个更厉害”一样——你根本没法比因为分类依据压根不是一回事。先说结论然后我们一层一层拆开讲MoEMixture of Experts混合专家是模型的架构方式解决的是“怎么把参数组织起来”的问题推理模型Reasoning Model是模型的能力形态解决的是“模型会不会先思考再回答”的问题多模态模型Multimodal Model是模型的数据形态解决的是“模型能不能吃图片、音频、视频”的问题。这三个维度可以任意叠加。同一个模型可以既是MoE架构又具备推理能力还是多模态的比如某些最新模型同时满足这三条。单独把其中一个拎出来说成“另一种模型”就会导致后面所有的选型、部署、性能评估全都跑偏。从我个人的习惯来说拿到一个模型我第一件事是去看它的模型卡看三组关键词模型架构里有没有MoE标记、训练过程里有没有强化学习或者思维链阶段、有没有单独的视觉塔或者其他模态编码器。这三项分别对应了上面三个维度只要把这三列信息搞清楚一个模型的“分类坐标”就一目了然了。2. MoE不是模型类型而是模型的“组织方式”2.1 为什么所有参数不会同时参与计算先解决最基础的误解MoE不是一种全新的模型而是Transformer架构内部的一种改造方案核心思路叫稀疏激活。传统稠密模型Dense Model在推理时不管输入是什么所有参数都要被调用一遍。而MoE模型把前馈网络层换成了多个“专家”并列再安置一个路由器根据输入token动态挑选出最合适的少数专家来干活。最常拿来举例的Mixtral 8x7B名字看着像70亿参数乘以8好像总共560亿参数实际上它的总参数量约470亿推理时每个token只激活约130亿参数。对比之下同体量的稠密模型比如Llama-2 70B推理时从头到尾700亿参数都要跑一遍。因此MoE在“同样总参数规模”的前提下推理计算量小得多可以在不大幅增加算力预算的情况下把模型做大。我拿个更贴近日常的类比来解释稠密模型相当于一个小公司不管是处理报价单还是写合同都是全部员工一起上MoE则是家大公司有销售部、法务部、技术部收到一个任务先由前台判断应该交给哪个部门再只让对应部门干活。前台那个判断每秒钟都要做很多次这就是路由器的角色。到了DeepSeek-V3这种超大模型上总参数量是671B但激活参数只有37B左右。也就是说体量看起来非常吓人但推理时真正动用的参数只占总参数的5%到6%这是它能以相对低的单次推理成本运行的根本原因。2.2 路由器的工作方式与负载均衡MoE里的路由器Router其实也是一个神经网络层它的输入是当前token的隐藏状态输出是一组概率分布表示这个token适合交给哪几个专家。实现时通常会取最高的top-1或top-2个专家选2个是精度和开销的相对平衡只选1个可能太“迷信”某一个专家的判断选太多又失去了稀疏激活的意义。很多人没注意的是训练MoE模型时有一个非常关键的细节负载均衡损失Load Balancing Loss。如果路由器总是把token分给少数几个“全能型”专家其他专家就成了摆设模型退化成一个小体量的稠密模型。为了规避这一点训练时会给路由器加额外惩罚鼓励token尽可能均匀地分配给各个专家。但这又带来另一个问题过度均匀也不好因为不同领域的token天然应该倾向不同专家强行平均反而损害效果。优秀模型在这两个目标之间会做动态调整而这个调整本身就是各家技术积累的地方。接下来的一个现实问题是MoE模型那么多专家部署时内存占用算总参数还是激活参数答案是总参数。虽然每次只有几十亿参数在算但模型的权重文件所有专家的参数都在671B的模型用bf16精度存储光权重文件就超过1.2TB。所以很多人说“MoE模型本地部署很轻量”这句话只说对了一半——它轻量的是计算不是存储。2.3 MoE模型的显存计算和推理速度实测感受我实际部署过一段时间的MoE模型这里分享一组直观感受。以Mixtral 8x7B为例bf16权重大概90多GB如果只有一块24GB显存的显卡根本装不下必须做4bit量化量化后大约50GB左右在两张或三张24GB卡上才能跑起来。但值得注意的它推理速度反而可能比Llama-2 70B量化版快不少原因就是前面说的虽然权重都在显存里但每次计算只要少数专家前向传播计算密集度低、耗时相对短。所以如果你只是做API调用不太需要关心MoE的权重存储问题但如果是本地部署就必须接受“省计算不省存储”的现实。我在测试中还发现MoE模型在batch size较小的单请求场景下优势不如高并发场景明显。一旦把多路请求打进来多个请求的路由结果会让不同专家同时被激活硬件利用率就上来了这时MoE的吞吐优势才比较突出。3. 推理模型卖的不是架构是训练链路3.1 思维链被从“技巧”变成了“训练目标”推理模型Reasoning Model这几年很火本质原因是OpenAI o1改变了游戏的玩法以前思维链是提示词工程里的技巧用户需要在提示里写“请逐步思考”模型才会展开推理但生成式模型在逐字生成时结果也不一定能保证每一步都正确。o1的方法则是把“长思维链”直接融入训练过程模型在给出最终答案前会自动生成一段内部的“思考草稿”再依据这些思考过程得出答案。举个例子遇到一道鸡兔同笼的数学题传统LLM会尝试直接把答案吐出来可能看到常见题目就秒回但遇到变体题就容易错。推理模型会先生成一大段内容类似“我们先列出条件……设兔子数为x……根据腿数方程……”再在末尾给出结论。这些前置内容就是模型内部生成的“思维链”通过专门训练让它更可靠而不是简单提示词能稳定触发的。3.2 通过强化学习让模型练出“思考习惯”DeepSeek-R1这个开源推理模型它的原理和训练过程很值得展开讲讲。它没有依赖大量工程师手动写好的“标准思考过程”来微调而是把强化学习用到基础模型上在数学、代码、逻辑等硬问题上设计奖励函数允许模型自己组织语言去试错不断调整生成策略直到系统的确能通过更长的思考提升正确率。最终模型学会了遇到难题时多展开几个步骤、自我纠错、二次验证。这个过程被大家总结成一句非常形象的话“R1的推理能力不是被教出来的是在强化学习的环境里自己长出来的”。因为应用了这种训练方式推理模型在数学、代码debug、逻辑推理类任务上表现远超同参数的普通聊天模型。但注意这里有个隐含代价推理模型生成的内容里多出一大段“思考过程”导致输出token数显著增加推理延迟和成本都跟着飙升哪怕每个token的成本和普通模型一样最终总成本也会贵上不少。我在接API做应用时踩过这样的坑把R1直接用在客服场景用户问一句“账号怎么注销”它也会先自动推理一段“用户这句话的真实意图是什么……我应该提供简洁而有同理心的方案……”白白浪费大量token不说用户体验还被打折扣。后来改成把R1用在一个内部审核服务上让它在后台检查客服话术里有没有误导性表达效果就非常理想。3.3 典型误区推理模型不等于RAG、也不等于Agent关于推理模型我发现两类特别典型的误解。第一类误解是“用了推理模型就可以不用写提示词了”。实际上推理模型仍然非常吃提示词的结构它不会自动知道自己要在什么边界内思考。如果不限定输出格式它会把思考过程全吐给你如果在提示里不告诉它“不用展示过程直接给结论”最终结果可能非常啰嗦。第二类误解是把推理模型和RAG检索增强生成搞混。RAG解决的是“模型知识不够新、不够准”的问题推理模型解决的是“模型不会深入思考”的问题。两者根本不是一回事一个管事实一个管逻辑。实际工程中经常是二者配合使用先用RAG检索出相关文档片段把检索结果交给推理模型让它基于这些材料做多步推理和判断。另外还请大家注意推理模型通常不是独立于架构之外的。DeepSeek-R1本身就是一个MoE模型总参671B/激活37B它的推理能力来自训练链路的调整MoE只是它运行的骨架。你看这就是文章标题说的——三个维度分清楚了就不会再问出“R1到底是MoE模型还是推理模型”这种问题了。4. 多模态真正的难点在对齐不在拼接4.1 从单模态到多模态不是把图片“塞进去”多模态模型要解决的是让模型能接受图片、音频、视频等输入甚至生成这些内容。但很多初学者会有一个误解以为多模态就是把图片转成文字描述再喂给一个纯文本模型。技术上确实有这种pipeline方式但效果天花板很低。现代端到端多模态模型把输入数据映射到共同的表示空间里去。以比较经典的LLaVA架构为例图像首先经过一个预训练好的视觉编码器ViT或SigLIP把图片切分成patch并编码成向量序列然后由一个投影层把视觉向量映射到文本词向量所在的嵌入空间最后和文本token一起送到LLM主体中做自回归生成。这里面的关键不是“图像输入了”这件事而是图像嵌入和文本嵌入是否在同一个空间里“对齐”。举一个容易理解的类比假设一个中国人只会中文一个西班牙人只会西班牙语把两个人都拉到会议室里并不能保证他们能交流必须有翻译或者共同学习过某种共通语境。视觉编码器负责把图像“翻译”成一种向量表达LLM则在这个空间里理解这些向量。训练时通过大量图文对数据让模型学习“看到一张猫的图片”和“输入‘猫’这个词”在嵌入空间里距离足够近。4.2 常见多模态架构的主要流派目前开源社区多模态模型的架构大致可以分成几代我整理了一下特点代表方案对齐方式特点优缺点LLaVA系列CLIP视觉编码器 投影层结构最简单训练速度快容易复现图像细节理解一般BLIP-2 / InstructBLIPQ-Former 查询Transformer用可学习查询向量压缩图像特征对齐效率高参数量小Flamingo风格门控交叉注意力在已有LLM层之间插入视觉注意力模块能处理长视频但实现复杂Qwen-VL系列ViT 交叉注意力部分模型引入MoE多语言支持好图文定位能力强部署体积大显存消耗高GPT-4V / Gemini闭源细节未公开综合能力强不可本地部署只能API调用从实际项目选型的角度看如果你想在本地部署一个小显存的多模态模型目前比较现实的路径是Llava类或者Qwen-VL的小尺寸版本。需要特别提醒的是“16G显存多模态模型推荐”这类热门词经常出现在社区里但16G显存跑参数量在70亿到百亿之间的模型还得考虑视觉编码器额外占掉的显存。视觉编码器本身虽然比LLM小但一个ViT-L/14也要1GB多clip等预训练也是要显存的实际能留给对话模型的空间没有想象中那么多。4.3 多模态评测经常出现的虚标与陷阱多模态领域的评测水分比纯文本模型要大我也得给大家提个醒。很多模型在设计评测样本时踩过数据泄漏的红线某个模型在VQA v2、MMMU这类公开榜单上分数很高但拿一张真实拍摄的、包含复杂光照和遮挡的图去测效果就露馅了。原因在于公开的数据集训练或指令微调时被反复使用模型记住了题目分布而不是真正理解了图像内容。判断一个多模态模型是否靠谱的稳健办法是自己构造一份“私房题目”拍几张手机照片、截图几张界面、录一段短视频音频然后直接丢给模型做理解。看它能不能准确说出图片里商品的品牌logo、上下文的因果细节、视频里的关键事件顺序。如果这些都没问题再去看榜单。另外一个常见误区是有些人以为“只要模型支持图片输入就能做目标检测”。多模态LLM和YOLO这类目标检测模型是两码事LLM做的是图像描述、视觉问答、OCR识别它回答“图里有什么”是一段文字描述不会给你精确的边界框坐标。即使一些模型支持画框精度和特意优化的检测模型依然有很大距离。你在选型时如果要用“框出图片里的所有缺陷区域”就该上目标检测模型而不是靠多模态LLM硬扛。5. 选型实战从目标出发反推该看哪个维度5.1 先把需求拆成三个独立问题结合前面讲的三个正交维度在实际选模型时我建议先不要急着问“哪个模型最强”而是把需求拆成三个问题一个一个考任务需要理解什么内容只有文本还是有图片、音频、视频这个决定了要不要选多模态模型以及选哪种模态对齐方案。任务需要什么层次的思考是简单抽取信息、泛泛聊天还是需要数学推理、代码纠错、多步骤分析这个决定了要不要上推理模型。部署资源的硬约束是什么本地显存、GPU数量是多少API预算能承受多高的千token成本推理时间希望控制在多少秒内这个决定了要不要选MoE架构来降低单次计算开销。这三个问题分别对应多模态、推理模型、MoE三个维度把它们组合起来其实就能得出一个很明确的选型方向。比如你的需求是“在本地16G显存部署一个能看截图的助手需要对截图里的信息做简单归纳”——那么你不需要推理模型归纳属于轻推理需要多模态模型要能看图用不用MoE不太重要更重要的是找一个70亿参数以内、视觉编码器不要太笨重的多模态模型。5.2 一张选型对照表基于我测试过的开源模型和API服务给一个当前阶段的实际对照大家可以拿来当参考使用场景推荐倾向理由日常聊天、文案写作、摘要提取普通稠密模型API如GPT-4o mini、Qwen-turbo便宜、响应快不需要长思维链数学解题、算法题、代码review推理模型API如o-series、DeepSeek-R1多步推理能力大幅领先普通模型本地部署、显存有限但想玩大模型MoE架构小模型如Mixtral 8x7B量化版、Qwen MoE小体量版参数总量大但单次激活少速度相对可以接受图片理解、截图解析、图表问答多模态模型如Qwen-VL、LLaVA、GPT-4V系列能直接看图避免OCR文本模型两段式处理视频理解/长时序视觉分析闭源API的视觉模型或专用视频理解模型开源本地方案在长视频上的显存和时间要求偏高高并发批量文本处理MoE模型服务稀疏激活共享专家吞吐量明显优于同规模稠密模型5.3 部署中几个常被忽略的细节部署的时候有几个细节我建议你提前留意避免踩坑。第一个是关于MoE的并发策略。如果你的MoE模型部署在自建推理引擎里比如vLLM请务必开启--enable-prefix-caching和合适的调度配置并且尽量把并发请求拉起来跑。MoE的优势在低批量时根本发挥不出来只有并发请求多了各专家负载相对均衡GPU利用率和吞吐才会明显好看。第二个是推理模型的时间开销。很多人第一次接入推理模型API时会被“吓到”一个简单问题要等二十多秒才回复。这不是网络问题是模型在一段时间内生成思维链。因此在实际产品里为了不劣化用户感知建议把推理模型放到后端异步任务里前端先返回“正在处理中”等完整结果出来再推送。如果硬要同步等用户大概率认为服务挂了。第三个是多模态模型的图像输入尺寸问题。同样一张图缩放成224x224输入和保持原始分辨率输入效果差距可能非常大。很多开源模型对输入图像有预处理流程会把长图裁剪成多个片段这样能保留局部细节。如果你发现模型“看不清”图中的小字先检查你是在用原图还是被压缩过的图再检查模型是否支持切块预处理。5.4 本地部署的真实硬件预算最后给一份粗略的硬件预算经验对应不同体量的模型。注意精度选择对显存占用的影响是一个约数实际请按具体模型卡确认70亿参数稠密模型bf16大约需要16GB显存4bit量化后大约6GB左右单张24GB卡可以舒服地跑起来。130亿参数模型bf16约26GB4bit量化后约10GB单张16G卡勉强可行24G卡余量充足。470亿参数的MoE模型如Mixtral 8x7Bbf16权重约90GB4bit约50GB单卡基本无望通常需要两张或四张卡或者跨内存加速方案。671B量级的MoE模型官方演示时经常通过多机多卡推理本地个人实测基本需要做较狠的量化并用双卡甚至更多卡才能愉快对话。如果你只有16G显存又特别想试MoE可以优先考虑参数量更小、设计更新的MoE模型不要一上来就冲着大专家数量去否则模型可能根本装不进显存反而没法用。模型卡上的architectures字段会写是不是MixtralForCausalLM这类MoE标记同时也会标明总参数和激活参数建议养成翻模型卡的习惯。我在实际部署过程中还发现一个通用经验显存不够的另一个解不是换小模型而是调低上下文长度。MoE模型哪怕权重能装下如果上下文拉得非常长KV Cache同样会占掉惊人显存。对于16G显存的用户一个安全做法是先把max_model_len设成4096或8192确认稳定后再逐步往上探。不要一上来就追求128K上下文这个坑我踩过高峰期直接OOM崩溃日志里连堆栈都来不及打印。5.5 用一句话总结选型心法多个维度叠加选型的时候千万不要被“参数越大越好”带跑。我自己比较稳妥的判断顺序是先看需求复杂度决定要不要推理模型再看数据类型决定要不要多模态最后看部署资源决定要不要上MoE以及上多大规模的MoE。这样三个维度各管各的组合出来才是真正适合当前项目的方案而不至于被营销话术牵着走。作为最后的实操小贴士如果你在纠结某个模型的具体分类标签可以直接在它的模型徽标页搜adapterimage processormixture of experts、reasoning这些关键词出现哪个就说明它具备哪个维度的属性。这个方法我几乎每接触一个新模型都会用一遍比看博主翻译的新闻稿可靠多了。
返回列表