端侧视觉模型推理的考量:Phi3-Vision

文摘   2024-06-24 19:34   美国  

本文涉及到的代码已经上传到如下repo,本文不再直接粘贴源码。欢迎关注、给这个repo点亮Star。

https://github.com/davidsajare/david-share.git

一、Phi3-Vision的得分

之前我们使用AI计算机视觉,主要使用类似Llava、GPT-4o之类的模型。在5月份Phi3-Vision发布以后,它在很多方面的能力都已经超过了Llava:

https://azure.microsoft.com/en-us/blog/new-models-added-to-the-phi-3-family-available-on-microsoft-azure/

由于Phi-3的能力比较强,在HF上甚至出现了用它来训练llava的模型,并且下载数量还不少:

https://huggingface.co/MBZUAI/LLaVA-Phi-3-mini-4k-instruct

具体能力测试本文不展开。

Phi3-Vision除了能力强,由于参数量比较小,适合于在边缘端推理:

从上图可以看到不同数据类型的phi3-v加载模型所消耗的内存。

之前我录制过用Phi3-v推理电影图片的demo,在我的github:LLMs/模型即服务Model as a Service以及大小模型配合的最佳实践/demo中。

可以看到识别准确率极高。

二、边缘端推理需要考虑的点

那么,如果Phi3-v在边缘端推理,需要考虑什么呢?

  1. 是否需要做微调模型以满足特定的业务需要。微调的方法见我的repo:

https://github.com/davidsajare/david-share/tree/master/Multimodal-Models/Phi3-vision-Fine-tuning

2.边缘端推理的时候,运行模型的硬件。例如GPU还是CPU。

3.资源是否够,尤其是内存。

三、实测效果

目前Phi3-v只有128K的上下文,有HF和ONNX两种格式。

https://huggingface.co/microsoft/Phi-3-vision-128k-instruct

验证的环境是A100。


本文中我使用HF格式进行验证。

针对测试护照:

1、bnb动态量化是否会造成推理精度的下降,答案是没有。

2、bnb动态量化是否会造成推理速度的下降,答案是有。

针对英文,是否动态量化都很准确,无论是图片意图识别、图片描述还是OCR(例如针对护照),都很准确,也不需要写太多的提示词。

针对中文,OCR准确率有待提升,意图识别尚可。

使用A100的话,量化后一张图片的推理(以护照举例),在27秒左右。内存6G:

不量化的话,一张图片的推理(以护照举例),在13秒左右,内存接近12GB。

3、关于中文识别遇到的问题。

以中文测试身份证为例:

识别结果:

我们看待姓名和住址,都不是十分准确。

此外,针对一个图片做总结和意图识别,用英语描述比较清楚,用中文就不成。

 "Please describe the image and then analyze whether there is a danger.\n"  

推理结果:

Inference time: 4.555504083633423

The image shows a white truck driving on a road with trees on both sides. There is a car in front of the truck, and the truck appears to be in motion. The road seems to be in a rural or less-traveled area. There is no immediate indication of danger, but the truck's position and the car's proximity suggest caution is advisable.

手工翻译成中文:

画面显示一辆白色卡车行驶在道路上,两边都是树木。卡车前方有一辆汽车,卡车似乎正在行驶。道路似乎位于农村或人迹罕至的地区。虽然没有直接的危险迹象,但卡车的位置和汽车的距离都表明最好小心谨慎。

如果prompt要求用中文回复:

 "Please describe the image and then analyze whether there is a danger, reply in Chinese.\n" 

推理结果:

这是一幅摄像机摄像的图片,显示了一条很长的道路,它通过了一个很长的森林。道路上有车辆,它是一辆车辆,它在道路上停留了。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往往停留。道路上还有一些车辆,它们在道路上往

目前vLLM也支持Phi3-Vision,后面我会在repo中进行代码的更新。公众号文章不再进行展示。


大魏分享
https://github.com/davidsajare/david-share.git
 最新文章