4.3. 视觉大语言模型测试

benchmark_vision_language是Enflame新增的测试入口,使用方式为python3 -m vllm_utils.benchmark_vision_language arg1 arg2 ...。可参考第6章查看各视觉大语言模型的推理指令。

功能上,支持:

  • 使用输入的prompt和视觉文件进行离线推理以展示Enflame gcu对视觉大语言模型的推理能力;

  • 使用指定长度的伪prompt和像素值全0的视觉文件进行视觉大语言模型的推理性能测试;

  • 使用指定的数据集进行视觉大语言模型的推理精度测试;

可以通过python3 -m vllm_utils.benchmark_vision_language --help查看各参数含义。

离线推理测试

离线推理测试,是使用输入的prompt和视觉输入文件完成指定vision language model的推理,以演示Enflame gcu的推理能力。

使用上,需要:

  • 设定--demo以启用离线推理测试;

  • 通过--prompt设定输入prompt,测试中会对其自行应用模型的chat template

  • 通过--input-vision-file设定输入的视觉文件:

    • 对仅需要单张图像的vision language model,该参数指向图像文件;

    • 对需要多张图像的vision language model,该参数指向存储多张图像文件的文件夹路径;

    • 对需要输入视频的vision language model,该参数指向视频文件;

  • 通过--num-frames设定每次推理时从视频文件中提取的frame数量,仅video language model需要;

  • 通过--mm-per-prompt设定每个prompt对应的视觉文件的数量,仅需要多张图像的vision language model需要;

性能测试

性能测试,是使用自动生成的、由多个hi组成的输入prompt和像素值全0的图像进行推理,过程中忽略停止字符,生成指定长度的输出token。推理完成后,统计TPS(Tokens per second)TTFT(Time to first token)TPOT(Time per output token)等指标,以验证Enflame gcu的推理性能。

使用上,需要:

  • 设定--perf以启用性能测试;

  • --input-len参数设定输入prompt的长度;

  • --max-output-len参数设定输出token数;

  • --input-vision-shape给定输入的视觉文件的shape信息,其格式应符合模型的要求且输入的视觉文件提取的image feature token数量不能大于--input-len设定的输入token数;

  • 通过--num-frames设定每次推理时从视频文件中提取的frame数量,仅video language model需要;

  • 通过--mm-per-prompt设定每个prompt对应的视觉文件的数量,仅需要多张图像的vision language model需要;

其余相关参数按需设置。

测试完成输出的结果中,latency_num_prompts表示本轮推理的总耗时,latency_per_token表示每个输出token的latency,request_per_second表示以request为单位计算的吞吐,token_per_second表示以token为单位计算的吞吐,prefill_latency_per_token表示prefill阶段各token的latency,decode_latency_per_token表示decode阶段各token的latency,decode_throughput表示decode阶段的吞吐。

数据集精度测试

数据集精度测试,是使用特定数据集完成指定视觉多模态大模型的推理和结果统计,以验证Enflame gcu的推理精度。

数据集下载

目前,支持llava-bench-cocoMMMUvideomme三个数据集。使用数据集进行精度验证时,需要提前下载数据集。

特别声明:用户可以从huggingface或其他地址自行下载开源数据集,本文仅给出下载链接,不对开源数据集做任何承诺,使用开源数据集产生的一切后果和风险由用户自行承担。

llava-bench-coco

数据集下载信息:

  • url:llava-bench-coco

  • branch:main

  • commit:2533d3eaa6e837c462b1a5486c54b88cde3094fe

下载完成后将llava-bench-coco文件夹拷贝到执行数据集精度验证的设备上。

MMMU

数据集下载信息:

  • url:MMMU

  • branch:main

  • commit:171b0ef74cd1704464e6940860968009d8cdd59a

下载完成后将MMMU文件夹拷贝到执行数据集精度验证的设备上。

videomme

数据集下载信息:

  • url:videomme

  • branch:main

  • commit:ead1408f75b618502df9a1d8e0950166bf0a2a0b

下载完成后将Video-MME文件夹拷贝到执行数据集精度验证的设备上。

使用

使用上,需要:

  • 设定--acc以启用数据集精度测试;

  • --dataset-name设定使用的数据集名称,目前仅支持llava-bench-cocoMMMUvideomme三种;

  • --dataset-file设定数据集的本地存储路径,查看下节获取数据集的下载路径;

  • --num-prompts设定精度测试使用的数据集的prompt数量,默认值-1表示使用完整数据集进行测试; 其余参数可按需设置。