像素压缩的奥秘:InternVL2.5-26B-MPO-AWQ 的 Pixel Shuffle 与动态分辨率机制拆解
【免费下载链接】InternVL2_5-26B-MPO-AWQ项目地址https://ai.gitcode.com/OpenGVLab/InternVL2_5-26B-MPO-AWQ点击查看免费下载InternVL2_5-26B-MPO-AWQ 是开源多模态大模型 InternVL2.5-26B-MPO 的 AWQ 4-bit 量化版本它通过Pixel Shuffle 像素压缩与动态分辨率切片两大机制让视觉 Token 数量始终可控——这就是本文要拆解的像素压缩奥秘。 一句话理解普通视觉模型图片越大、Token 越多、算力越爆表而 InternVL 通过重排压缩 按需切片把算力开销压到了可以单卡部署的水平。一、先看全貌ViT-MLP-LLM 三段式架构InternVL 系列采用经典的ViT-MLP-LLM范式本模型的三个核心部件如下部件型号关键参数来自 config.json视觉编码器InternViT-6B-448pximage_size: 448、patch_size: 14、45 层、隐层维度 3200投影层随机初始化的 MLP12800 → 6144 两线层结构语言模型internlm2_5-20b-chat48 层、48 注意力头、GQA 8 个 KV 头此外配置中的quantization_config明确了 AWQ 4-bit 量化bits: 4、group_size: 128这正是名称中AWQ的由来——用 4-bit 权重大幅降低显存占用是26B 模型跑进单卡的关键。 想理解每个参数怎么生效可以对照阅读 modeling_internvl_chat.py、modeling_intern_vit.py 和 modeling_internlm2.py 三个文件。二、Pixel Shuffle把 1024 个 Token 压成 256 个2.1 压缩前后对比以一张标准的 448×448 图像切片Tile为例阶段特征形状Token 数单 Token 维度ViT 输出32×32 个 14px 补丁32 × 32 × 320010243200Pixel Shufflescale0.5后16 × 16 × 1280025612800MLP 投影后送入 LLM256 × 61442566144Token 数量直接降到 1/4而信息并没有被丢弃——每 4 个相邻的空间特征被拼接到一起变成一个维度更高3200×412800的 Token。2.2 原理纯张量重排零参数、零损失核心实现 pixel_shuffle() 只有三次view/permute操作先把特征看作 H×W 网格让相邻的 2×2 块折叠到同一位置特征维数相应 ×4。整个过程只做内存重排不经过任何可学习参数因此没有任何信息损失压缩代价为零。两个细节值得新手注意scale_factor0.5由 config.json 中的downsample_ratio控制0.5即空间分辨率减半、Token 数变为 1/4config.json 中ps_version: v2表示修正了 v1 版本中高低维度未换回导致的图像转置问题见 modeling_internvl_chat.py#L178-L182。压缩发生在 extract_feature() 中ViT 提取特征 → 去掉 CLS 头 → 像素重排 → 送入 MLP 投影层。三、num_image_token每个 Tile 固定 256 个视觉 Token模型初始化时用一行公式算出每个切片的 Token 数modeling_internvl_chat.py#L53num_image_token (448 ÷ 14)² × 0.5² 32² × 0.25 256这 256 个 Token 对应文本中的特殊占位符IMG_CONTEXTToken ID 92546定义见 added_tokens.json。在 chat() 中每个图像占位符会被展开成img 256×N 个IMG_CONTEXT/imgN 为切片数。随后在 forward() 中完成替换魔法把输入序列里所有IMG_CONTEXT位置的词向量直接覆写成 ViT 输出的视觉特征语言模型就像读文字一样读图像。四、动态分辨率小图少切片、大图按预算切片4.1 关键配置三件套参数值作用dynamic_image_sizetrue开启动态分辨率按图片实际长宽比决定切片数min_dynamic_patch1小图最少 1 片仅 256 个视觉 Tokenmax_dynamic_patch12大图最多 12 片封顶 3072 个视觉 Token4.2 一张图到底消耗多少 Token动态分辨率把图像 Token 预算变成了可预测的区间小图如 512×3841 片 → 256 个视觉 Token轻省快速中图如 1024×7682×2 4 片 → 1024 个视觉 Token大图如 2048×1536触发 12 片上限 → 3072 个视觉 Token细节尽收眼底且不会撑爆上下文。切片数的具体选择由 chat() 的num_patches_list参数控制外部预处理先按长宽比把图切成 448×448 的 Tile 列表模型再按片数 × 256动态生成占位符。4.3 use_thumbnail全局缩略图 局部细节双保险config.json 中use_thumbnail: true表示开启缩略图机制除了高分辨率切片外还会先给模型一张整体缩略图让它先看懂全貌、再聚焦局部。这解决了纯切片方案只见树木不见森林的经典缺陷——对表格、长文档、多目标场景尤为关键。五、为什么这样设计算力与精度的平衡账为什么必须压 TokenTransformer 注意力开销与 Token 数呈平方关系。一张大图若不压缩可能产生上万视觉 Token注意力计算量直接爆炸。Pixel Shuffle 把 Token 数除以 4两两注意力计算量约除以 16。为什么动态分辨率比固定分辨率强固定 448×448 对手机截图是杀鸡用牛刀对 4K 文档又细节全丢。动态切片让 Token 开销与实际信息量成正比配合max_dynamic_patch兜底既保精度又防 OOM。AWQ 量化又贡献了什么4-bit 权重大约把显存压到 16-bit 的 1/4与 Token 压缩形成显存 算力双线减负——这正是 AWQ 版本能贴近单卡部署的完整原因。六、最快上手路径LMDeploy 两行启动部署本模型官方推荐 LMDeploy 工具链详见 README.md 的 Deployment 部分pip install lmdeploy0.6.4 lmdeploy serve api_server OpenGVLab/InternVL2_5-26B-MPO-AWQ --server-port 23333启动后即可使用兼容 OpenAI 的 RESTful 接口发送图像 文本请求。注意多图片输入会显著增加视觉 Token 数建议适当调大session_len上下文窗口。 若需要在本地代码中直接调用model.chat(...)务必传入与切片数一致的num_patches_list否则占位符数量与实际视觉特征对不上会触发断言报错。七、新手 FAQ三个高频疑问Q1Pixel Shuffle 压缩会不会丢图像细节不会丢而是搬。4 个邻居 Token 的信息被拼接进同一个 Token 的更高维度里再由 MLP 投影层整合是重排而非截断。Q212 片上限不够用怎么办上限对应单图 3072 个视觉 Token已覆盖绝大多数文档与图表场景。若确需更高分辨率可参考 InternVL 家族在max_dynamic_patch上的调参思路但上下文窗口与显存需要同步放大。Q3AWQ 量化会影响视觉理解精度吗量化只作用于语言模型权重视觉塔仍以 bfloat16 存储于各pytorch_model-000XX-of-00013.bin分片中对 MMBench、OCRBench 等评测的影响极小换来的是约 4 倍的显存节省。本文引用的核心文件配置总览config.jsondownsample_ratio/dynamic_image_size/max_dynamic_patch/ AWQ 量化参数主模型逻辑modeling_internvl_chat.py视觉编码器modeling_intern_vit.py配置类定义configuration_internvl_chat.py特殊 Token 映射added_tokens.json项目说明与评测数据README.md赞分享【免费下载链接】InternVL2_5-26B-MPO-AWQ项目地址https://ai.gitcode.com/OpenGVLab/InternVL2_5-26B-MPO-AWQ点击查看免费下载相关推荐InternVL2.5-26B-MPO-AWQ 能做什么一张图看懂 26B 多模态推理模型的 5 大核心能力InternVL2.5 26B MPO AWQ 能做什么一张图看懂 26B 多模态推理模型的 5 大核心能力 InternVL2.5 26B MPO AWQCherry Studio 分层预设配置模式Layered Preset Pattern实战指南Preference 增量覆盖与 SQLite 实体合并的架构实践Cherry Studio 分层预设配置模式Layered Preset Pattern实战指南Preference 增量覆盖与 SQLite 实体合并的5 分钟快速上手 InternVL2.5-26B-MPO-AWQLMDeploy 推理环境搭建与第一条图片问答5 分钟快速上手 InternVL2.5 26B MPO AWQLMDeploy 推理环境搭建与第一条图片问答 InternVL2.5 26B MPO AWQ创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CPU飙高≠服务器卡:从指标到实战的排查指南

