PaddleFormers 中的 ERNIE-GEN 诗歌生成模型:ernie_gen_poetry 的安装、预测与在线服务部署实战
人工智能大模型微调模型推理服务【免费下载链接】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 仓库中的ernie_gen_poetry模型模块为核心系统讲解基于 ERNIE-GEN 框架的中文古诗生成模型的原理、安装方式、命令行与 Python API 预测方法以及如何借助 PaddleHub Serving 将模型一键部署为在线诗歌生成服务。读完本文你将掌握从模型加载到 beam search 解码、再到 HTTP 服务调用的完整实战链路并理解 ERNIE-GEN 在生成任务上的核心机制。一、模型基本信息与 ERNIE-GEN 框架ernie_gen_poetry是一个文本-文本生成类 PaddleHub 模型模块其基本信息如下表所示模型名称ernie_gen_poetry类别文本-文本生成网络ERNIE-GEN数据集开源诗歌数据集是否支持 Fine-tuning否模型大小422M最新更新日期2021-02-26数据指标-ERNIE-GEN 的核心机制该模块基于 ERNIE-GENAn Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation框架构建。ERNIE-GEN 是面向生成任务的预训练-微调框架其核心创新点包括span-by-span 生成任务首次在预训练阶段加入 span-by-span 生成任务让模型每次能够生成一个语义完整的片段而不是逐词零散生成填充式生成机制Infilling与噪声感知机制Noise-aware在预训练和微调过程中通过这两种机制缓解曝光偏差exposure bias问题即训练与推理阶段解码分布不一致带来的误差累积多片段-多粒度目标文本采样策略增强源文本和目标文本的关联性加强了编码器和解码器的交互。ernie_gen_poetry正是采用开源诗歌数据集对 ERNIE-GEN 进行微调后得到的诗歌生成模型输入一句诗歌开头即可续写出对仗工整的古诗下文。模型模块的元信息定义在 module.py 中summary字段明确描述了其用途This module has fine-tuned for poetry generation task。二、安装与环境准备1、环境依赖使用ernie_gen_poetry需要满足以下依赖版本paddlepaddle 2.0.0paddlehub 2.0.0安装方式参见 PaddleHub 安装文档paddlenlp 2.0.0从 module.py 的源码可以看出模型加载链路依赖paddlehub与paddlenlp两个关键库前者负责 Module 注册、命令行与 Serving 管理后者提供ErnieTokenizer和ErnieForGeneration预训练模型实现。2、安装模型通过 PaddleHub 命令行一条命令即可完成模型安装$ hub install ernie_gen_poetry安装完成后模型会被默认放置在${HUB_HOME}/.paddlehub/modules目录下若未设置${HUB_HOME}环境变量则默认存放在主目录$HOME下之后即可通过命令行或 Python API 调用。如果安装过程遇到问题可参考零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装3、环境验证安装完成后可用hub list命令确认模型是否成功安装到本地详见 PaddleHub 命令行工具说明并检查 CUDA 环境若计划使用 GPU 预测需确保已安装paddlepaddle-gpu并设置CUDA_VISIBLE_DEVICES环境变量。三、模型 API 预测ernie_gen_poetry提供命令行与 Python API 两种预测方式二者最终都会走到 module.py 中由serving装饰器标记的generate方法。1、命令行预测$ hub run ernie_gen_poetry --input_text昔年旅南服始识王荆州。 --use_gpu True --beam_width 5命令行参数说明--input_text诗歌的开头即待续写的起始文本--use_gpu是否采用 GPU 进行预测--beam_widthbeam search 宽度决定每个诗歌开头输出的下文数目。从源码看命令行入口由runnable装饰器标记的run_cmd实现module.py它会解析--use_gpu通过ast.literal_eval将字符串转为布尔值与--beam_widthint 类型再调用generate方法返回结果。更多命令行用法可参考 PaddleHub 命令行指令。2、预测代码示例import paddlehub as hub module hub.Module(nameernie_gen_poetry) test_texts [昔年旅南服始识王荆州。, 高名出汉阴禅阁跨香岑。] results module.generate(textstest_texts, use_gpuTrue, beam_width5) for result in results: print(result) # [一见便倾盖论交更绸缪。别来二十年日月如奔流。人生会合难俯仰成春秋。, 一见便倾盖论交更绸缪。别来二十年日月如奔流。人生会合难况乃岁月遒。君家富文史我老无田畴。相逢不相识各在天一陬。人生百年内聚散如浮沤。况我与夫子相逢, 一见便倾盖论交更绸缪。别来二十年日月如奔流。人生会合难况乃岁月遒。君家富文史我老无田畴。相逢不相识各在天一陬。人生百年内聚散如浮沤。况我与君别飘零, 一见便倾盖论交更绸缪。别来二十年日月如奔流。人生会合难况乃岁月遒。君家富文史我老无田畴。相逢不相识各在天一陬。人生百年内聚散如浮沤。况复各异乡各在, 一见便倾盖论交更绸缪。别来二十年日月如奔流。人生会合难况乃岁月遒。君家富文史我老无田畴。相逢不相识各在天一陬。人生百年内聚散如浮沤。况复各异乡风雨] # [地僻无尘到山高见水深。钟声传远寺塔影落前林。欲问西来意庭前柏树林。, 地僻无尘到山高见水深。钟声传远寺塔影落前林。欲问西来意庭前柏树阴。, 地僻无尘到山高见水深。钟声传远寺塔影落前林。欲问西来意庭前有桂林。, 地僻无尘到山高见水深。钟声传远寺塔影落前林。欲问西来意庭前柏正森。, 地僻无尘到山高见水深。钟声传远寺塔影落前林。欲问西来意庭前有桂阴。]可以看到对于每个诗歌开头模型都会基于beam_width5输出 5 个候选下文且续写的诗句保持了五言对仗、押韵等古诗特征。3、generate API 详解def generate(texts, use_gpuFalse, beam_width5):功能预测 API输入诗歌开头输出诗歌下文。参数textslist[str]诗歌的开头列表use_gpubool是否使用 GPU 预测若使用 GPU请先设置CUDA_VISIBLE_DEVICES环境变量beam_widthintbeam search 宽度决定每个诗歌开头输出的下文数目。返回resultslist[list[str]]诗歌下文列表每个诗歌开头会生成beam_width个下文。输入校验与前置检查generate内部首先会对输入做严格校验module.py输入必须是元素非空且均为字符串的列表否则抛出ValueError这一检查在 1.0.2 版本中专门得到完善。随后对每个输入文本进行诗歌格式检查并给出警告若文本不含或。会被判定为不完整的诗句可能产生不合理输出若逗号前后字数不等缺乏对仗同样会提示可能产生不合理输出若文本包含非中文字符除、。外也会给出警告。设备设置与模型加载在 GPU 使用上源码做了兜底逻辑如果use_gpuTrue但环境变量CUDA_VISIBLE_DEVICES未设置会自动回退为 CPU并打印日志警告module.py随后通过paddle.set_device(gpu)或paddle.set_device(cpu)完成设备切换。模型加载流程为ErnieForGeneration.from_pretrained(ernie-1.0)加载 ERNIE 基础模型再通过paddle.load加载微调后的诗歌生成权重ernie_gen_poetry.pdparams最后用set_dict注入权重module.py。同时tokenizer 会将[PAD]、[UNK]特殊 token 在输出阶段替换为空字符串避免解码结果中出现占位符。四、解码原理beam search 续写流程诗歌续写的核心解码逻辑位于 decode.py 中。模块主流程如下module.py对输入文本调用tokenizer.encode得到input_ids与token_type_ids调用beam_search_infilling执行填充式 beam search 解码关键解码参数包括eos_id[SEP]、sos_id[CLS]、attn_id[MASK]、pad_id[PAD]、unk_id[UNK]max_decode_len80最大解码长度、max_encode_len20最大编码长度beam_width由用户指定、tgt_type_id1将解码得到的 token id 序列通过rev_lookup映射回文本截断到[SEP]位置后拼接输出。beam_search_infillingdecode.py是典型的束搜索实现其中几个关键机制值得注意cache tile 与 reorder首轮将编码器输出的 KV cache 按beam_width平铺tile_每轮解码后按父 beam id 重排reorder_实现多束共享编码器输出的高效推理mask_prob 掩码机制对已结束finished的束将其非[EOS]位置的概率压到-9999.防止已结束束继续产生新词hyp_score 长度惩罚log_probs / pow((5 length) / 6, length_penalty)对长句做适度惩罚默认length_penalty1.0首步约束第一步只在束 0 上扩展is_first_step分支保证搜索起点唯一gather_tree 回溯解码结束后通过gather_tree按父束 id 回溯整棵搜索树得到每个束的完整生成序列。此外decode.py 还提供了greedy_search_infilling贪心搜索实现decode.py其结构与 beam search 类似但不维护束状态可作为对照理解 beam search 的优势束搜索保留多个候选路径能显著降低贪心搜索的局部最优风险这也是诗歌续写这类开放式生成任务通常选用 beam search 的原因。五、服务部署一键启动在线诗歌生成服务PaddleHub Serving 可以部署一个在线诗歌生成服务将该接口用于在线 Web 应用无需自行搭建网络框架。第一步启动 PaddleHub Serving$ hub serving start -m ernie_gen_poetry -p 8866执行该命令后即完成服务化 API 的部署默认端口号为 8866。NOTE如使用 GPU 预测需在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量否则不需要设置。从 PaddleHub Serving 一键服务部署文档 可以看到Serving 底层基于 Flask 与 Gunicorn 处理网络请求后端直接调用 PaddleHub 预测接口并支持通过--use_multiprocess与--workers利用多核提升并发能力。需要说明的是--use_gpu与--use_multiprocess不可共用且 Windows 操作系统只支持单进程方式。第二步发送预测请求配置好服务端后以下代码即可实现发送预测请求并获取预测结果import requests import json # 发送HTTP请求 data {texts:[昔年旅南服始识王荆州。, 高名出汉阴禅阁跨香岑。], use_gpu:False, beam_width:5} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/ernie_gen_poetry r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 保存结果 results r.json()[results] for result in results: print(result) # serving运行结果同本地运行结果见上请求 URL 的格式为http://127.0.0.1:port/predict/MODULE其中MODULE为模型名请求体中的texts、use_gpu、beam_width参数与本地generateAPI 一一对应。停止服务时使用hub serving stop --port 8866即可不指定端口则默认关闭 8866 端口的服务。更多信息可参考 服务部署文档。六、扩展从 ernie_gen 微调自己的文本生成模型虽然ernie_gen_poetry本身不支持 Fine-tuning其定位是直接可用的成品模型但同目录下的基础模块ernie_gen提供了完整的微调链路可用于快速制作特定场景的生成模型。其说明见 ernie_gen/README.md关键 API 为module.finetune( train_pathtrain.txt, dev_pathdev.txt, max_steps300, batch_size2 ) module.export(params_pathresult[last_save_path], module_nameernie_gen_test, authortest)其中训练数据格式为序号\t输入文本\t标签例如1\t床前明月光\t疑是地上霜注意\t不能使用空格替代。PaddleHub 官方已提供多个微调好的生成模型除本文的诗歌生成外还包括对联生成、情话生成、藏头诗生成等说明 ERNIE-GEN 框架具备较强的任务迁移能力。七、更新历史版本更新内容1.0.0初始发布1.0.1修复 Windows 中的编码问题1.0.2完善 API 的输入文本检查1.1.0修复兼容性问题如需安装指定版本可使用带版本号的安装命令$ hub install ernie_gen_poetry1.1.0总结ernie_gen_poetry是 ERNIE-GEN 生成框架在中文古诗创作场景下的直接落地成果依托 span-by-span 预训练、填充式生成与噪声感知机制结合开源诗歌数据集微调实现了高质量的古诗续写能力。在 PaddleFormers 仓库中你可以通过 module.py 查看完整的模型加载、输入校验与调用链通过 decode.py 理解 beam search 解码细节并通过hub run、Python API 或 PaddleHub Serving 三种方式快速完成本地预测与在线服务部署。赞分享人工智能大模型微调模型推理服务【免费下载链接】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 藏头诗生成实战指南ERNIE-GEN 预训练语言模型 ernie_gen_acrostic_poetry 的安装、预测与服务化部署PaddleFormers 藏头诗生成实战指南ERNIE GEN 预训练语言模型 ernie_gen_acrostic_poetry 的安装、预测与服务化部署人工智能大模型微调模型推理服务PaddleFormers 人像抠图实战modnet_mobilenetv2_matting 模块的安装、API 预测与在线服务部署PaddleFormers 人像抠图实战modnet_mobilenetv2_matting 模块的安装、API 预测与在线服务部署 导读 本文以 Paddl人工智能大模型微调模型推理服务PaddleFormers 中 ERNIE 2.0 Large 预训练语义模型ernie_v2_eng_large实战指南安装、预测 API 与服务化部署PaddleFormers 中 ERNIE 2.0 Large 预训练语义模型ernie_v2_eng_large实战指南安装、预测 API 与服务化部署人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ICMIA 2024会议论文从投稿到EI/Scopus检索全流程解析

