PaddlePaddle / PaddleNLP

👑 Easy-to-use and powerful NLP and LLM library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Document Intelligence, 💌 Sentiment Analysis etc.
https://paddlenlp.readthedocs.io
Apache License 2.0
12k stars 2.93k forks source link

[Question]: UIE-X模型蒸馏或者压缩 #6371

Open tianchiguaixia opened 1 year ago

tianchiguaixia commented 1 year ago

请提出你的问题

目前的UIE-X模型太大了,启动占用显存非常大。能否参考UIE的模型,给出:medium,tiny的版本的呢。急迫!

aixuedegege commented 1 year ago

同问

huangshuangbin commented 1 year ago

+1

achial commented 11 months ago

楼主解决了吗

tianchiguaixia commented 11 months ago

ocr+uie

huangshuangbin commented 11 months ago

解决了推理速度,以及模型推理内存只增不减的问题,模型内存现在大概在4g以内

发件人:achial @.> 发送日期:2023-10-09 22:23:52 收件人:PaddlePaddle/PaddleNLP @.> 抄送人:huangshuangbin @.>,Comment @.> 主题:Re: [PaddlePaddle/PaddleNLP] [Question]: UIE-X模型蒸馏或者压缩 (Issue #6371)

楼主解决了吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

huangshuangbin commented 11 months ago

uie-x数据蒸馏可以参考这里,可以实现所有schema并行抽取 https://github.com/linjieccc/PaddleNLP/tree/add-doc-ie/applications/information_extraction/document/closed_domain

tianchiguaixia commented 11 months ago

建议:ocr+uie。效果远超UIE-X 占用资源少

aixuedegege commented 11 months ago

请问你们是那种场景下做的? 我们是票据、表格类的图片需要提取信息,ocr的结果会缺少版面信息,uie面向的应该是连续的文本,记忆中即使用版面信息拼在一起的文字丢给uie效果也不太好,因为票据类的文字拼一起不是连续的文本。

tianchiguaixia commented 11 months ago

1.UIE-X解决不了你版面问题,哪怕你训练再多,解决不了换行问题。2.你需要通过ocr版面分析解析文本格式再走uie

tianchiguaixia commented 11 months ago

可以参考我的:ocr+uie信息抽取 8d7e5cbf6db7ae9cf2ccad26bdaae27

aixuedegege commented 11 months ago

你给uie的是直接ocr拼起来的结果么? 类似这样的:秦皇岛市第三医院检验报告单仪器名称:科美LICA800患者姓名:...送检科室:专家门诊病历号:?

tianchiguaixia commented 11 months ago

对的。中间用空格分开

aixuedegege commented 11 months ago

抽取乙肝表面抗体结果能够抽取到 3.479么?

tianchiguaixia commented 11 months ago

74e7252043375c439e28cd6416b4496 421c6641a8c3283c396d19af936476e 12fa33dae6cbd835d843e7b3a4c72fb

aixuedegege commented 11 months ago

你这效果看起来的确可以啊。用了多少数据train的?

tianchiguaixia commented 11 months ago

不用训练,现有模型直接使用:document inteilgence

aixuedegege commented 11 months ago

document inteilgence不是多模态模型么,uie是语言模型,两个不一样吧?

tianchiguaixia commented 11 months ago

可以参考我的:ocr+uie信息抽取 8d7e5cbf6db7ae9cf2ccad26bdaae27

这个是uie

aixuedegege commented 11 months ago

好的 谢谢

achial commented 10 months ago

1.UIE-X解决不了你版面问题,哪怕你训练再多,解决不了换行问题。2.你需要通过ocr版面分析解析文本格式再走uie

你好,请问换行的问题怎么处理呀,我读了你们的聊天记录 我这里训练了很多次uie,只能读取表格中某个单元格的第一行的内容,如果换行了,那么就识别不到了,请问这种情况是怎么解决的,方便的话麻烦指教一下 就是我有一点印象,初次加载uie的时候日志会自己下载ocr到某个目录下,我是不是还需要训练一下ocr的版面识别的模型再给挪到对应目录里面去就解决了?

image
achial commented 10 months ago

解决了推理速度,以及模型推理内存只增不减的问题,模型内存现在大概在4g以内 发件人:achial @.> 发送日期:2023-10-09 22:23:52 收件人:PaddlePaddle/PaddleNLP @.> 抄送人:huangshuangbin @.>,Comment @.> 主题:Re: [PaddlePaddle/PaddleNLP] [Question]: UIE-X模型蒸馏或者压缩 (Issue #6371) 楼主解决了吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

哥们,我试了下这个项目,我训练完了结果不好使,速度还是那么慢,我是用的cpu

tianchiguaixia commented 10 months ago

肯定啊。直接换表格ocr+UIE就行

aixuedegege commented 10 months ago

1.UIE-X解决不了你版面问题,哪怕你训练再多,解决不了换行问题。2.你需要通过ocr版面分析解析文本格式再走uie

你好,请问换行的问题怎么处理呀,我读了你们的聊天记录 我这里训练了很多次uie,只能读取表格中某个单元格的第一行的内容,如果换行了,那么就识别不到了,请问这种情况是怎么解决的,方便的话麻烦指教一下 就是我有一点印象,初次加载uie的时候日志会自己下载ocr到某个目录下,我是不是还需要训练一下ocr的版面识别的模型再给挪到对应目录里面去就解决了?

image

是的,训练了很多次uie,但是你的输入数据里面“旦增卓嘎”很可能会被ocr切开“旦增卓xx嘎”,xx是图片中其他的字,uie是通过两个指针start end识别的,start指向“旦”,因为xx并不属于姓名,所以end指向的是“卓“,抽出来的是”旦增卓“。你训练了很多次uie是解决不了“旦增卓嘎”被切开的问题,只有去修改它里面版面分析功能,解决他的输入被切开问题,我记得他的TaskFlow里面有个layout_analysis=True的开关,你可以试试研究这个是怎么起作用的。

tianchiguaixia commented 10 months ago

你的问题不是UIE问题,是你自己ocr问题,没有版面分析,就是按行解析,没有按照表格的表格解析,文字的文字解析罢了。你这问题太简单了。我一下子都可以使用10几种方法来做:我直接表格ocr+UIE做出来。2.我建议你读读源码UIE-x。读读layout_analysis和erine-layout原理。你不会不知道UIE-x可以传入自定义的表格ocr吧。3.多模态模型连训练都不用,直接就抽取出来了。 image 你的问题实在太简单了,建议你再回去好好学习学习

tianchiguaixia commented 10 months ago

还有我说的是:你需要通过ocr版面分析解析文本格式再走uie。版面分析是要你按照不同类型解析的。你直接默认按行解析真醉了。

achial commented 10 months ago

1.UIE-X解决不了你版面问题,哪怕你训练再多,解决不了换行问题。2.你需要通过ocr版面分析解析文本格式再走uie

你好,请问换行的问题怎么处理呀,我读了你们的聊天记录 我这里训练了很多次uie,只能读取表格中某个单元格的第一行的内容,如果换行了,那么就识别不到了,请问这种情况是怎么解决的,方便的话麻烦指教一下 就是我有一点印象,初次加载uie的时候日志会自己下载ocr到某个目录下,我是不是还需要训练一下ocr的版面识别的模型再给挪到对应目录里面去就解决了?

image

是的,训练了很多次uie,但是你的输入数据里面“旦增卓嘎”很可能会被ocr切开“旦增卓xx嘎”,xx是图片中其他的字,uie是通过两个指针start end识别的,start指向“旦”,因为xx并不属于姓名,所以end指向的是“卓“,抽出来的是”旦增卓“。你训练了很多次uie是解决不了“旦增卓嘎”被切开的问题,只有去修改它里面版面分析功能,解决他的输入被切开问题,我记得他的TaskFlow里面有个layout_analysis=True的开关,你可以试试研究这个是怎么起作用的。

两位好,layout_analysis=True,我今天尝试了,aistudio上的一个测试例子可以实现效果,但是我的图片就还是识别不出来 我跑的例子的url:https://aistudio.baidu.com/projectdetail/5017442 默认的例子可以跑出来,我知道怎么使用这个开关了,也结合文档与源码看了这里接口的参数,最后传给了ocr,在调用ocr的时候加上了两个参数,table=True, ocr=True

xxxxxx/.local/lib/python3.8/site-packages/paddleocr/paddleocr.py

    if not self.layout_analysis:
        from paddleocr import PaddleOCR

        self.ocr_infer_model = PaddleOCR(show_log=False, lang=self.ocr_lang)
    else:
        from paddleocr import PPStructure

        self.layout_analysis_engine = PPStructure(table=True, ocr=True, show_log=False, lang=self.ocr_lang)

再结合这个文档 https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.6/ppstructure/docs/quickstart.md 可以得知,加了这个参数就是ocr识别的时候开启了版面分析和表格识别

我自己尝试的时候是这样子的

我的原图是这个

achial commented 10 months ago

图片没有发送出去,我自己尝试的时候是这样子的,这个图片使用的都是gang xia 在的uiex

image

我的原图是这个 7

achial commented 10 months ago

除了以上尝试,我还尝试了从标注数据训练uie模型入手,貌似解决,但实际效果不是我想要的

image

可以看到,我给他的名字分成了两个去标注,因为我看到了ocr识别之后的图像是这个样子的,我就意识到下面的‘嘎’字没有被抽取为姓名

image

使用新训练的模型测试的结果是这样子的

image
tianchiguaixia commented 10 months ago

你如果使用UIE-X,你在这个参数后面传入你表格ocr结果: image

这里再说第四种方法:

image

achial commented 10 months ago

你的问题不是UIE问题,是你自己ocr问题,没有版面分析,就是按行解析,没有按照表格的表格解析,文字的文字解析罢了。你这问题太简单了。我一下子都可以使用10几种方法来做:我直接表格ocr+UIE做出来。2.我建议你读读源码UIE-x。读读layout_analysis和erine-layout原理。你不会不知道UIE-x可以传入自定义的表格ocr吧。3.多模态模型连训练都不用,直接就抽取出来了。 image 你的问题实在太简单了,建议你再回去好好学习学习

就是,我看了一些layout_analysis,我知道需要开启ocr的版面分析和表格识别,在uie中的开关是在taskflow中加上参数layout_analysis=True

也知道了她确实是按行解析没有按照表格解析,然后识别每个cell中的文字

尝试看erine-layout,我基础不足,看到这么多公式,很难看懂,委屈 https://zhuanlan.zhihu.com/p/648572361

UIE-x可以传入自定义的表格ocr吧 这句话没懂什么意思,是指可以往uiex里面放一个自定义的excle表格吗?还是带着表格的png,jpg,pdf等文档?我知道可以传入图片或者pdf等格式的文档,也可以放http链接

多模态模型连训练都不用,直接就抽取出来了。 查阅了一下多模态模型是什么意思,文本、图像、视频、音频都能解析,是指gpt-4是吗,查阅的资料并不多,请谅解

可以提供给我一个解决跨行问题的具体方案吗,我真的有些懵了,花了一礼拜时间了,虽然定位到了是ppstructure的表格识别的问题,但是不知道怎么去处理,我是应该训练一个表格识别模型,然后把uie自己下载的表格识别模型替换一下吗

tianchiguaixia commented 10 months ago

image

tianchiguaixia commented 10 months ago

image 就是换行问题,不是UIE问题。而是OCR问题。

tianchiguaixia commented 10 months ago

后面你直接传我上面ocr结果去使用UIE和UIE-x或者document inteillgence等等

achial commented 10 months ago

你如果使用UIE-X,你在这个参数后面传入你表格ocr结果: image

这里再说第四种方法:

image

加上layout参数,这个我尝试过,我是这么使用的,如图,但是调用之后,没有返回值,那四个数字放的是姓名的四个坐标

image image

关于表格识别的结果放到这里 我使用的命令是 paddleocr --image_dir=7.png --type=structure --layout=false

我识别完这个图片的表格是这样子的,总感觉不对呀

image

说的意思是指把这个命令执行完之后的res_0.txt文档中,我找到关于姓名的那四个坐标放到layout里面吗。。。我总感觉我理解错了

achial commented 10 months ago

不行啊,奥特曼,document_intelligence,换行还是识别不了啊

image
tianchiguaixia commented 10 months ago

你的OCR问题,解析不了表格。你换我的ocr image

achial commented 10 months ago

不行啊,奥特曼,我下了这个项目也是识别三个字,我看日志它也是重新下载了ocr的layout模块,是我使用的方式错了吗,为啥我打开的页面和你的截图页面不一样呀,不是这个项目吗,两个项目都试了😭,你的ocr是哪个啊

image image
achial commented 10 months ago
image
tianchiguaixia commented 10 months ago

合合表格ocr,腾讯表格ocr,阿里表格ocr。你选一个就行

tianchiguaixia commented 10 months ago

https://github.com/PaddlePaddle/PaddleNLP/assets/29837553/53045a58-e3d7-464d-acc8-2f1afd99776b

aixuedegege commented 10 months ago

兄弟 你上面是怎么做的?把ocr的结果丢给一个llm么?让他输出json?

tianchiguaixia commented 10 months ago

1.支持所有图片类型 2.支持交互,所答即所见 3.针对换行的文本,解决换行问题 4.返回坐标信息 5.自定义化的功能,本地的定义,fewshot学习,各种大模型切换等等。

tianchiguaixia commented 10 months ago

https://github.com/PaddlePaddle/PaddleNLP/assets/29837553/ab588a09-f252-434a-a525-f099ea4041b8

tianchiguaixia commented 10 months ago

https://github.com/PaddlePaddle/PaddleNLP/assets/29837553/1556e01b-19c2-4662-913d-2c0cffbaa610

tianchiguaixia commented 10 months ago

https://github.com/PaddlePaddle/PaddleNLP/assets/29837553/41fefa9f-4cd4-420a-8f44-6f6ffeb79bf4

aixuedegege commented 10 months ago

请教下流程是什么,多模态的llm还是ocr后送进去的?

tianchiguaixia commented 10 months ago

大段文本送进去就行

VignetteApril commented 6 months ago

这已经跑题了啊。请问官方,UIE-X模型蒸馏什么时候出?

tianchiguaixia commented 6 months ago

这已经跑题了啊。请问官方,UIE-X模型蒸馏什么时候出?

1年前就出了,你都不看github的?我都使用了蒸馏的UIE-x了

VignetteApril commented 6 months ago

这已经跑题了啊。请问官方,UIE-X模型蒸馏什么时候出?

1年前就出了,你都不看github的?我都使用了蒸馏的UIE-x了

看了,没找到,有没有UIE-X蒸馏模型得连接?分享下,感谢!