来源:互联网 更新时间:2026-08-02 12:48
自然语言处理(NLP)任务在今天这个时代,实现方式已经和以前大不一样了。过去我们忙着折腾传统机器学习算法,现在基本上都往大模型上靠——毕竟大模型天生就是为NLP而生的。

整个流程走下来就是:数据标注 → 模型训练 → 模型调优/微调 → 模型压缩 → 预测部署。这一套流水线几乎能覆盖NLP的绝大多数场景,而且开发者既可以直接拿来用,也可以灵活定制。
PaddleNLP就是这套思路下的典型代表。它把业界那些优质的预训练模型打包在一起,提供“开箱即用”的体验,同时还搭配了一堆产业实践范例,满足开发者灵活定制的需求。
❝预训练基座模型主要以ERINE系列大模型为主,毕竟是自家的噻。
之前聊过PaddleNLP库与层次多标签文本分类任务,以及层次多标签分类NLP任务的实践,那些都是基于预训练大模型ERINE的解决方案。
UIE,全称Universal Information Extraction——通用信息抽取统一框架。官方文档:UIE[1]。
这个框架把实体抽取、关系抽取、事件抽取、情感分析这些任务统一建模了,而且不同任务之间还能互相迁移和泛化。PaddleNLP借鉴了论文[2]的方法,基于
paddlenlp.Taskflow直接提供了通用信息抽取、评价观点抽取等能力。它能抽取的类型五花八门:命名实体识别(人名、地名、机构名)、关系(电影的导演、歌曲的发行时间)、事件(某路口车祸、某地地震)、评价维度、观点词、情感倾向……用户只需要用自然语言自定义抽取目标,不用训练就能直接抽取。说白了,就是开箱即用,满足各种信息抽取需求。
命名实体识别(NER),就是识别文本中有特定意义的实体。在开放域信息抽取里,类别没有限制,用户自己说了算。
['时间', '选手', '赛事名称']
调用示例:
>>> 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.9857378532924486,
'start': 0,
'text': '2月8日上午'}],
'赛事名称': [{'end': 23,
'probability': 0.8503089953268272,
'start': 6,
'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
'选手': [{'end': 31,
'probability': 0.8981548639781138,
'start': 28,
'text': '谷爱凌'}]}]
['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级']
前面已经实例化了一个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.9243267447402701,
'start': 13,
'text': 'II-III级'}],
'肿瘤的个数': [{'end': 84,
'probability': 0.7538413804059623,
'start': 82,
'text': '1个'}],
'肿瘤的大小': [{'end': 100,
'probability': 0.8341128043459491,
'start': 87,
'text': '4.2×4.0×2.8cm'}],
'脉管内癌栓分级': [{'end': 70,
'probability': 0.9083292325934664,
'start': 67,
'text': 'M0级'}]}]
UIE当然不止这些,毕竟是统一的抽取框架,其他任务直接参考官方文档就行。
基座模型自然是自家的预训练基座,没有悬念。
| 模型 | 结构 | 语言 |
|---|---|---|
| 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有个硬伤——微调支持不够。很多模型和库压根就不提供微调能力,这对于需要定制化落地的场景来说,帮助确实不大。毕竟很多时候我们需要的不是现成的玩具,而是能接入实际业务的定制化实现。
❝这也正常,如果开放了微调,支持灵活定制,对开源方来说就有点不友好了。
相比之下,PaddleNLP在微调这块做得就非常到位。
基于doccano标注平台做数据标注,具体可以参考聊聊层次多标签分类NLP任务的实践。
推荐使用Trainer API[3]对模型进行微调。只需要输入模型、数据集,Trainer API就能高效快速地完成预训练、微调和模型压缩等任务,一键启动多卡训练、混合精度训练、梯度累积、断点重启、日志显示……它还针对训练过程的通用配置做了封装,比如优化器、学习率调度这些。
下面这条命令以uie-base为预训练模型进行微调,微调后的模型保存到$finetuned_model:
单卡启动:
export finetuned_model=./checkpoint/model_best
python finetune.py \
--device gpu \
--logging_steps 10 \
--sa ve_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 \
--sa ve_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.9975287467835301,
'start': 15,
'text': '广州'}],
'时间': [{'end': 10,
'probability': 0.9999476678061399,
'start': 6,
'text': '7月5日'}],
'目的地': [{'end': 20,
'probability': 0.9998511131226735,
'start': 18,
'text': '佛山'}],
'费用': [{'end': 15,
'probability': 0.9994474579292856,
'start': 12,
'text': '114'}]}]
${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
PaddleNLP本质上是一个基于预训练大模型的NLP任务解决方案库,所以它的实践流程高度统一:数据标注 → 模型训练 → 模型调优/微调 → 模型压缩 → 预测部署。深入熟悉这个库,对于掌握NLP和大模型在实际应用中的落地非常有帮助。如果正在做相关方向,建议花点时间了解一下。
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
Binance新增15种bStocks代币化证券为杠杆抵押资产
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
忍者必须死3极刃血影角色介绍
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
余姚的路虎4s店在哪个位置
彩云天气怎么看分钟级降雨预报 彩云天气精准预报方法【技巧】
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
遗忘之海密室通关教程 遗忘之海密室全关卡解谜思路与难点解析
华为Mate 70系列首发的红枫镜头下放至千元档:全员普及原色影像
合集38个项目筹集5.406亿美元 Figure融资2亿
国家养老服务消费补贴上线京东
英伟达机器人团队在京沪深招人,聚焦具身智能等四大领域
一站式PDF转Markdown解决方案PDF3MD
硬刚苹果!华为9月新品阵容出炉:Mate 90系列、全新三折叠
微软Copilot AI漏洞可致敏感数据泄露,企业用户需及时更新
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc