聊聊从大模型来看NLP解决方案之UIE

聊聊从大模型来看NLP解决方案之UIE自然语言处理 NLP 任务的实现 相比较以前基于传统机器学习算法实现方法 现在越来越集中使用大模型来实现

大家好,欢迎来到IT知识分享网。

概述

预训练基座模型主要以ERINE系列大模型为主,毕竟是自家的噻。

UIE

开箱即用

paddlenlp.Taskflow提供通用信息抽取、评价观点抽取等能力,可抽取多种类型的信息,包括但不限于命名实体识别(如人名、地名、机构名等)、关系(如电影的导演、歌曲的发行时间等)、事件(如某路口发生车祸、某地发生地震等)、以及评价维度、观点词、情感倾向等信息。用户可以使用自然语言自定义抽取目标,无需训练即可统一抽取输入文本中的对应信息。实现开箱即用,并满足各类信息抽取需求。
以实体抽取任务为例:
命名实体识别(Named Entity Recognition,简称NER),是指识别文本中具有特定意义的实体。在开放域信息抽取中,抽取的类别没有限制,用户可以自己定义。

  • 例如抽取的目标实体类型是”时间”、“选手”和”赛事名称”, schema构造如下:
['时间', '选手', '赛事名称'] 

调用示例:

>>> from pprint import pprint >>> from paddlenlp import Taskflow >>> schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction >>> ie = Taskflow('information_extraction', schema=schema) >>> pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) # Better print results using pprint [{'时间': [{'end': 6, 'probability': 0.24486, 'start': 0, 'text': '2月8日上午'}], '赛事名称': [{'end': 23, 'probability': 0.68272, 'start': 6, 'text': '北京冬奥会自由式滑雪女子大跳台决赛'}], '选手': [{'end': 31, 'probability': 0.81138, 'start': 28, 'text': '谷爱凌'}]}] 
  • 例如抽取的目标实体类型是”肿瘤的大小”、“肿瘤的个数”、“肝癌级别”和”脉管内癌栓分级”, schema构造如下:
['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级'] 

在上例中我们已经实例化了一个Taskflow对象,这里可以通过set_schema方法重置抽取目标。调用示例:

>>> schema = ['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级'] >>> ie.set_schema(schema) >>> pprint(ie("(右肝肿瘤)肝细胞性肝癌(II-III级,梁索型和假腺管型),肿瘤包膜不完整,紧邻肝被膜,侵及周围肝组织,未见脉管内癌栓(MVI分级:M0级)及卫星子灶形成。(肿物1个,大小4.2×4.0×2.8cm)。")) [{'肝癌级别': [{'end': 20, 'probability': 0.02701, 'start': 13, 'text': 'II-III级'}], '肿瘤的个数': [{'end': 84, 'probability': 0.59623, 'start': 82, 'text': '1个'}], '肿瘤的大小': [{'end': 100, 'probability': 0.59491, 'start': 87, 'text': '4.2×4.0×2.8cm'}], '脉管内癌栓分级': [{'end': 70, 'probability': 0.34664, 'start': 67, 'text': 'M0级'}]}] 

UIE支持多种NLP任务,毕竟是统一信息抽取框架。其它的任务可以参考官方文档。

基座模型

肯定是自家的预训练基座啦。

模型 结构 语言
uie-base (默认) 12-layers, 768-hidden, 12-heads 中文
uie-base-en 12-layers, 768-hidden, 12-heads 英文
uie-medical-base 12-layers, 768-hidden, 12-heads 中文
uie-medium 6-layers, 768-hidden, 12-heads 中文
uie-mini 6-layers, 384-hidden, 12-heads 中文
uie-micro 4-layers, 384-hidden, 12-heads 中文
uie-nano 4-layers, 312-hidden, 12-heads 中文
uie-m-large 24-layers, 1024-hidden, 16-heads 中、英文
uie-m-base 12-layers, 768-hidden, 12-heads 中、英文

uie模型是基于ERINE基座模型训练出来的。

微调—定制化

其实在我个人的角度来看,上述的内容在很多的框架、平台都已经有了;譬如Modelscope,我现在养成习惯,遇到啥NLP相关的、大模型相关的,就去Modelscope找解决策略。但在Modelscope上有个最大的问题,当然这是我个人的看法——微调支持不够,很多的模型/库压根没有微调。老实说,这的确是帮助不大,在很多时候我们需要的是可以接入的定制化实现。

这也正常,毕竟如果开放了微调,支持灵活的定制化,对开源方就不太友好了。

而相比较来说,PaddleNLP的微调支持就很到位了。

数据标注

基于doccano标注平台做数据标注。可参考: [聊聊层次多标签分类NLP任务的实践]

模型微调

export finetuned_model=./checkpoint/model_best python finetune.py \ --device gpu \ --logging_steps 10 \ --save_steps 100 \ --eval_steps 100 \ --seed 42 \ --model_name_or_path uie-base \ --output_dir $finetuned_model \ --train_path data/train.txt \ --dev_path data/dev.txt \ --max_seq_length 512 \ --per_device_eval_batch_size 16 \ --per_device_train_batch_size 16 \ --num_train_epochs 20 \ --learning_rate 1e-5 \ --label_names "start_positions" "end_positions" \ --do_train \ --do_eval \ --do_export \ --export_model_dir $finetuned_model \ --overwrite_output_dir \ --disable_tqdm True \ --metric_for_best_model eval_f1 \ --load_best_model_at_end True \ --save_total_limit 1 

模型评估

可忽略

模型预测

paddlenlp.Taskflow装载定制模型,通过task_path指定模型权重文件的路径,路径下需要包含训练好的模型权重文件model_state.pdparams。

>>> from pprint import pprint >>> from paddlenlp import Taskflow >>> schema = ['出发地', '目的地', '费用', '时间'] # 设定抽取目标和定制化模型权重路径 >>> my_ie = Taskflow("information_extraction", schema=schema, task_path='./checkpoint/model_best') >>> pprint(my_ie("城市内交通费7月5日金额114广州至佛山")) [{'出发地': [{'end': 17, 'probability': 0.35301, 'start': 15, 'text': '广州'}], '时间': [{'end': 10, 'probability': 0.61399, 'start': 6, 'text': '7月5日'}], '目的地': [{'end': 20, 'probability': 0.26735, 'start': 18, 'text': '佛山'}], '费用': [{'end': 15, 'probability': 0.92856, 'start': 12, 'text': '114'}]}] 

模型部署

  • 模型导出:模型训练、压缩时已经自动进行了静态图的导出以及 tokenizer 配置文件保存,保存路径${finetuned_model} 下应该有 .pdimodel、.pdiparams 模型文件可用于推理。
  • 模型部署:
# UIE 模型 CPU 推理 python deploy/python/infer.py --model_dir ./checkpoint/model_best --device cpu # UIE 模型 GPU 推理 python deploy/python/infer.py --model_dir ./checkpoint/model_best --device gpu 

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136924.html

(0)
上一篇 2025-06-24 13:20
下一篇 2025-06-24 13:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信