人工智能大模型微调模型推理服务【免费下载链接】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 仓库中 transformer_en-de 模型文档 为主体系统讲解如何基于 PaddleHub 安装、加载并调用一个已在 WMT14 EN-DE 数据集上预训练的英译德English→GermanTransformer 模型。读完本文你将掌握该模型的完整调用方式hub.Module预测 API 与参数语义、Batch/Beam Search 解码原理以及如何通过hub serving一键将模型部署为可对外服务的在线翻译接口并能结合仓库源码理解其底层数据流与实现细节。一、模型基本信息transformer_en-de 是什么transformer_en-de是 PaddleHub 上的一个文本机器翻译Machine Translation模型官方信息如下项目内容模型名称transformer_en-de类别文本-机器翻译网络Transformer数据集WMT14 EN-DE是否支持 Fine-tuning否模型大小481MB最新更新日期2021-07-21数据指标-该模型的网络结构源自 Google 机器翻译团队于 2017 年发表的论文Attention Is All You Need中提出的 Transformer一种完全基于注意力Attention机制完成序列到序列Seq2Seq建模的全新网络结构。transformer_en-de的具体结构为6 层编码器 6 层解码器、8 个注意力头、隐藏层维度 512、参数量约 64M在 WMT14 EN-DE 语料上完成预训练加载后可直接用于英文到德文的翻译预测且不支持 Fine-tuning。在仓库源码 en-de/module.py 中模型的超参数被明确固化在model_config字典里与文档描述一一对应model_config { n_head: 8, # 多头注意力头数 d_model: 512, # 词嵌入维度 / 注意力输入输出维度 d_inner_hid: 2048, # 前馈网络隐藏层大小 weight_sharing: True, # 共享 embedding 与 softmax 权重源/目标词表相同 dropout: 0, # Dropout 率预测阶段为 0 num_encoder_layers: 6, # 编码器堆叠层数 num_decoder_layers: 6 # 解码器堆叠层数 }注意weight_sharing: True因为英德翻译采用共享词表BPE 子词词表所以可以开启 embedding 与 softmax 的权重共享以减小参数量。与之对比仓库中的 transformer_zh-en 由于源中文与目标英文词表独立weight_sharing被设为False并分别维护src_vocab与trg_vocab——这从侧面印证了该配置项的作用。二、环境依赖与模型安装1. 环境依赖运行transformer_en-de需要满足以下软件版本paddlepaddle 2.1.0paddlehub 2.1.0PaddleHub 的具体安装方式可参考 PaddleHub 安装文档。模型运行所需的第三方 Python 依赖由仓库中的 requirements.txt 声明主要包括paddlenlp2.1.0 # 提供 InferTransformerModel、Vocab、position_encoding_init 等实现 sacremoses # 提供 Moses 分词/还原MosesTokenizer / MosesDetokenizer subword-nmt # 提供 BPE 子词切分apply_bpe.BPE即文本先经 Moses 规则分词再经 BPE 切分为子词单元送入模型预测输出后再逆过程还原为目标语言句子详见第三节原理部分。2. 安装模型使用 PaddleHub 命令行一键安装$ hub install transformer_en-de如安装过程中遇到问题可按操作系统参考零基础安装教程Windows 安装 | Linux 安装 | macOS 安装。模型安装后其权重与词表等资源文件会被放置于 PaddleHub 的MODULE_HOME目录下。从 module.py 可以看到加载时实际读取了三份关键资源assets/bpe.33708BPE 合并编码表约 33708 个合并操作assets/vocab_all.bpe.33708BPE 子词词表含s、e、unk特殊 tokenassets/transformer.pdparams预训练权重约 481MB。三、模型 API 预测Python 直接调用1. 预测代码示例安装完成后可通过paddlehub.Module加载模型并进行英译德预测import paddlehub as hub model hub.Module(nametransformer_en-de, beam_size5) src_texts [ What are you doing now?, The change was for the better; I eat well, I exercise, I take my drugs., Such experiments are not conducted for ethical reasons., ] n_best 3 # 每个输入样本的输出候选句子数量 trg_texts model.predict(src_texts, n_bestn_best) for idx, st in enumerate(src_texts): print(-*30) print(fsrc: {st}) for i in range(n_best): print(ftrg[{i1}]: {trg_texts[idx*n_besti]})运行后每个英文句子会输出n_best此处为 3条按得分排序的德文候选译文结果列表总长度为len(src_texts) * n_best。2. API 详解初始化 APIdef __init__(max_length: int 256, max_out_len: int 256, beam_size: int 5):初始化 module可配置模型输入输出文本的最大长度以及解码时 beam search 的宽度。参数含义如下参数类型默认值说明max_lengthint256输入文本的最大长度token 数超出部分会被截断max_out_lenint256输出文本的最大解码长度beam_sizeint5beam search 解码的 beam 宽度预测 APIdef predict(data: List[str], batch_size: int 1, n_best: int 1, use_gpu: bool False):参数类型默认值说明dataList[str]-源语言英文文本列表batch_sizeint1预测时的 batch 大小n_bestint1每个输入文本输出的得分最高候选句数量必须小于等于 beam_sizeuse_gpuboolFalse是否使用 GPU 执行预测返回值resultsList[str]——翻译后的目标语言候选句子列表长度为len(data) * n_best按 batch 内样本顺序依次排列同一样本的多个候选按得分从高到低排列。3. 源码级原理剖析一次预测调用发生了什么从 module.py 的实现看predict的完整调用链如下_convert_text_to_input文本 → token id每个输入句子先经MTTokenizer.tokenize完成「Moses 分词 → 拼接 → BPE 切分」三步处理得到 BPE 子词列表若超过max_length则截断再通过Vocab.to_indices映射为词表 id。BPE 的具体实现在 utils.pyMosesTokenizer(langen)负责英文分词subword_nmt.apply_bpe.BPE以为子词分隔符对整行文本应用 BPE 编码。_batchify组批 padding将每个样本的 id 序列尾部追加eos_id即e索引为 1并用Pad(eos_id)将同一 batch 内的序列补齐到等长——即用e充当 padding token。可见特殊 token 在词表中的约定为bos_id0s、eos_id1e、unk_id2unk该约定定义在vocab_config中。前向推理与 Beam Search 解码模型内部通过 PaddleNLP 提供的InferTransformerModel见 module.py完成推理——该模型内置beam_size宽的 beam search 解码max_out_len限定解码步数上限。由于训练时序列最长不超过 256源码还会用position_encoding_init将编码器/解码器的位置编码重置为max_length 1的长度避免预测更长序列时出现位置编码缺失的问题。post_process_seq与 detokenizeid → 文本对每条 beam 输出post_process_seq 会截取第一个e之前的部分并剔除s、e标记随后Vocab.to_tokens把 id 还原为 BPE 子词MTTokenizer.detokenize先移除子词分隔符再用MosesDetokenizer(langde)还原为自然德语文本。此外predict入口处还有一个值得注意的校验逻辑module.py当n_best beam_size时直接抛出ValueError提示n_best必须小于等于beam_size——因为候选句数量本质上受限于 beam 搜索保留的路径数。四、服务部署一行命令启动在线翻译服务通过 PaddleHub Serving可以将模型一键部署为在线翻译 API无需关注底层网络框架的实现细节PaddleHub Serving 前端基于 Flask/Gunicorn 处理 HTTP 请求后端直接调用 PaddleHub 预测接口。第一步启动 PaddleHub Serving$ hub serving start -m transformer_en-de以上命令即可完成一个英德机器翻译 API 的部署默认端口号为 8866。NOTE如使用 GPU 预测需要在启动服务前设置CUDA_VISIBLE_DEVICES环境变量否则无需设置。从仓库的 Serving 命令实现paddlehub/commands/serving.py可以看出hub serving还支持更多启动选项便于按需调整服务形态参数用途--modules/-m预安装的模型列表支持ModuleVersion键值对形式可同时部署多个模型--port/-p服务端口默认为 8866--use_gpu使用 GPU 预测须安装 paddlepaddle-gpu与--use_multiprocess互斥--use_multiprocess多进程并发模式推荐多核 CPU 机器使用Windows 仅支持单进程--workers并发任务数默认2*cpu_count-1--gpu指定 GPU 卡号如1,2表示使用 1、2 号显卡默认仅用 0 号--config/-c通过 JSON 配置文件启动可同时配置多个模块的init_args/predict_args服务启动时Serving 会先在内部通过hub.Module(**init_args)预加载模块对应 serving.py 中的preinstall_modules并校验模块是否具备可用的预测方法。关于配置文件启动、多模型部署、关闭服务hub serving stop --port XXXX等更多细节可参考 PaddleHub Serving 服务部署文档。第二步发送预测请求服务端就绪后客户端用以下代码即可发送预测请求并获取翻译结果import requests import json texts [ What are you doing now?, The change was for the better; I eat well, I exercise, I take my drugs., Such experiments are not conducted for ethical reasons., ] data {data: texts} # 发送post请求content-type类型应指定json方式url中的ip地址需改为对应机器的ip url http://127.0.0.1:8866/predict/transformer_en-de # 指定post请求的headers为application/json方式 headers {Content-Type: application/json} r requests.post(urlurl, headersheaders, datajson.dumps(data)) print(r.json())请求 URL 的通用格式为http://127.0.0.1:8866/predict/MODULE其中MODULE为模型名此处即transformer_en-de。服务端返回的 JSON 中包含status、msg与results字段status为000表示预测正常返回状态码约定见 app_compat.py。五、常见问题与更新历史版本与更新历史版本说明1.0.0初始发布1.0.1修复模型初始化的兼容性问题如需安装指定版本可使用$ hub install transformer_en-de1.0.1关键注意事项汇总该模型不支持 Fine-tuning仅用于预训练权重直接推理n_best必须小于等于beam_size否则predict会抛出ValueError输入句子超过max_length会被截断输出解码长度受max_out_len限制服务模式下如需 GPU 推理务必在启动前设置CUDA_VISIBLE_DEVICES模型依赖paddlenlp、sacremoses、subword-nmt三个第三方库安装模型前应确保这些依赖可正常安装。六、延伸阅读本文主体文档transformer_en-de README模型核心实现en-de/module.py 与 en-de/utils.py同系列中英模型中文 → 英文transformer_zh-en其实现还额外支持通过http://127.0.0.1:8866/gradio/transformer_zh-en在浏览器中访问 Gradio 交互界面PaddleHub 2.3.1 起支持PaddleHub Serving 完整部署指南服务部署环境搭建教程PaddleHub 安装 及 Windows / Linux / macOS 零基础快速开始文档。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐基于 GluonNLP 的 Transformer 机器翻译实战预训练模型评估与 WMT 2014 英德翻译训练基于 GluonNLP 的 Transformer 机器翻译实战预训练模型评估与 WMT 2014 英德翻译训练 导读本文基于 Apache MXNet 仓人工智能深度学习机器学习基于 PaddleHub 的 ResNet50_vd 菜品分类模型 resnet50_vd_dishes 实战指南安装、预测与服务部署基于 PaddleHub 的 ResNet50_vd 菜品分类模型 resnet50_vd_dishes 实战指南安装、预测与服务部署 本文以 PaddleF人工智能大模型微调模型推理服务基于 PaddleHub 的 mobilenet_v2_animals 动物识别模块安装、预测与服务化部署实战指南基于 PaddleHub 的 mobilenet_v2_animals 动物识别模块安装、预测与服务化部署实战指南 本篇文章以 PaddleFormers 仓人工智能大模型微调模型推理服务上一篇CPython sysconfig 模块深度解析配置变量、安装路径方案与命令行实战下一篇如何使用 react-spring 打造令人惊艳的 React 动画效果完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
