当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > 多模态模型输入图片过大时如何控制视觉令牌

多模态模型输入图片过大时如何控制视觉令牌

来源:17golang原创 2026-10-09 09:13:20 0浏览 收藏

多模态模型输入一张超大图片时,真正需要控制的通常不是文本侧的 max_new_tokens,而是图片经过处理器缩放后占用的视觉网格。实用做法是:先按任务设定图片像素上下限,再按模型要求对齐网格;多图请求还要把所有图片的预算放在同一个上下文里考虑。以 Transformers 的 Qwen2.5-VL 为例,可以用 min_pixels 和 max_pixels 限制输入分辨率,避免原图尺寸直接转化为过高的视觉令牌和显存压力。

官方文档:https://huggingface.co/docs/transformers/main/model_doc/qwen2_5_vl

要点速览
  • 图片文件大小、像素面积、视觉令牌数量是三个不同概念,压缩 JPEG 不等于减少视觉令牌。
  • Qwen2.5-VL 示例使用 28 像素网格;应以具体模型处理器的约束为准,不要把 28 写成所有 VLM 的通用常数。
  • 场景理解、文字识别、多图对比要使用不同预算,并记录图片数量、分辨率、延迟和显存后再固定配置。

先把视觉令牌问题定位到图像预处理

排查“图片一大就变慢”时,先看三件事:原图的宽高和像素面积、处理器是否执行了缩放、请求里到底放了几张图片。视觉令牌来自视觉编码器的网格化输入,文字输出长度只是生成阶段的另一项开销。把 max_new_tokens 调小,可能缩短回答,却不会阻止一张高分辨率图片在输入阶段占用大量视觉位置。

还要区分文件体积与像素面积。把 PNG 换成压缩 JPEG 主要减少上传和解码压力;如果宽高没有变化,处理器看到的像素数量仍然接近原值。真正影响视觉预算的是模型处理器最终接收的尺寸,以及模型把这些尺寸切成多少视觉块。

多模态模型图片经过 min_pixels 和 max_pixels 缩放后进入 28×28 视觉网格与文本上下文的关系说明图
图1:视觉令牌预算结构说明图,重点查看图片分辨率、处理器和视觉网格之间的边界。

用 min_pixels 和 max_pixels 控制输入上限

在 Transformers 中,可以把像素预算交给 AutoProcessor。处理器会尽量保持宽高比,在上下限之间调整图片尺寸。下面的配置适合先建立一个中等预算基线;28 是 Qwen2.5-VL 文档示例中的网格单位,换用其他模型时应查对应的 image processor。

from transformers import AutoProcessor

# 用模型文档要求的网格单位定义视觉输入边界
grid = 28
min_pixels = 256 * grid * grid
max_pixels = 1024 * grid * grid

# 处理器按比例缩放图片,避免原图尺寸直接进入视觉编码器
processor = AutoProcessor.from_pretrained(
    "Qwen/Qwen2.5-VL-7B-Instruct",
    min_pixels=min_pixels,
    max_pixels=max_pixels,
)

# 真实请求仍要使用模型对应的消息格式,并保留错误处理入口
messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "./assets/report-page.jpg"},
        {"type": "text", "text": "提取图片中的表格标题和关键数值。"},
    ],
}]

# 处理器负责图片预处理和文本模板拼接,生成阶段只限制回答长度
inputs = processor.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
)

这里的上下限不是越小越好。图片里只有物体类别时可以降低 max_pixels;需要读小字号、票据或代码截图时,应提高上限,并通过实际样本确认识别率是否值得这部分显存和延迟。更重要的是把预算写在处理器初始化处,避免调用方各自传入一套隐含规则。

按任务保留分辨率并处理多图输入

可以先把任务分成三档,而不是给所有请求套同一个“最大分辨率”。场景理解通常关注物体和布局,适合中低预算;文字识别关注小字和表格线,需要更高上限;多图对比则要把单图预算乘以图片数量,防止两张看似普通的图片合起来超过上下文或显存边界。

任务预算倾向主要取舍排查信号
场景理解低到中优先延迟和吞吐物体类别正确但细小文字不稳定
文字识别中到高用显存换局部细节小字号、表格列或代码符号漏读
多图对比按图片数分摊控制总输入而非单图峰值单图正常,批量后显存或延迟突增

如果多图中只有一张需要看细节,不要无条件提高所有图片的上限。可以先缩小背景图,再单独保留关键局部;也可以把任务拆成“先分别提取,再用文本比较”。这样做的目的不是追求一个理论令牌数字,而是让每张图片的分辨率都服务于当前问题。

场景理解、文字识别和多图对比三种任务在细节、显存和延迟之间的预算矩阵说明图
图2:多模态任务预算矩阵说明图,展示细节需求与输入规模的取舍。

把令牌预算写进可观测的推理配置

预算调优不能只看一次调用是否成功。建议给每次请求记录图片数量、原始宽高、处理器上下限、生成长度、首 token 延迟和峰值显存;同一任务用固定样本比较,才知道降低预算是节省了资源,还是牺牲了必要细节。多模态模型的视觉令牌公式由具体处理器和视觉编码器决定,日志中应记录模型名与处理器版本,不能跨模型直接套用。

一个稳妥的上线顺序是:先用中档上限建立基线;再用最容易漏字、最容易混淆的图片做回归;最后按场景理解、文字识别、多图对比分开配置。若显存仍然紧张,先减少无关图片和历史消息,再考虑量化或更小模型。量化能改善权重占用,却不会替代输入图片的像素预算控制。

常见问题

把图片压成更小的 JPEG 就能减少视觉令牌吗?

不一定。文件字节数下降主要影响传输和解码;只有处理器最终缩小了像素面积,视觉网格数量才会相应下降。

max_new_tokens 能限制图片令牌吗?

不能。它限制模型生成的文本长度。图片输入应通过对应处理器的像素参数、尺寸参数或模型专属配置控制。

为什么不能把 Qwen2.5-VL 的 28 直接套给其他模型?

视觉 patch、合并策略和处理器默认值都可能不同。28×28 是本文示例模型的工程边界,换模型前应以该模型官方处理器文档为准。

控制视觉令牌的核心不是盲目压缩图片,而是让图片分辨率、任务细节和上下文总量对齐。先限制处理器输入,再用固定样本观察识别质量,最后把图片数量和模型版本写入监控,这套配置才适合长期运行。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
testing.B.Loop 为什么不再需要手动读取 b.Ntesting.B.Loop 为什么不再需要手动读取 b.N
上一篇
testing.B.Loop 为什么不再需要手动读取 b.N
B.Loop 基准测试怎样比较不同缓冲区大小
下一篇
B.Loop 基准测试怎样比较不同缓冲区大小
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    386次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    468次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    475次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    415次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    241次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码