1. 使用场景
视觉语言模型(VLM)是一种能够同时接受视觉(图像)和语言(文本)两种模态信息输入的大语言模型。基于视觉语言模型,可以传入图像及文本信息,模型能够理解同时理解图像及上下文中的信息并跟随指令做出响应。如:- 视觉内容解读:要求模型对图片中包含的信息进行解读、描述,如包含的事物、文字,事物的空间关系,图像的颜色、气氛等;
- 结合视觉内容及上下文,开展多轮会话;
- 部分替代 OCR 等传统机器视觉模型;
- 随着模型能力的持续提升,未来还可以用于视觉智能体、机器人等领域。
2. 使用方式
对于 VLM 模型,可在调用/chat/completions 接口时,构造包含 图片 url 或 base64 编码图片 的 message 消息内容进行调用。通过 detail 参数控制对图像的预处理方式。
2.1 关于图片细节控制参数说明
SiliconFlow 提供low,high,auto 三个 detail 参数选项。
对于目前支持的模型,detail 不指定或指定为 high 时会采用 high(“高分辨率”)模式,而指定为 low 或者 auto 时会采用 low(“低分辨率”)模式。
2.2 包含图像的 message 消息格式示例
2.2.1 使用图片 url 形式
2.2.2 base64 形式
图片base64转换示例
2.2.3 多图片形式,其中每个图片可以是上述两种形式之一
请注意,
DeepseekVL2 系列模型适用于处理短上下文,建议最多传入 2 张图片。若传入超过 2 张图片,模型将自动调整图片尺寸为 384*384,且指定的 detail 参数将无效。3. 支持模型列表
目前已支持的 VLM 模型:- THUDM 系列:
- THUDM/GLM-4.1V-9B-Thinking
- Qwen 系列:
- Qwen/Qwen2-VL-72B-Instruct
- DeepseekVL2 系列:
- deepseek-ai/deepseek-vl2
注意:支持的 VLM 模型可能发生调整,请在「模型广场」筛选“视觉”标签,了解支持的模型列表。
4. 视觉输入内容计费方式
对于图片等视觉输入内容,模型会将其转化为 tokens,与文本信息一并作为模型输出的上下文信息,因此也会一并进行计费。不同模型的视觉内容转化方式不同,以下为目前支持模型的转化方式。4.1 Qwen 系列
规则:Qwen 最高支持像素是 3584 * 3584= 12845056,最低支持像素是 56 * 56 = 3136,会对先对每张图片长短边均放缩至 28 的倍数 (h * 28) * (w * 28)。如果不在最小像素和最大像素区间内,再等比缩放至该区间。
detail=low时将所有图片 resize 成448 * 448尺寸,最终对应256 tokens;detail=high时等比缩放,首先将长宽按照最近的28倍数向上取整,然后再等比缩放至像素区间(3136, 12845056),并保证长宽均为28整数倍。
224 * 448和1024 x 1024和3172 x 4096的图片,选择detail=low时,均消耗256 tokens;224 * 448的图片,选择detail=high时,因为224 * 448在像素区间内,且长宽均为28倍数,消耗(224/28) * (448/28) = 8 * 16 = 128 tokens;1024 * 1024的图片,选择detail=high时,将长宽按照28的倍数向上取整至1036 * 1036,该数值在像素区间内,消耗(1036/28) * (1036/28) = 1369 tokens;3172 * 4096的图片,选择detail=high时,将长宽按照28的倍数向上取整至3192 * 4116,该值超过最大像素,再将长宽等比例缩小至3136 * 4060,消耗(3136/28) * (4060/28) = 16240 tokens。
4.2 DeepseekVL2 系列
规则:DeepseekVL2对于每张图片,会处理global_view和local_view两部分。global_view将原图片统一 resize 成384*384像素大小,local_view 会将每张图片划分成若干384*384的块大小。图片中间会根据宽度增加额外 token 来衔接。
detail=low时将所有图片 resize 成384*384尺寸detail=high时会根据长宽比例,将图片 resize 成长宽均为384(OpenAI是512)的倍数,(h*384) * (w * 384), 且1 <= h*w <=9。
-
放缩的长宽
h * w按照如下规则选择:h和w均为整数,在满足1 <= h*w <=9约束下,按照(h, w)组合遍历。- 将图片 resize 成
(h*384, w*384)像素时,和原图片的像素比较,取新图片像素和原图片像素的最小值作为有效像素值,取原图片像素值与有效像素值之差作为无效像素值。如果有效像素值超过之前判定的有效像素值,或者当有效像素值和之前持平,但是无效像素值更小时,选择当前(h*384, w*384)组合
-
token 消耗按照如下规则:
(h*w + 1) * 196 + (w+1) * 14 + 1 token
224 x 448和1024 x 1024和2048 x 4096的图片,选择detail=low时,均消耗421token.384 x 768的图片,选择detail=high时,长宽比为1:1, 会缩放至384 x 768, 此时h=1, w=2, 消耗(1*2 +1)*196+(2+1)*14+1=631 token.1024 x 1024的图片,选择detail=high时,会缩放至1152*1152(h=w=3), 消耗(3*3 + 1) * 196 + (3+1)*14+1 = 2017 token.2048 x 4096的图片,选择detail=high时,长宽比例为1:2, 按照规则缩放至768*1536(h=2,w=4), 消耗(2*4 + 1) * 196 + (4+1)*14+1 = 1835 token.
4.3 GLM-4.1V-9B-Thinking
规则:GLM-4.1V 最小支持像素28 * 28,以28像素为单位,对图片按照比例将长宽缩放至最接近的28整数倍像素。
如果缩放后像素小于112 * 112,或者大于 4816894,那么按照28像素的倍数,等比例缩放长宽至区间。
detail=low时将所有图片resize 成448*448尺寸, 最终对应256 token`。detail=high时等比缩放,首先将长宽按照最近的28倍数取整,然后再等比缩放至像素区间(12544, 4816894),并保证长宽均为28整数倍。
224 x 448和1024 x 1024和3172 x 4096的图片,选择detail=low时,均消耗256token.224 x 448的图片, 选择detail=high时, 因为224x448在像素区间内,且长宽均为28倍数,消耗(224//28) * (448//28) = 8 * 16 = 128 token.1024 x 1024的图片, 选择detail=high时, 将长宽按照28的倍数取整为1036*1036, 该数值在像素区间内, 消耗(1036//28) * (1036//28) = 1369 token.3172 x 4096的图片, 选择detail=high时, 将长宽按照28的倍数取整至3192 x 4088, 该值超过最大像素, 再将长宽等比例缩小至1932 x 2464, 消耗(1932//28) * (2464//28) = 6072 token.