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

概述

自然语言处理NLP任务的实现,相比较以前基于传统机器学习算法实现方法,现在越来越集中使用大模型来实现。
通过——数据标注-模型训练-模型调优/微调-模型压缩-预测部署的大模型流程,覆盖NLP多场景满足开发者落地实现与灵活定制的需求。
PaddleNLP是其中典型的NLP解决方案库,通过聚合业界优质预训练模型并提供开箱即用的开发体验,覆盖NLP多场景的模型库搭配产业实践范例可满足开发者灵活定制的需求。

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

UIE

UIE:Universal Information Extraction,通用信息抽取统一框架。官方文档:[UIE]。
该框架实现了实体抽取、关系抽取、事件抽取、情感分析等任务的统一建模,并使得不同任务间具备良好的迁移和泛化能力。PaddleNLP借鉴[论文]的方法,基于ERNIE 3.0知识增强预训练模型,训练并开源了首个中文通用信息抽取模型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.9857378532924486,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503089953268272,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981548639781138,
          '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.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支持多种NLP任务,毕竟是统一信息抽取框架。其它的任务可以参考官方文档。

基座模型

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

模型结构语言
uie-base (默认)12-layers, 768-hidden, 12-heads中文
uie-base-en12-layers, 768-hidden, 12-heads英文
uie-medical-base12-layers, 768-hidden, 12-heads中文
uie-medium6-layers, 768-hidden, 12-heads中文
uie-mini6-layers, 384-hidden, 12-heads中文
uie-micro4-layers, 384-hidden, 12-heads中文
uie-nano4-layers, 312-hidden, 12-heads中文
uie-m-large24-layers, 1024-hidden, 16-heads中、英文
uie-m-base12-layers, 768-hidden, 12-heads中、英文

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

微调—定制化

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

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

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

数据标注

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

模型微调

荐使用 [Trainer API]对模型进行微调。只需输入模型、数据集等就可以使用 Trainer API 高效快速地进行预训练、微调和模型压缩等任务,可以一键启动多卡训练、混合精度训练、梯度累积、断点重启、日志显示等功能,Trainer API 还针对训练过程的通用训练配置做了封装,比如:优化器、学习率调度等。
使用下面的命令,使用 uie-base 作为预训练模型进行模型微调,将微调后的模型保存至$finetuned_model:
单卡启动:

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.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'}]}]

模型部署

  • **模型导出:**模型训练、压缩时已经自动进行了静态图的导出以及 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技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

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

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

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

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

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

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

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

👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

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

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

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

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

<think>好的,我现在需要帮用户解答关于紫微斗数中“天干飞星禄遇到生年禄”的问题。首先,我得确认自己对这两个术语的理解是否正确。 用户提到的“天干飞星禄”应该是指根据宫位天干飞出的禄存星,而“生年禄”则是出生年天干带来的禄存星。当这两者在同一宫位相遇时,可能产生某种叠加效应。不过,我需要回忆一下紫微斗数中禄存的飞星法则,以及生年四化的应用。 接下来,我需要考虑这两者的相互作用。禄存代表财富、福气,但飞星禄和生年禄相遇时,是不是意味着双倍的吉利?或者有没有可能因为星曜之间的冲突而产生变化?比如,如果宫位本身有煞星,或者主星不同,结果可能不同。 然后,还要注意宫位的重要性。比如,财帛宫遇到这种情况可能主财运旺盛,而夫妻宫可能影响感情关系。同时,天干飞星禄是否属于流年或大运的范畴,而生年禄是先天命盘的因素,两者的时间维度叠加可能会有不同的应期。 另外,用户可能想知道具体的案例或者如何判断吉凶。需要提醒他们结合整个命盘来分析,比如其他星曜的分布、四化的引动等。避免过于简化的结论,强调综合分析的必要性。 最后,确保语言通俗易懂,避免使用过多专业术语,但必要时解释清楚。结构上分点说明,先解释概念,再分析相遇的情况,最后给出实际建议。同时,提醒可能存在不同流派的解释差异,建议咨询专业人士。</think>在紫微斗数中,“天干飞星禄遇到生年禄”是一个需要结合飞星四化与生年四化综合分析的特殊情况,其意义需从以下层面逐步理解: --- ### 一、基础概念解析 1. **生年禄** 指出生年天干所化出的禄存星,代表命主先天福报与机遇,反映一生中较稳定的福气、财源或人缘优势。 2. **天干飞星禄** 指根据宫位天干飞化出的禄存星(如某宫天干为甲,则甲廉贞化禄),主后天环境或事件引发的增益机会,常与流年、大运、特定事件相关。 --- ### 二、二者相遇的象征意义 当某宫位同时存在 **生年禄** 与 **天干飞星禄** 时,形成“双禄交驰”,通常体现为: - **吉象叠加**:财富、人缘、机遇的强化,可能带来双重助力(如贵人相助、财源广进)。 - **动态联动**:先天福报与后天努力共振,易触发实质收益(如投资获利、合作成功)。 - **宫位特性放大**:若在财帛宫则财运亨通,在夫妻宫则感情和谐,在迁移宫则外出顺利。 --- ### 三、需注意的变量 1. **星曜组合** 若该宫主星为财星(如武曲、太阴),吉象更显;若主星弱或逢煞忌(如擎羊、陀罗),则可能“禄逢冲破”,需防利益纠纷或昙花一现。 2. **时间维度** - **生年禄**:贯穿一生,但需大运、流年引动方显效。 - **飞星禄**:时效性强,常应验于特定事件或阶段(如某年合作项目获利)。 3. **四化交互** 若其他天干化出权、科、忌与此宫关联,需综合判断。例如: - 逢化权:机遇伴随竞争或需主动争取。 - 逢化忌:需防乐极生悲或因得利招妒。 --- ### 四、实例说明 **案例**:某人命盘夫妻宫有生年禄(甲干廉贞化禄),流年夫妻宫天干为癸引发破军化禄(癸干破军化禄)。 - **解释**:双禄强化感情关系,可能促成婚恋或修复矛盾,但若破军化禄与擎羊同度,需注意激情后的稳定性。 --- ### 五、总结建议 1. **把握机遇**:双禄叠加期宜积极行动,尤其在相关宫位领域(如财帛宫宜投资)。 2. **防范风险**:检视宫位煞忌,避免盲目乐观。 3. **结合全盘**:需参考本宫主星、三方四正及大运流年,建议咨询专业命理师详析。 若需进一步分析,请提供命盘具体信息(如宫位、星曜分布)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值