刚开始接触深度学习相关内容,在这儿做一个笔记:
网址:https://gitee.com/paddlepaddle/PaddleNLP
paddle-nlp 是一个自然语言处理NLP方面的工具包(代码库)
ERNIE
ERNIE是百度基于BERT改进的预训练大模型,结合了Transformer 架构和知识增强机制。
整体上可以分为预训练模型层和任务适配层,预训练模型层负责学习通用的语言知识和语义表示,
任务适配层则针对不同的自然语言处理任务进行微调。
3.0版基座模型具有 260 亿参数
UIE
UIE 是在 ERNIE 3.0 基础上针对信息抽取任务进行微调得到的,针对特定任务更新部分参数权重。
UIE基于paddle-nlp的代码库开发,提供了绑定uie模型的 信息抽取api
PaddleNLP 是一个功能丰富的自然语言处理工具包,内部集成了多种类型的模型,涵盖了预训练语言模型、序列模型、图神经网络模型等:
预训练语言模型
Transformer 架构相关
BERT 系列
BERT:Bidirectional Encoder Representations from Transformers,是一种基于 Transformer 编码器的预训练语言模型,
通过双向自注意力机制学习上下文信息。PaddleNLP 提供了不同版本的 BERT 预训练模型,如 bert-base-chinese、bert-base-uncased 等,
可用于多种自然语言处理任务,如文本分类、命名实体识别等。
ERNIE:Enhanced Representation through Knowledge Integration,百度基于 BERT 改进的预训练模型,在中文自然语言处理任务中表现出色。
它通过引入知识图谱等外部知识,增强了模型的语义理解能力。PaddleNLP 提供了多个版本的 ERNIE 模型,如 ernie-1.0、ernie-2.0 等。
RoBERTa:一种优化的 BERT 变体,通过调整训练策略(如更大的批量大小、更长的训练时间等),
在多个自然语言处理基准测试中取得了更好的效果。PaddleNLP 集成了 RoBERTa 模型,可用于各种文本处理任务。
XLNet:一种广义自回归预训练模型,结合了自回归和自编码模型的优点,在长文本处理和语言建模任务中表现良好。PaddleNLP 提供了 XLNet 模型的支持。
GPT 系列
GPT - 2:Generative Pretrained Transformer 2,是一种基于 Transformer 解码器的生成式预训练模型,具有强大的文本生成能力。
PaddleNLP 集成了 GPT - 2 模型,可用于文本生成、对话系统等任务。
序列模型
BiLSTM - CRF:Bidirectional Long Short - Term Memory with Conditional Random Field,是一种常用于序列标注任务(如命名实体识别)的模型结构。
BiLSTM 用于捕捉序列数据的上下文信息,CRF 用于考虑标签之间的依赖关系,提高标注的准确性。PaddleNLP 可以支持用户自定义实现 BiLSTM - CRF 模型。
信息抽取模型
UIE:Universal Information Extraction,通用信息抽取模型,基于 ERNIE 3.0 等预训练模型开发,
能够从文本中抽取各种类型的信息,如实体、关系、事件等。用户可以通过 Taskflow('information_extraction') 方便地使用 UIE 模型进行信息抽取任务。
图神经网络模型
GraphSAGE:Graph Sample and Aggregate,是一种用于图数据的归纳式表示学习模型。
在自然语言处理中,图神经网络模型可用于处理具有图结构的数据,如知识图谱、文本图等。PaddleNLP 提供了对 GraphSAGE 等图神经网络模型的支持。
多模态模型
ERNIE - ViL:一种基于 ERNIE 架构的多模态预训练模型,结合了图像和文本两种模态的信息,可用于图像文本匹配、视觉问答等多模态任务。
以上只是 PaddleNLP 中集成的部分模型,随着技术的发展和更新,PaddleNLP 会不断添加新的模型和功能,以满足不同用户的需求。
对GPU算力的需求
训练和微调阶段:以常见的深度学习优化算法(如随机梯度下降及其变种)为例,
在每一轮迭代中,都需要计算损失函数对模型参数的梯度,并根据梯度更新参数。
对于大模型来说,这个计算过程涉及到大量的矩阵运算,使用 CPU 进行计算会非常缓慢,
而 GPU 可以同时处理多个计算任务,大大提高了计算效率。
运行阶段:在进行文本生成任务时,模型需要根据输入的文本生成后续的内容,这个过程涉及到模型的前向传播计算。
对于大模型来说,前向传播计算仍然具有一定的计算复杂度,尤其是在处理长文本或生成高质量的输出时。
使用 GPU 可以加速前向传播过程,减少响应时间,提高用户体验
模型微调
如果预训练的 UIE 模型不能满足特定业务需求,可以使用自己的数据集对模型进行微调。步骤如下:
数据准备:准备标注好的训练数据。
配置训练参数:设置学习率、批次大小、训练轮数等参数。
微调训练:使用 PaddleNLP 提供的工具和接口进行模型微调。
服务部署
Flask 或 FastAPI:可以使用 Flask 或 FastAPI 等 Web 框架将模型封装成 API 服务。
以下是一个使用 Flask 的简单示例:
from flask import Flask, request, jsonify
from paddlenlp import Taskflow
app = Flask(__name__)
ie = Taskflow('information_extraction', schema=["时间", "地点", "人物"])
@app.route('/extract', methods=['POST'])
def extract():
data = request.get_json()
text = data.get('text')
result = ie(text)
return jsonify(result)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
paddle-nlp Release/2.9版本,依赖:
python >= 3.7
paddlepaddle >= 2.6.0
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。