ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PaddleFormers 开放域对话生成:plato2_en_base 模块的安装、预测与服务化部署指南

PaddleFormers 开放域对话生成:plato2_en_base 模块的安装、预测与服务化部署指南 人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载导读plato2_en_base 是 PaddleFormers 仓库中基于 PaddlePaddle 实现的一个大规模开放域生成式对话模型模块隶属于文本-文本生成类别。本文以其官方模块文档为核心结合仓库内 module.py 与 model.py 等源码系统讲解该模型的能力边界、环境安装、命令行预测、Python API 调用、多轮交互模式以及基于 PaddleHub Serving 的对话机器人服务化部署。读完本文你将能够在本机一键安装该模块、通过hub run或 Python 代码获得模型回复并把对话服务以 HTTP API 形式对外提供。一、模型基本信息模型名称plato2_en_base类别文本-文本生成网络PLATO2数据集大规模开放域英文数据集是否支持 Fine-tuning否模型大小3.5 GB最新更新日期2022-11-05数据指标-模型介绍PLATO2 是一个超大规模生成式对话系统模型承袭了 PLATO 通过隐变量latent variable进行回复多样化生成的特性能够就开放域话题进行流畅深入的聊天。据公开资料其效果超越了 Google 于 2020 年 2 月发布的 Meena 与 Facebook AI Research 于 2020 年 4 月发布的 Blender。plato2_en_base 包含 310M 参数可用于一键预测对话回复由于该 Module 参数量较多推荐使用 GPU 预测。从源码结构看模块的模型本体在 model.py 中实现其组成与文档描述相互印证Plato2EncoderLayer/Plato2Encodermodel.py24 层 Transformer 编码器含多头自注意力nn.MultiHeadAttention、前馈网络隐藏维度为 4 倍、LayerNorm 与 GELU 激活并支持增量缓存cache用于自回归解码。NSPmodel.pyNext Sentence Prediction 打分网络用于对候选回复做重排序。Plato2InferModelmodel.py推理总入口串联编码器、隐变量扩展、自回归解码与 NSP 打分。模块参数num_layers24时n_head16、hidden_size1024num_layers32时n_head32、hidden_size2048在 module.py 中根据层数自动确定其余默认配置见 module.pyvocab_size8001、latent_type_size20、num_layers24、is_cnFalse。二、安装1、环境依赖paddlepaddle 2.0.0paddlehub 2.1.0PaddleHub 的完整安装指引参见 安装文档。2、安装$ hub install plato2_en_base如安装时遇到问题可参考不同系统的零基础安装教程零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装需要说明的是hub install会把模型权重下载到本地模型约 3.5 GB。从 module.py 的实现看加载时会从模块目录assets/下读取24L.pdparams预训练权重、vocab.txt词表与spm.modelSentencePiece 模型缺少任一文件都无法完成初始化。三、模型 API 预测1、命令行预测使用hub run一行命令即可完成单轮对话预测$ hub run plato2_en_base --input_textHello, how are you该命令走的是模块内run_cmd入口module.py解析--input_text输入校验格式后调用generate并把结果打印出来。2、预测代码示例import paddlehub as hub module hub.Module(nameplato2_en_base) test_texts [Hello, Hello\thi, nice to meet you\tnice to meet you] results module.generate(textstest_texts) for result in results: print(result)关键点在于输入格式列表中的每个元素代表一次完整对话的上下文人类与机器人之间的聊天内容用\t分隔。例如Hello\thi, nice to meet you\tnice to meet you表示机器人回复了hi, nice to meet you后人类又回复nice to meet you现在轮到机器人回复。在 module.py 中\t会被替换为[SEP]送入 reader 解析不同轮次的话语因此在模型侧以[SEP]标记衔接。3、API 详解def generate(texts):预测 API输入对话上下文输出机器回复。参数texts (list[str] 或 str)如果不在交互模式中texts 应为 list每个元素为一次对话的上下文上下文应包含人类和机器人的对话内容不同角色之间的聊天用分隔符\t分割例如[Hello\thi, nice to meet you\tnice to meet you]。这个输入中包含 1 次对话机器人回复了hi, nice to meet you后人类回复nice to meet you现在轮到机器人回复。如果在交互模式中texts 应为 str模型将自动构建它的上下文。def interactive_mode(max_turn6):进入交互模式。交互模式中generate 接口的 texts 将支持字符串类型。参数max_turn (int)模型能记忆的对话轮次。当 max_turn 1 时模型只能记住当前对话无法获知之前的对话内容。从源码看interactive_mode是一个上下文管理器module.py进入后置_interactive_modeTrue并初始化空 contextwith块结束后自动清空 context 并退出交互模式。交互模式内部用 [SEP] .join(self.context[-self.max_turn:])把最近max_turn条话语拼成上下文module.py生成回复后也会把回复追加进 context从而支持多轮记忆。典型用法with module.interactive_mode(max_turn6): print(module.generate(Hello)) print(module.generate(What do you like?))生成过程与重排序原理了解回复的产生过程有助于合理使用该模型。结合 model.py 可以还原推理链路隐变量扩展latent_type_size20意味着对每条输入会复制出 20 份隐变量候选通过latent_weight生成隐变量嵌入model.py以隐变量的多样性支撑回复多样化。对应地输入批大小会被乘以 latent_type_sizemodule.py每条样本的 latent_id 在 utils/init.py 中生成。自回归解码decode采用 top-ktopk10截断后的概率采样逐步生成 tokenmax_dec_len64、min_dec_len1model.py解码时会对unk、bos、mask等特殊 token 的 logits 做屏蔽。NSP 重排序解码完成后由NSP网络对“上下文 生成回复”打分从多个候选中选择得分最高者作为最终回复model.py。get_results还会计算跨轮次与轮内三元组重复率若回复出现重复或超过最大解码长度会对得分施加-1e3的惩罚从而显著抑制复读现象model.py。数据侧dialog_reader.py 负责将输入文本分词SentencePieceTokenizer见 tokenization.py、切分[SEP]语句、追加bos/eos特殊标记、生成位置信息并按max_src_len128截断PlatoReader与NSPReaderplato_reader.py、nsp_reader.py在其基础上完成 padding、掩码与输入张量构造。四、服务部署PaddleHub Serving 可以部署一个在线对话机器人服务。第一步启动 PaddleHub Serving运行启动命令$ hub serving start -m plato2_en_base -p 8866这样就完成了一个对话机器人服务化 API 的部署默认端口号为 8866。NOTE如使用 GPU 预测则需要在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量否则不用设置。第二步发送预测请求配置好服务端后以下代码即可实现发送预测请求、获取预测结果import requests import json data {texts: [Hello, Hello\thi, nice to meet you\tnice to meet you]} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/plato2_en_base r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 保存结果 results r.json()[results] for result in results: print(result)请求体中的texts字段与generate接口的输入语义完全一致非交互模式下为对话上下文列表轮次之间用\t分隔。服务端在generate方法上标注了serving装饰器module.py因此该方法会被自动暴露为可通过 HTTP 调用的预测端点。关于 PaddleHub Serving 的更多信息可参考 服务部署文档。五、更新历史1.0.0初始发布。1.1.0移除 Fluid API。如需安装指定历史版本可使用带版本号的安装命令$ hub install plato2_en_base1.1.0六、小结plato2_en_base 以 310M 参数、24 层 Transformer 编码器为核心通过隐变量机制实现多样化回复并以 NSP 打分与重复检测完成回复优选是一个可直接开箱使用的开放域英文对话生成模块。无论是hub run的命令行快速体验、module.generate的编程式调用、interactive_mode的多轮聊天还是hub serving start的服务化部署本模块都在 PaddlePaddle PaddleHub 生态内提供了完整链路。若希望深入其实现细节可继续阅读 module.py 与 model.py 及其 readers/utils 目录下的配套代码。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleFormers 人像分割实战deeplabv3p_xception65_humanseg 模块的安装、预测与服务化部署指南PaddleFormers 人像分割实战deeplabv3p_xception65_humanseg 模块的安装、预测与服务化部署指南 导读 本文围绕 Pad人工智能大模型微调模型推理服务PaddleFormers 图像分类实战efficientnetb2_imagenet 模块的安装、预测与服务化部署PaddleFormers 图像分类实战efficientnetb2_imagenet 模块的安装、预测与服务化部署 本文以 PaddleFormers 仓库人工智能大模型微调模型推理服务PaddleFormers 动物识别模块 resnet50_vd_animals 实战指南安装、预测 API 与服务化部署PaddleFormers 动物识别模块 resnet50_vd_animals 实战指南安装、预测 API 与服务化部署 本篇技术指南以 PaddleFor人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表