
人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载本文面向需要在生产环境中上线 UIE-X 文档信息抽取模型的开发者完整讲解如何基于 PaddleNLP SimpleServing 将微调后的文档抽取模型封装为 HTTP 服务包括环境准备、Server 启动、Client 请求、schema 与模型路径定制以及多卡负载均衡部署。读完本文你将掌握一套可直接复制运行的文档抽取服务化部署方案并理解其底层基于 FastAPI 与 Taskflow 的实现原理。本文以仓库中的 基于 PaddleNLP SimpleServing 的服务化部署指南 为核心骨架配套的 server.py 与 client.py 为可直接运行的示例代码。该部署方案属于 PaddleNLP 信息抽取产业级全流程方案中的模型部署环节与文本抽取场景的部署方案见 文本抽取 HTTP 部署指南共同构成完整的服务化部署矩阵。方案背景文档抽取场景为何需要服务化部署在 PaddleNLP 信息抽取应用中uie-x-base是一个面向纯文本和文档双场景的抽取式模型支持中英双语可端到端完成文档、图片、表格的信息抽取。整个应用打通了数据标注 → 模型训练 → 模型调优 → 预测部署全流程其中部署环节的目标是把微调好的模型从 Python 脚本中解放出来变成一个可供业务系统通过 HTTP 调用的常驻服务。SimpleServing 正是 PaddleNLP 为这一目标提供的轻量级服务化框架。它基于 FastAPI 构建源码见 paddlenlp/server/server.pySimpleServer直接继承FastAPI开发者只需要编写一个注册了 Taskflow 的server.py即可通过一条命令行把模型启动为 HTTP 服务业务方无需接触 PaddlePaddle 与 PaddleNLP 的任何细节仅凭 HTTP 请求即可获得结构化抽取结果。典型的应用场景包括增值税发票信息抽取、报关单关键字段识别、Delivery Note 等单据解析以及任何输入一张图片/文档、输出结构化 JSON的业务诉求。环境准备使用带有 SimpleServing 功能的 PaddleNLP 版本或最新的 develop 版本安装命令如下pip install paddlenlp 2.4.4SimpleServing 自 PaddleNLP 2.4.4 起正式具备该能力。安装完成后可通过paddlenlp server --help确认 CLI 子命令可用或直接在 Python 中执行from paddlenlp import SimpleServer, Taskflow验证导入是否成功。需要说明的是本部署示例运行在文档信息抽取项目目录下示例代码中的task_path../../checkpoint/model_best与image_paths [../../data/images/b1.jpg]均为相对该目录的相对路径实际使用时请按自身模型与数据存放位置调整。Server 端注册并启动文档抽取服务编写 server.py 注册服务部署的核心是 server.py。它完成三件事定义抽取 schema、加载微调模型、注册为可路由的服务。完整代码如下from paddlenlp import SimpleServer, Taskflow # The schema changed to your defined schema schema [开票日期, 名称, 纳税人识别号, 开户行及账号, 金额, 价税合计, No, 税率, 地址、电话, 税额] # The task path changed to your best model path uie Taskflow( information_extraction, schemaschema, task_path../../checkpoint/model_best, ) # If you want to define the finetuned uie service app SimpleServer() app.register_taskflow(taskflow/uie, uie)逐段解读schema声明了需要抽取的字段列表。这里的默认值对应增值税发票的 10 个关键字段它是 UIE 抽取的提示词——模型会按照 schema 中的每一个字段去文档中定位并抽取对应内容Taskflow(information_extraction, ...)创建信息抽取任务流对象其中task_path指向微调后的模型权重目录。该目录需包含训练好的model_state.pdparams权重文件模型微调与导出细节见 文档信息抽取全流程指南SimpleServer()实例化服务register_taskflow(taskflow/uie, uie)将 Taskflow 注册到路由taskflow/uie下注册路径即为后续 Client 请求的 URL 路径。启动 Server在simple_serving目录下执行paddlenlp server server:app --workers 1 --host 0.0.0.0 --port 8189参数说明server:app指向server.py中名为app的SimpleServer实例模块名:对象名这是 uvicorn 标准的 ASGI 应用定位语法--workers 1工作进程数示例为 1可依据机器资源调整--host 0.0.0.0监听所有网卡地址使服务可被外部客户端访问--port 8189服务监听端口。从源码看paddlenlp server这条命令最终调用的是 paddlenlp/cli/server.py 中的start_backend(app, **kwargs)它把上述参数原样透传给uvicorn.run(app, **kwargs)即由 uvicorn 托管 ASGI 服务生命周期。启动后日志会打印每个启动参数出现 Application startup complete 即表示服务就绪。Client 端发起文档抽取请求启动 Server 后另开一个终端执行python client.pyclient.py 的完整逻辑如下import json import requests from paddlenlp.utils.doc_parser import DocParser # Define the document parser doc_parser DocParser() image_paths [../../data/images/b1.jpg] image_base64_docs [] # Get the image base64 to post for image_path in image_paths: req_dict {} doc doc_parser.parse({doc: image_path}, do_ocrFalse) base64 doc[image] req_dict[doc] base64 image_base64_docs.append(req_dict) url http://0.0.0.0:8189/taskflow/uie headers {Content-Type: application/json} data {data: {text: image_base64_docs}} # Post the requests r requests.post(urlurl, headersheaders, datajson.dumps(data)) datas json.loads(r.text) print(datas)该客户端的关键点图片编码使用 PaddleNLP 的 DocParser 解析图片路径将文档图片转为 base64 编码。这里do_ocrFalse表示不在此处做 OCR由服务端 UIE-X 模型端到端完成版面理解与抽取请求构造请求体结构为{data: {text: image_base64_docs}}text字段承载图片 base64 列表支持一次请求批量提交多张图片请求路径http://0.0.0.0:8189/taskflow/uie其中taskflow/uie必须与 Server 端register_taskflow注册的路由一致端口 8189 与启动参数对应结果解析使用requests发送 JSON POST 请求并对返回的 JSON 文本解析后打印结构化抽取结果。整个请求-响应链路为Client 将图片 base64 化 → POST 到/taskflow/uie→ Server 端 Taskflow 执行 UIE-X 抽取 → 返回结构化 JSON。Server 自定义参数替换 schema抽取字段默认 schema 面向增值税发票场景schema [开票日期, 名称, 纳税人识别号, 开户行及账号, 金额, 价税合计, No, 税率, 地址、电话, 税额]实际业务中应替换为自定义字段。从 信息抽取 Taskflow 实现 源码可以看出schema 不仅支持简单的字段字符串列表实体抽取还支持嵌套结构以表达更复杂的抽取任务关系抽取schema [{歌曲名称: [歌手, 所属专辑]}]事件抽取schema [{地震触发词: [地震强度, 时间, 震中位置, 震源深度]}]观点抽取schema [{评价维度: [观点词, 情感倾向[正向负向]]}]情感分类schema [情感倾向[正向负向]]服务端内部会将 schema 构建成一棵 SchemaTreeset_schema与_build_tree方法推理时按树结构逐层遍历实现多阶段预测_multi_stage_predict。修改 schema 后无需改动其他代码重启服务即生效。设置模型路径加载定制模型默认加载微调产物uie Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema)task_path指向包含model_state.pdparams权重文件的目录。若使用 PaddleNLP 内置预训练模型做零样本抽取可省略task_path直接通过modeluie-x-base指定基座。此外 Taskflow 还支持precision参数如precisionfp16以半精度方式加载模型在 GPU 环境下降低显存占用、提升吞吐相关用法见 文档信息抽取指南 中的定制模型一键预测一节。多卡服务化预测负载均衡PaddleNLP SimpleServing 支持多卡负载均衡在注册服务时注册多个分别绑定不同device_id的 Taskflow 实例Server 会在这些实例间分发请求。示例uie1 Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema, device_id0) uie2 Taskflow(information_extraction, task_path../../checkpoint/model_best/, schemaschema, device_id1) service.register_taskflow(uie, [uie1, uie2])这里通过device_id将两个模型实例分别绑定到 GPU 0 和 GPU 1并以列表形式整体注册。从 SimpleServer.register_taskflow 源码 可以看到register_taskflow内部首先校验注册对象必须是Taskflow实例或Taskflow列表单个实例会被自动包装为列表再交给TaskflowManager统一管理从而实现对多实例请求的负载均衡调度。Client 自定义参数客户端最常调整的参数是待抽取的图片列表# Changed to image paths you wanted image_paths [../../data/images/b1.jpg]将其替换为业务实际的图片路径即可如image_paths [invoice_1.jpg, invoice_2.jpg]。客户端支持批量提交多张图片会以列表形式随请求体发送Server 端逐张抽取后一并返回结果。部署链路与源码佐证为便于读者深入将本次部署涉及的关键源码位置汇总如下环节仓库文件说明服务注册与启动paddlenlp/server/server.pySimpleServer继承 FastAPIregister_taskflow完成 Taskflow 注册与类型校验CLI 启动入口paddlenlp/cli/server.pystart_backend将--workers/--host/--port透传给uvicorn.runServer 示例simple_serving/server.py文档抽取服务注册完整示例Client 示例simple_serving/client.pybase64 图片编码与 HTTP POST 请求示例抽取核心实现paddlenlp/taskflow/information_extraction.pyschema 树构建、多阶段预测、set_schema动态更新文档解析工具paddlenlp/utils/doc_parser.pyDocParser负责图片解析与 base64 转换上游全流程文档信息抽取指南数据标注、模型微调、评估与预测的完整说明应用总览信息抽取应用 READMEUIE 系列模型能力矩阵与产业级方案总览常见问题排查启动报ModuleNotFoundError确认 PaddleNLP 版本 ≥ 2.4.4且paddlenlp server与 Python 环境一致注意避免多环境混用 pip。请求 404检查 Client 请求 URL 中的路由taskflow/uie与 Server 端register_taskflow的第一个参数是否完全一致同时确认端口号与--port启动参数一致。请求连接失败确认 Server 以--host 0.0.0.0启动且未开启防火墙拦截本地调试可改用127.0.0.1。抽取结果为空或字段缺失优先检查schema字段命名是否与业务目标一致以及task_path是否指向包含model_state.pdparams的正确目录若使用零样本模式可尝试切换基座模型。总结本文完整呈现了基于 PaddleNLP SimpleServing 的文档信息抽取服务化部署方案从pip install paddlenlp 2.4.4的环境准备到server.py中通过SimpleServer注册 UIE-X 任务流并启动 uvicorn 服务再到client.py中以 DocParser 完成图片编码并发出 HTTP 请求的闭环最后深入讲解了 schema 替换、自定义模型路径与多卡负载均衡三类自定义参数及其底层源码逻辑。开发者只需替换 schema、模型路径与图片路径三处配置即可将该方案复用到任意文档抽取业务场景实现模型的快速上线与迭代。赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐FF14动画跳过插件告别冗长副本动画的终极解决方案FF14动画跳过插件告别冗长副本动画的终极解决方案 还在为《最终幻想14》国服副本中那些无法跳过的动画而烦恼吗FFXIV_ACT_CutsceneSkip插人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPGetQzonehistoryQQ空间历史说说免费备份方案GetQzonehistoryQQ空间历史说说免费备份方案 你有多久没翻过 QQ 空间里那些老说说了想逐条找回文字、配图和评论时手动复制既慢又容易漏。Ge人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPTimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化TimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化 TimesFMTime Series Foundation Model是Googl人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇如何用 Ramp 自动化技能按日期和状态筛选公司卡交易并翻页导出下一篇Google Drive仅查看PDF如何下载2025最全图文教程帮你解决难题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考