近期 Prompt 范式备受关注,实际上,其思想在产业界已经有了一些成功的应用案例。中科院软件所和百度共同提出了大一统诸多任务的通用信息抽取技术 UIE(Universal Information Extraction)。截至目前,UIE 系列模型已发布 UIE、UIE-X、UIE-senta 三大模型。基于 Prompt 思想,UIE 系列模型凭借其强大的零样本与小样本能力、多任务统一建模能力,成为业界在信息抽取、情感分析等任务上的首选方案。
UIE系列模型(UIE、UIE-X、UIE-senta)基本信息表
本次产业实践范例基于 UIE-X 和 OpenVINO 实现医疗文档信息抽取,提供了 UIE-X 模型在 Intel x86 平台上优化部署的完整方案,降低了产业落地门槛,可迁移至金融等行业的信息抽取应用场景。
项目链接
https://aistudio.baidu.com/aistudio/projectdetail/6335929?contributionType=1
场景难点
- 文档种类繁多、版式多样,如何有效结合文本、图片、布局信息进行建模是一大难题;
- 传统基于序列标注的抽取方案依赖大量领域标注数据,成本极高;
- 同一个业务中往往存在实体、关系等多种信息抽取需求,单独建模训练成本高。
模型选型
除了纯文本内容外,企业中还存在大量需要从跨模态文档中抽取信息并进行处理的业务场景,例如目前医疗领域有大量的医学检查报告单、病历、发票以及 CT 影像等医疗图片数据。为了满足跨模态文档信息抽取需求, PaddleNLP 基于文心 ERNIE-Layout 跨模态布局增强预训练模型,集成 PaddleOCR的PP-OCR、PP-Structure 版面分析等领先能力,基于大量信息抽取标注集,训练并开源了 UIE-X——首个兼具文本及文档抽取能力、多语言、开放域的信息抽取模型。
本案例为 UIE-X 在医疗领域的实战,通过少量标注+模型微调即可具备定制场景的端到端文档信息提取能力。为实现智能文档信息抽取,我们采取“定义 schema”、“Taskflow 定义”、“指定进行信息抽取的文档”的方案:
- 第一步,基于 Prompt 范式,定义信息抽取的任务及所需抽取的信息;
- 第二步,定义 Taskflow,包括装载定制模型。通过 task_path 指定模型权重文件的路径,路径下需要包含训练好的模型权重文件 model_state.pdparams;
- 第三步,指定进行信息抽取的文档所在路径 doc_path,进行信息抽取。
飞桨通过庞大、精选的模型库,能够显著降低用户在模型选择方面的难度,降低时间成本,实现快速迭代。在落地阶段使用 Intel OpenVINO™ 工具套件进行模型部署,充分发挥通用x86平台上的网络执行效能,优化方案整体成本,提升方案推理性能。
调优策略
- 基于 OpenVINO 的 auto-device 中提供的多种 performance hint 策略,根据使用场景需求的不同,进行多线程配置,提升推理吞吐量或降低延迟。
- 支持 Intel CPU 以及 GPU 上的 Dynamic Input Shape 以提升方案在进行信息抽取时的推理性能,在保证推理时延的同时,优化方案整体成本。
模型部署
本项目的最终部署环境为 Intel x86 硬件平台设备。考虑开发便捷性,本次示例使用 Python 部署开发环境。通过输入医疗文档图片以及定义抽取信息的 schema,利用 Taskflow 框架完成基于 UIE-X 的智能信息抽取。
该方案可以支持中文及英文的 Prompt/schema 以及跨语言抽取,同时也支持定制 OCR 结果。通过配置 layout 参数传入 OCR Bounding Box 信息,优化抽取效果。飞桨 AI Studio 也提供了完整的使用示例与开发说明,可参考该教程快速学习,并针对实际项目进行开发和集成。
医疗文档信息抽取部署demo方案
为了让小伙伴们更便捷地应用范例教程,OpenVINO 布道师武卓博士将于6月14日(周三)19:00为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。
飞桨PaddlePaddle