图像内容理解
更新时间:2026-06-15
简介
Qwen2.5-VL 多模态图像理解模型,支持视觉语义解析与自然语言描述生成,适用于多种图像分析场景。
功能描述
- 多模态时序建模:支持三种图像输入格式(URL、Base64编码、二进制流),灵活适配不同数据源。
- 对话式提示支持:通过
prompt参数自定义生成方向,满足多样化业务需求。 - 高效推理:集成VLLM推理引擎,支持
bfloat16、float16、float32三种精度,充分利用GPU算力。 - 推荐使用48G及以上显存的GPU
- 图像内容理解与摘要
- 智能监控与事件分析
- 多模态对话与交互
- 其他需要图像语义解析的AI应用
- 仅支持GPU环境,建议根据显存和业务需求合理设置参数。
- 推荐在推理前统一图像,以获得最佳效果。
算子参数
输入
| 输入 | 含义 |
|---|---|
| images | 包含图像数据的数组,元素类型为 字符串 或者 二进制。 |
| user_prompts | - |
输出
| 输出 | 含义 |
|---|---|
| result | pa.Array: 处理后的数组,元素为每个图像的理解结果。 |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| image_src_type | str | 'image_url' | 输入图像的格式类型。支持: - "image_url": bos/http地址 - "image_base64": base64编码 - "image_binary": 二进制流 可选值:["image_url", "image_base64", "image_binary"] 默认值:"image_url" |
| model_path | str | '/opt/aihc/models' | 本地模型文件存储的绝对路径。默认为容器内预置路径,当使用自定义模型时需修改此路径。 默认值:"/opt/aihc/models" |
| model_name | str | 'Qwen/Qwen2.5-VL-7B-Instruct' | 支持的视觉语言模型版本。当前仅支持Qwen2.5-VL系列模型。 可选值:["Qwen/Qwen2.5-VL-7B-Instruct-AWQ", "Qwen/Qwen2.5-VL-7B-Instruct", "Qwen/Qwen2.5-VL-32B-Instruct-AWQ", "Qwen/Qwen2.5-VL-32B-Instruct", "Qwen/Qwen2.5-VL-72B-Instruct"] 默认值:"Qwen/Qwen2.5-VL-7B-Instruct" |
| prompt | str | '请给出这张图片的详细描述。' | 用户理解视频内容的提示词,模型会根据提示词来生成视频的描述。设置为空时,建议针对每条数据传入特定的prompt。 默认值:"请给出这段视频的详细描述。" |
| batch_size | int | 4 | 单次推理处理的样本数量。较大的batch_size可提升吞吐但增加显存消耗,建议根据GPU显存调整。 默认值:4 |
| dtype | str | 'bfloat16' | 模型推理精度选择。 - "bfloat16": 平衡精度与速度 - "float16": 更快的推理速度 - "float32": 最高精度但显存消耗最大 可选值:["bfloat16", "float16", "float32"] 默认值:"bfloat16" |
| max_model_len | int | 128000 | 支持的最大模型输入长度(token数),影响可处理视频描述的长度,不能超过128000。 默认值:128000 |
| max_num_seqs | int | 128 | 单批次最大序列数,影响并发推理能力。 默认值:128 |
| tensor_parallel_size | int | 1 | 张量并行的GPU数量,提升推理速度。 默认值:1 |
| enable_prefix_caching | bool | True | 是否启用前缀缓存以加速多轮推理。 默认值:True |
| gpu_memory_utilization | float | 0.9 | 单卡GPU显存利用率上限,范围0~1。 默认值:0.9 |
| enforce_eager | bool | False | 是否强制使用eager模式推理,调试或特殊场景可用。 默认值:False |
| resized_height | int | None | 图像高度。不设置时,默认使用图像的原高度。图像高度越大,GPU显存占用越高。 默认值:None |
| resized_width | int | None | 图像宽度。不设置时,默认使用图像的原宽度。图像宽度越大,GPU显存占用越高。 默认值:None |
| temperature | float | 1.0 | 采样温度,控制生成内容的多样性。值越高生成越随机。 默认值:1.0 |
| top_p | float | 0.2 | nucleus采样的概率阈值,控制生成内容的多样性。值越小生成越保守。 默认值:0.2 |
| repetition_penalty | float | 1.05 | 重复惩罚系数,防止生成重复内容。值越大重复内容越少。 默认值:1.05 |
| max_tokens | int | 8192 | 单次生成的最大token数,影响描述长度。 默认值:8192 |
| stop_token_ids | list[int] | [] | 生成时遇到这些token id则停止。用于自定义生成终止条件。 默认值:[] |
| seed | int | 42 | 随机种子,保证推理结果可复现。 默认值:42 |
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.multimodal.qwen_vl_image_understanding_vllm import QwenVLImageUnderstandingVLLM
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18 # TODO: 根据实际场景准备样本数据
19 samples = {"images": [...], "user_prompts": [...]}
20 ds = daft.from_pydict(samples)
21 constructor_kwargs = {
22 "image_src_type": 'image_url',
23 "model_path": '/opt/aihc/models',
24 "model_name": 'Qwen/Qwen2.5-VL-7B-Instruct',
25 "prompt": '请给出这张图片的详细描述。',
26 "batch_size": 4,
27 }
28 ds = ds.with_column(
29 "result",
30 aihc_udf(
31 QwenVLImageUnderstandingVLLM,
32 construct_args=constructor_kwargs,
33 num_cpus=1,
34 concurrency=4,
35 batch_size=8,
36 )(col("images"), col("user_prompts")),
37 )
38 ds.show()
评价此篇文章
