2026/10/19 1:14:35

多图问答与多轮对话怎么做?InternVL2-26B-AWQ的chat与batch_chat接口完全使用指南

多图问答与多轮对话怎么做?InternVL2-26B-AWQ的chat与batch_chat接口完全使用指南 【免费下载链接】InternVL2-26B-AWQ项目地址https://ai.gitcode.com/OpenGVLab/InternVL2-26B-AWQ点击查看免费下载InternVL2-26B-AWQ 是 InternVL 系列经过 INT4AWQ量化的大型视觉语言模型内置chat与batch_chat两个推理接口前者搞定单图问答、多图问答和多轮对话后者专为高吞吐批量离线推理设计。本文带你从零看懂这两个接口的参数、调用方式与常见坑点。 30秒认识 InternVL2-26B-AWQ在动手之前先了解这个模型由什么组成有助于理解接口的行为组成部分说明视觉编码器InternViT-6B将图片切分为 448×448 的 patch 网格语言模型internlm2-chat-20b约 20B 参数量化方式AWQ 4bit 权重量化W4A16推理更快、显存更省推理引擎LMDeploy支持 Turing / Ampere / Ada 架构 GPU 动态分辨率是 InternVL2 的一大特色[config.json](https://link.gitcode.com/i/6783134537fe29a5f4b9326ed5d35cc6)中配置了use_thumbnail: true和max_dynamic_patch: 12即一张图最多可被切成 12 个 patch分辨率越高、细节越丰富也意味着更多的图像 token——这正是后文num_patches_list参数的存在意义。核心文件清单相对仓库根目录modeling_internvl_chat.py模型主体chat/batch_chat接口都实现在这里conversation.py对话模板本模型使用internlm2-chat模板preprocessor_config.json图像预处理参数448×448、归一化均值/方差README.md官方快速上手文档 快速加载把 InternVL2-26B-AWQ 跑起来按照 README.md 的 Quick Start先安装推理引擎pip install lmdeploy0.5.3最简单的调用方式是 LMDeploy 的pipeline一行代码完成图 问题 → 回答from lmdeploy import pipeline, TurbomindEngineConfig from lmdeploy.vl import load_image model OpenGVLab/InternVL2-26B-AWQ backend_config TurbomindEngineConfig(model_formatawq) pipe pipeline(model, backend_configbackend_config, log_levelINFO) image load_image(examples/image1.jpg) response pipe((请描述这张小熊猫图片, image)) print(response.text)而当你需要多图问答或多轮对话时就要直接使用模型类InternVLChatModel提供的chat与batch_chat接口。 chat 接口单图单轮问答chat是功能最全的接口源码见 modeling_internvl_chat.py。它的核心参数如下参数作用tokenizer模型配套的 tokenizerpixel_values图像张量纯文本对话可传Nonequestion问题文本用image占位符标记图片位置generation_config生成参数如max_new_tokens、do_sample、temperaturehistory多轮历史[(问题, 回答), ...]列表return_history是否返回更新后的 historynum_patches_list每张图被切成的 patch 数多图问答的关键仓库自带的示例图正好适合练手单图单轮的最简调用# n 为该图片实际被切分的 patch 数动态分辨率下为 1~12 response model.chat( tokenizer, pixel_values, 这张图里是什么动物, {max_new_tokens: 512, do_sample: False}, num_patches_list[n]) 多轮对话怎么做history 与 return_historychat接口原生支持多轮对话机制非常直观初始化空列表history []每轮调用时传入historyhistory, return_historyTrue接口内部会把本轮的(question, response)追加到 history 末尾见 modeling_internvl_chat.py下一轮继续传回即可history [] question 请描述一下这张图片 response, history model.chat( tokenizer, pixel_values, question, generation_config, historyhistory, return_historyTrue, num_patches_list[n]) print(response) # 下一轮换一个问题继续传同一个 history 即可实现上下文记忆⚠️ 注意一个小细节带图的那一轮传入pixel_values后续纯文字追问时把pixel_values传None即可代码会自动跳过图像 token 的拼接见 modeling_internvl_chat.py。️ 多图问答怎么做num_patches_list 是关键这是新手最容易卡住的地方。规则很简单问题里写几个image就要提供几张图并用num_patches_list声明每张图各占多少个 patch。# 两张图分别预处理后得到 patches1、patches2列表 pixel_values torch.cat(patches1 patches2, dim0) question imageimage这两张图里的主体有什么相同之处 response model.chat( tokenizer, pixel_values, question, generation_config, num_patches_list[len(patches1), len(patches2)])底层原理见 modeling_internvl_chat.py每个image占位符会按顺序被替换成img 一串IMG_CONTEXT/img替换所需的 token 数量 num_image_token × 该图的 patch 数所以num_patches_list必须与图片切分结果严格一致源码中有一行断言len(pixel_values) sum(num_patches_list)modeling_internvl_chat.py不一致会直接报错。一句话记忆占位符个数 图片张数patch 总和 pixel_values 总行数。⚡ batch_chat 接口批量离线推理batch_chat用于一次提交多个独立问题适合离线批量处理源码见 modeling_internvl_chat.py。与chat相比有三个关键差异对比项chatbatch_chat输入单条question多条questions列表输出单个回答回答列表多轮对话✅ 支持history❌ 传入会抛NotImplementedError适用场景交互式对话批量离线推理调用示例questions [这张图里是什么动物, 请用一句话概括图片内容] responses model.batch_chat( tokenizer, pixel_values, questions, generation_config, num_patches_list[n1, n2]) # 每个问题对应的 patch 数实现上batch_chat会把每个问题单独套用对话模板模板逻辑见 conversation.py统一做左侧 padding后一次性送入generate从而获得比逐条调用更高的吞吐。⚠️ 再次提醒batch_chat里history is not None或return_historyTrue都会直接抛出NotImplementedError见 modeling_internvl_chat.py。需要多轮记忆时请老老实实用chat。 接口选型速查单图问答、有上下文的多轮对话→chathistoryreturn_historyTrue多张图一起提问→chat 多个image占位符 正确的num_patches_list成百上千个独立任务离线跑批→batch_chat快速体验 / 不想写预处理代码→ README.md 中的 LMDeploypipeline一行式调用❓ 常见问题FAQQ1为什么我的多图提问断言报错检查sum(num_patches_list)是否等于pixel_values的行数以及image个数是否等于图片张数。动态分辨率下每张图的 patch 数可能不同1~12必须按实际切分结果逐张填写。Q2多轮对话到第 N 轮突然失忆大概率是某一轮没有把返回的新history接回下一轮导致上下文丢失。始终使用return_historyTrue并链式传递。Q3AWQ 量化版和原始版效果有差别吗InternVL2-26B-AWQ 基于 AWQ 算法做 4bit 权重量化[config.json](https://link.gitcode.com/i/6783134537fe29a5f4b9326ed5d35cc6)中quant_method: awq主要收益是显存占用大幅下降、推理速度更快用于部署服务非常划算离线实验建议先用 LMDeploy 跑通再按需起 RESTful 服务命令见 README.md。Q4生成结果不理想如何调调整generation_config长描述任务调大max_new_tokens要稳定可复现就do_sampleFalse想要更发散的回答可开启采样并调低temperature。 小结InternVL2-26B-AWQ 的对话能力都收敛在两个接口里chat包打单图问答、多图问答与多轮对话batch_chat负责批量离线推理。掌握image占位符 num_patches_listhistory这三件套你就已经会用这个模型 90% 的能力了。动手试试吧赞分享【免费下载链接】InternVL2-26B-AWQ项目地址https://ai.gitcode.com/OpenGVLab/InternVL2-26B-AWQ点击查看免费下载相关推荐多轮对话与多图理解实战InternVL3.5-2B-Pretrained的chat接口深度使用指南多轮对话与多图理解实战InternVL3.5 2B Pretrained的chat接口深度使用指南 InternVL3_5 2B Pretrained 是 O多轮对话与多图理解解锁 InternVL2.5-26B-MPO-AWQ 的进阶交互玩法多轮对话与多图理解解锁 InternVL2.5 26B MPO AWQ 的进阶交互玩法 InternVL2_5 26B MPO AWQ 是开源多模态大模型 I如何用InternVL3-2B-AWQ做图像问答从单图描述到多轮对话的5个实用示例如何用InternVL3 2B AWQ做图像问答从单图描述到多轮对话的5个实用示例 InternVL3 2B AWQ 是一款轻量级多模态大语言模型ML创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考