CPU飙高≠服务器卡:从指标到实战的排查指南

CPU 飙高不等于服务器卡,这个话题我在运维一线见过太多误解了。很多同事一看到监控面板上 CPU 使用率冲上 90%,第一反应就是“服务器要挂了”,马上重启服务甚至扩容。但实际上,CPU 高和用户体感上的“卡”完全可能是两码事&#x…

2026/11/11 10:28:27 阅读更多 →
Langfuse全链路trace实践:从request_id日志到LLM应用可观测性

Langfuse全链路trace实践:从request_id日志到LLM应用可观测性

没有比"线上排查了半天,最后发现日志一切正常"更让人崩溃的时刻了。上个月我们一个问答类服务的用户连续反馈三次"回答明显跑偏",我拿着日志系统里搜出来的 request_id 逐条翻记录:请求进来了、响应回去了、状态码 200、…

2026/11/12 4:18:21 阅读更多 →
从手写数字识别深入理解交叉熵损失函数原理与实战

从手写数字识别深入理解交叉熵损失函数原理与实战

1. 从“猜数字”说起:损失函数到底在做什么 很多人第一次接触手写数字识别,注意力全在“网络结构怎么搭”“准确率能到多少”上,损失函数往往被当成一行代码随手带过。我刚开始学的时候也这样, loss CrossEntropyLoss() 一写&a…

2026/11/13 21:07:54 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