本文涉及到的代码已经上传到如下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在边缘端推理,需要考虑什么呢?
是否需要做微调模型以满足特定的业务需要。微调的方法见我的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中进行代码的更新。公众号文章不再进行展示。