这两年要说 AI 圈哪个方向最热闹多模态大模型绝对排得上号。图像、视频、音频、文档一股脑往语言模型里塞一个模型既能聊天又能看图还能读懂表格这类模型也被业界称为视觉语言模型VLM或者“多模态大模型”。而“SOTA”这个词几乎天天出现在各大开源项目的 README 里——State of the Art翻译过来就是“当前最优”意思是这模型在某个或某几个榜单上跑到了前列。写这篇汇总的起因很简单我最近在给团队做技术选型翻遍了开源社区里主流的 13 个多模态大模型发现各个项目的 README 都很“自嗨”但横向对比的信息却特别散。今天这篇就把这些模型挨个拆开说清楚它们的架构思路、适合干什么、论文和代码去哪找以及真正落地时容易踩的坑。不管你是做 OCR、做视频理解、做 Agent还是单纯想跑通一个最新的 VLM这篇应该都能帮你省下不少时间。1. 先搞清楚什么才算“SOTA多模态大模型”1.1 多模态大模型到底解决什么问题要说清楚 SOTA得先理解这类模型在解决什么。传统 CV 模型和 NLP 模型是分家的图像分类归图像分类文本生成归文本生成。多模态大模型干的事是把两者硬生生捏在一起让模型同时理解像素和信息。它不再只是“看图说话”而是能根据一张截图推理、能数清楚图里有多少个苹果、能看一段视频后总结发生了什么甚至能操作电脑界面完成一个任务。从技术架构上看绝大多数开源多模态大模型遵循一个通用套路视觉编码器 连接模块 大语言模型。视觉编码器负责把图片切成 patch 并转成向量大语言模型负责逻辑推理和文本生成中间的连接模块则负责两种表示之间的“翻译”。区别主要在连接模块的设计上有的用简单的 MLP 投影层有的用 Q-Former 这类注意力机制有的是直接改造注意力层让视觉 token 和文本 token 深度融合。搞懂这条主线后面看任何模型都会很快。1.2 SOTA的判定标准与常见评测集所谓 SOTA不是一个自封的头衔而是靠榜单刷出来的。目前多模态领域比较公认的评测集有这么几个方向通用图文理解看 MMMU涵盖大学各学科题目、MMBench中英文双语、MM-Vet偏向医生诊断式的细粒度分析OCR 和文档理解看 OCRBench、DocVQA数学推理看 MathVista视频理解看 Video-MME。一个模型如果能在这些榜单中多个项目上同时排名靠前才有资格说自己接近 SOTA。但这里我要提醒一句榜单分数的含金量取决于评测集是否被“污染”。很多模型发布时公布的是在训练集上反复调出来的最高分换个测试集效果立刻拉胯。所以我现在看模型除了看论文里的表格更习惯自己去 COCO、DocVQA 这类真实任务上跑一遍眼不见不为实。1.3 开源与闭源的差距到底还有多大放在两年前开源多模态模型和闭源之间的差距像隔着一条河到了 2024 年下半年这个差距已经缩小到可以掰手腕了。拿 InternVL3 和 Qwen2.5-VL 来说在多个榜单上已经能和不少商业闭源模型你追我赶甚至在某些细分项上反超。当然闭源模型在复杂指令遵循、长视频理解、少样本学习这些“体感”能力上仍有优势但开源模型的迭代速度实在太快了基本三个月就换一波榜首。这就带来一个现实问题选开源模型时别太执着于“当前榜单谁第一”而要看“这个模型在你自己的数据上跑出来什么效果”。所谓 SOTA是动态的是服务于业务目标的。2. 13个开源多模态模型逐个拆解2.1 综合能力最接近“SOTA”的三巨头第一个要说的是 Qwen2.5-VL阿里的 Qwen 团队出品。这个系列延续了 Qwen2-VL 的动态分辨率方案支持把任意尺寸的图片按 token 预算自适应切分最高能处理 1280×1280 的图还额外支持了 OCR、文档解析、视频理解甚至能当 Agent 用。参数量从 2B 到 72B 都有覆盖中文效果在开源模型里属于第一档。论文标题是《Qwen2.5-VL Technical Report》代码在 GitHub 搜 QwenLM/Qwen2.5-VL 就能找到Hugging Face 上也直接能下载权重。我给它的定位是“省心之选”如果你不想折腾直接拿它做基座文档理解、截图问答、多轮对话基本都能覆盖。第二个是 InternVL3上海 AI Lab 出品。这个系列从 InternVL 一代走到三代技术路线很清晰早期是把视觉模型和语言模型分开预训练再拼接到 InternVL3 已经是原生多模态预训练加后期对话训练的完整方案支持图像、多图像、视频、3D 理解对数学推理和复杂指令的把握也很强。它的参数量从 1B 到 38B 都有GitHub 仓库是 OpenGVLab/InternVL论文标题大致可以搜 “InternVL3: Exploring Advanced Training and Test-Time Recipes for Open-Source Multimodal Models”。我在实际测试里最看重它对高分辨率图片和小目标物体的细节保留能力这一点在文档类任务上优势很明显。第三个是 LLaVA-OneVision来自 LLaVA 系列的最新迭代。LLaVA 是多模态开源模型里的“教科书”级项目它最大的贡献是把连接模块简化到了极致用一层 MLP 就把视觉特征映射进语言模型训练流程也极其透明非常适合研究者看懂原理、做二次开发。OneVision 版本则把图像、多图像、视频三个场景统一到了一个架构里参数量覆盖 0.5B、7B、72BGitHub 仓库是 LLaVA-VL/LLaVA-NeXT。相比前两个LLaVA 的单图综合能力不是最强但它的代码可读性和工程可扩展性是最好的你想往里面加模块、改损失函数选它准没错。2.2 特色路线选手各有各的看家本领CogVLM2 是智谱 AI 开源的视觉语言模型一个很突出的特点是把视觉特征以“深度融合”的方式注入语言模型而不是简单地拼在文本前面。这种设计让它在 OCR、文档理解、屏幕截图识别这些对细节要求极高的场景表现不错还提供了专门的视频理解版本 CogVLM2-Video。参数量 19B体量不小GitHub 仓库是 THUDM/CogVLM2。我的使用感受是在文档版面还原、表格结构识别上它的稳定性比很多同体量模型都要好。DeepSeek-VL2 来自深度求索最大的亮点是采用了 MoE混合专家架构激活参数远小于总参数量推理成本比同等级的稠密模型低不少。它的论文标题是《DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding》GitHub 仓库是 deepseek-ai/DeepSeek-VL2。如果你要做大规模线上推理、对单卡显存有严格限制又想保留多模态能力这个模型是值得优先考虑的。我个人很喜欢它的论文排版训练数据配比、评测细节写得清清楚楚适合当学习材料。mPLUG-Owl3 来自阿里达摩院主打的是超低延迟和高帧率的视频流理解。它设计了一个 Hyper Attention 模块能让模型在视频流中做快速跳帧和信息融合非常适合做实时交互、具身智能这类追求响应速度的场景。GitHub 仓库是 X-PLUG/mPLUG-Owl论文对应 mPLUG-Owl 系列的第三篇。如果你不只是看静态图而是要做视频流式的图像输入这个模型比通用 VLM 更对口。2.3 现代多模态架构的“基石”模型BLIP-2 和 InstructBLIP 都出自 Salesforce 团队。BLIP-2 提出了 Q-Former 结构用可学习的 Query 向量去“查询”冻结的图像编码器特征再把结果送给冻结的大语言模型做到以极低的训练成本对齐视觉和语言空间。InstructBLIP 在此基础上引入指令微调让模型能按用户指令完成不同形式的视觉问答。两个模型的代码都在 salesforce/LAVIS 仓库里论文分别是《BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models》和《InstructBLIP: Towards General-purpose Vision-language Models with Instruction Tuning》。虽然它们现在不算 SOTA 了但 Q-Former 的思想几乎渗透到后来所有多模态模型里值得深入研究。MiniGPT-4 是 KAUST 的工作思路比 BLIP-2 更粗暴直接用一层投影层把 ViT 视觉编码器的输出映射到冻结的 Vicuna 语言模型里。它证明了即使只训练极少数参数也能让模型拥有多模态对话能力。代码仓库是 Vision-CAIR/MiniGPT-4论文是《MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models》。这个项目对学习和入门非常友好单卡也能玩很多人的多模态模型初体验就是从它开始的。2.4 小而美与生态玩家Phi-3-vision 是微软推出的 42 亿参数多模态模型主打的是“小模型也能干活”。它支持 128K 上下文OCR 能力在同尺寸模型里相当突出可以直接部署到手机或边缘设备上。权重在 Hugging Face 上搜索 microsoft/Phi-3-vision-128k-instruct 就能找到相关教程在 microsoft/Phi-3CookBook 仓库里。它的短板是复杂推理能力不如大模型适合做端侧 OCR、扫码识别这类单项任务。Idefics2 是 Hugging Face 团队基于 Mistral 底座训练的开源多模态模型亮点是与 transformers 库的集成度极高装好库就能直接跑几乎没有额外配置成本。它支持文档、图表、多图像推理很适合想快速验证想法的人。模型权重在 Hugging Face 搜 HuggingFaceM4/idefics2-8b论文可以找《What matters when building vision-language models?》。Yi-VL 是零一万物的开源多模态模型基于 Yi 系列底座训练中英双语理解能力均衡中文能力在开源模型里属于可靠一档。代码在 01-ai/Yi 仓库里。如果你的业务是纯中文场景对英文支持要求不高Yi-VL 是一个低门槛选择。Llama 3.2 Vision 是 Meta 推出的开源多模态模型提供 11B 和 90B 两个规格和 Llama 生态无缝衔接支持图像描述、视觉问答、文档理解。代码在 meta-llama/llama-models 仓库但权重需要去 Meta 官网申请下载。它最大的优势是生态完整周边工具、量化方案、部署框架支持最全适合对 License 合规要求宽松的团队。3. 怎么选型一张表看清 13 个模型的定位3.1 选型维度只看榜单远远不够面对这么多模型选型时我建议从四个维度去卡。第一是显存预算10B 以下模型用 24G 消费卡可以跑推理再往上基本就要上 A100 或 A800 了第二是语言支持中文业务优先考虑 Qwen2.5-VL、InternVL、Yi-VL 这类中英文都训练充分的模型第三是任务类型OCR 和文档处理优先 CogVLM2视频流处理优先 mPLUG-Owl3Agent 场景优先 Qwen2.5-VL研究学习优先 LLaVA 和 BLIP-2第四是部署生态团队有专门推理框架经验的可以放心选 transformers 原生支持的模型。还有一个容易被忽略的维度社区活跃度。一个模型即使效果再好如果仓库长期没人维护、issue 得不到回复出了问题你能依靠的只有自己。从我的观察看Qwen、InternVL、LLaVA 三个项目的社区维护最稳定各种衍生项目也多遇到问题很容易搜到解决方案。3.2 13 个模型横向对比速查表我先画一张简表把最关键的信息列出来方便你快速锁定目标再逐项解释一些表里看不到的细节。模型主要团队参数规模核心优势适合场景Qwen2.5-VL阿里2B-72B综合能力强中文好OCR/视频/Agent通吃通用多模态、中文业务、AgentInternVL3上海AI Lab1B-38B原生多模态预训练高分辨率细节强文档理解、复杂推理LLaVA-OneVisionLLaVA社区0.5B-72B架构透明易二次开发科研学习、框架定制CogVLM2智谱AI19B视觉特征深度融合OCR稳定截图识别、版面分析DeepSeek-VL2深度求索MoE系列激活参数少推理成本低大规模线上推理mPLUG-Owl3阿里达摩院约8B级别低延迟视频流理解实时视频、具身智能BLIP-2Salesforce视编码器LLMQ-Former范式训练成本低架构研究与教学InstructBLIPSalesforce视编码器LLM指令微调范式指令式视觉问答研究MiniGPT-4KAUST约13B实现简单单卡可跑入门学习、原型验证Phi-3-vision微软4.2B参数小OCR强端侧部署、移动设备Idefics2Hugging Face8Btransformers直接集成快速原型、多图像推理Yi-VL零一万物6B/34B中英双语均衡中文场景、轻量部署Llama 3.2 VisionMeta11B/90B生态完整周边配套全需要Llama生态的团队表里的“参数规模”只是一个大概范围实际要以各项目最新发布为准。另外我要多说一句不要因为某个模型参数小就轻视它Phi-3-vision 在单张 16G 显卡上就能跑得飞快做垂直场景完全够用也不要因为参数大就觉得一定好MoE 模型虽然总参数大但实际推理时激活比例通常只有 20%-40%性价比反而更高。4. 从零开始部署复现一个开源多模态模型的完整路径4.1 基础环境搭建Python、PyTorch、CUDA 一个不能少无论复现哪一个模型基础环境的套路都是差不多的。我建议 Python 版本选 3.10 以上PyTorch 选 2.1 以上CUDA 至少 12.1显卡驱动保持在较新版本。深度学习框架之间版本不兼容是复现时最常见的翻车原因所以装环境时尽量用虚拟环境隔离不要直接往系统 Python 里硬塞。依赖安装方面绝大多数模型都依赖 transformers、accelerate、torchvision、pillow、einops 这些库。我的习惯是先把项目克隆到本地然后阅读 README 里的 Requirements 部分严格按它指定的版本来安装不要手动升级到最新版因为新版 transformers 经常调整 API一不小心就把老模型的代码搞挂了。4.2 用 transformers 跑起一个多模态模型的推理示例下面给出一个以 Qwen2.5-VL 为例的推理代码其他模型换一下模型名和 processor 就行整体结构是通用的from transformers import Qwen2VLForConditionalGeneration, AutoProcessor from PIL import Image import torch # 加载模型和处理器bfloat16 精度可显著降低显存占用 model_id Qwen/Qwen2.5-VL-7B-Instruct model Qwen2VLForConditionalGeneration.from_pretrained( model_id, torch_dtypetorch.bfloat16, device_mapauto ) processor AutoProcessor.from_pretrained(model_id) # 读取本地图片 image Image.open(test.jpg) # 构造多模态对话消息Qwen 系的模板是这种格式 messages [ { role: user, content: [ {type: image, image: image}, {type: text, text: 这张图片里有什么请用中文回答。} ] } ] # 将消息转换成模型输入 text processor.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs processor( text[text], images[image], return_tensorspt ).to(model.device) # 生成回复 outputs model.generate( **inputs, max_new_tokens512, do_sampleFalse ) # 解码输出去掉输入部分 response processor.decode( outputs[0][inputs[input_ids].shape[1]:], skip_special_tokensTrue ) print(response)这段代码里几个细节值得注意。第一processor 的 apply_chat_template 会按各模型的官方格式自动组装 prompt比手写模板安全得多第二生成长度要控制多模态模型输出很容易超长尤其是描述类任务可以先用 max_new_tokens256 测试第三如果显存不够可以把 torch_dtype 改成 torch.float8 或加载 4bit 量化版本但效果会有一定损失。4.3 用 vLLM 做高效推理服务如果只是单张图测试上面那种方式就够了但要做真实业务必须上推理框架。vLLM 是目前开源社区用得最多的方案对多模态模型支持度也很高。部署命令非常简单vllm serve Qwen/Qwen2.5-VL-7B-Instruct --limit-mm-per-prompt image5启动之后它会启动一个兼容 OpenAI API 的 HTTP 服务直接用 requests 就能调用。限制 image5 的意思是单次请求最多传 5 张图防止显存被打爆。在线上的图像列表、视频抽帧处理场景下vLLM 的吞吐量比原生 transformers 高出数倍强烈建议直接把它作为生产环境的首选方案。如果你需要跑 InternVL3 或 LLaVA-OneVision也可以在 vLLM 官方的文档里找到对应的模型支持说明基本都能直接跑。要注意的是vLLM 对新模型的支持往往有滞后如果遇到不支持的情况可以先检查 vLLM 版本是否太旧再考虑回退到 transformers 方案。4.4 微调思路LoRA 与全参微调开源模型的另一大价值是可以二次微调。对大多数团队来说我的建议是从 LoRA 开始因为它在显存占用上优势巨大一张 24G 显卡就能训 7B 级别模型。LoRA 的基本思路是冻结原始权重只训练插入到注意力层里的小型低秩矩阵训练参数只占全参的 1%-2%。配合 peft 库代码改动量很小。全参微调的效果上限确实更高但需要多卡并行还要处理优化器状态占用对大多数场景来说是杀鸡用牛刀。我个人的经验是先用 LoRA 在业务数据上试一轮看效果提升是否达到预期如果明显不够再考虑升级到全参微调。很多开源项目还提供了微调的脚本模板比如 DeepSeek-VL2 的仓库里就自带微调配置文件改动几个路径就能跑通。5. 实操中的常见问题与排查技巧5.1 显存不足OOM怎么办这是所有人跑多模态模型时遇到最多的报错。OOM 的原因不一定是模型太大很可能是“图像切块过多”。多模态模型会把图片切成大量 patch一张高分辨率大图可能产生上千个视觉 token这些 token 在注意力计算时占的显存远超出你的预期。解决办法有几条一是限制输入图片分辨率在 processor 里设置 size 参数把长边缩到 768 左右二是用 flash-attention 减少注意力计算显存三是加载量化版本四是使用 vLLM 这类框架它的 PagedAttention 机制能显著提升显存利用率。记住一个原则先缩图再量化最后才换卡。5.2 中文效果差与“幻觉”问题很多国外开源模型英文表现不错一到中文就胡言乱语因为训练数据里中英文比例严重失衡。如果业务强制要求中文高质量输出优先选择 Qwen2.5-VL、InternVL3、Yi-VL 这类在中文语料上充分训练的模型。另一种情况是模型一本正经地胡说八道这在视觉模型里尤其明显它可能把图里的物体描述成相近但完全不对的东西。降低幻觉的实用手段一是用较低的温度参数0.1-0.3生成二是把 prompt 从“请描述图片”改成“请只描述图中明确出现的物体不要推测”三是做检索增强或指令约束让模型引用图片中的具体区域。5.3 权重下载失败与版本不兼容国内下载 Hugging Face 权重经常碰到超时中断这是非常实际的问题。不涉及任何特殊手段我常用的做法是配置镜像源export HF_ENDPOINThttps://hf-mirror.com或者在代码里调用 huggingface_hub 时指定 endpoint。更稳妥的方式是去 ModelScope魔搭社区下载权重许多主流开源模型都会同步发布到上面速度很稳定。下载完成后再用 from_pretrained 本地路径加载避免每次都要连外网。另外权重下载一半时没报错但加载却乱码经常是文件被截断的问题用 huggingface-cli download 配合 --resume-download 参数可以续传。5.4 高分辨率图片与视频输入的处理处理高分辨率图片时很多模型默认的 processor 会做一些限制比如强制缩放到固定尺寸这会丢失细节。比较好的方案是使用支持“动态分辨率”的模型比如 Qwen2.5-VL 和 InternVL3它们能根据输入图片的宽高比自动决定切块方式。视频输入更吃显存我的建议是先抽帧再送入模型而不是直接把整段视频塞进去对于长视频可以分段理解再加摘要效果往往比一次性输入好得多。5.5 常见问题速查表问题原因分析推荐排查顺序CUDA out of memory图片 token 过多或模型太大1. 缩图 2. 量化 3. 用vLLM中文乱答训练语料偏英文换中文友好模型输出内容明显错误生成温度过高降低温度至0.1-0.3权重下载卡在99%网络中断导致文件损坏用镜像源或重新下载transformers报AttributeError库版本不兼容按README指定版本安装视频理解结果差直接输入完整视频抽帧分段汇总模型响应极慢使用非流式调用且图像大开vLLM并限制图像数量6. 最后说几句大实话这些模型我前前后后都跑过最大的体会是“不要迷信 SOTA 这个标签”。榜单第一不代表你的业务场景第一尤其是开源模型迭代这么快今天的第一名三个月后就可能被超越。与其追着最新最强跑不如选一个社区活跃、代码清晰、贴合你业务数据的模型踏踏实实把数据整理好把评估流程搭好这才是能长期复利的事情。另外想再分享一个小技巧拿到任何新模型第一步不是看论文而是先把官方仓库的 demo 脚本跑通然后拿你自己的 10 张业务图打标测试。效果满意再深入读论文、做微调。这个顺序能帮你少走很多弯路。如果你正在做多模态相关的项目希望这份汇总能让你少踩几个坑。后续有新的值得关注的开源模型出现我也会继续更新实测体验。