ICMIA 2024会议论文从投稿到EI/Scopus检索全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 2:03:52 阅读更多 →
PaddleSeg 全景分割工具箱快速上手:基于 Panoptic-DeepLab 的预测、训练与精度评估全流程指南

PaddleSeg 全景分割工具箱快速上手:基于 Panoptic-DeepLab 的预测、训练与精度评估全流程指南

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,…

2026/9/25 2:03:52 阅读更多 →
微信QQ域名检测接口源码解析:基于官方API实现风险状态监控

微信QQ域名检测接口源码解析:基于官方API实现风险状态监控

简介:微信QQ域名检测接口源码包专为需要接入微信、QQ官方域名验证能力的开发者与企业准备,解决登录、分享、消息传递等场景中域名真实性校验与安全合规问题。资源共956个文件,压缩包整体约3.62MB,内容结构以JS源码、Markdown说明文…

2026/9/25 2:03:51 阅读更多 →

最新新闻

Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

Erlang/OTP 记录(Records)实战指南:定义、创建、访问与编译期元组展开原理

编程语言语言运行时标准库编译器并发编程 【免费下载链接】otp Erlang/OTP 项目地址: https://gitcode.com/gh_mirrors/ot/otp 点击查看 免费下载 Records 是 Erlang/OTP 中用于存储固定数量元素的命名数据结构,其作用与 C 语言中的 struct 类似&#x…

2026/9/25 4:47:41 阅读更多 →
Delphi连接InterBase/Firebird的IBDAC v9.0.0实战与避坑指南

Delphi连接InterBase/Firebird的IBDAC v9.0.0实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:47:41 阅读更多 →
Xonsh 编辑器集成完全指南:Sublime Text、VS Code、JetBrains、Emacs、Vim 与内置代码格式化

Xonsh 编辑器集成完全指南:Sublime Text、VS Code、JetBrains、Emacs、Vim 与内置代码格式化

开发工具 【免费下载链接】xonsh 🐚 Python-powered shell. Full-featured, cross-platform and AI-friendly. 项目地址: https://gitcode.com/gh_mirrors/xo/xonsh 点击查看 免费下载 本指南以 docs/editors.rst 为核心,系统梳理 xonsh&…

2026/9/25 4:47:41 阅读更多 →
ESPnet 实战:基于 BEATs 编码器在 ESC-50 上训练音频分类任务的完整 Recipe 解析

ESPnet 实战:基于 BEATs 编码器在 ESC-50 上训练音频分类任务的完整 Recipe 解析

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 导读 本文以 egs2/esc50/asr1/README.md 为核心骨架,系统讲解如何在 ESPnet 中以…

2026/9/25 4:47:41 阅读更多 →
Win10下com0com虚拟串口安装教程:驱动签名冲突的完整解决方案

Win10下com0com虚拟串口安装教程:驱动签名冲突的完整解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:47:40 阅读更多 →
华为EC6108V9A刷机指南:RK3128通用固件全网通去广告

华为EC6108V9A刷机指南:RK3128通用固件全网通去广告

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 4:46:40 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →