
人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载本文面向已完成 UIE Slim 数据蒸馏训练、需要把封闭域信息抽取小模型uie-data-distill-gp落地为 HTTP 服务化接口的开发者讲解基于 PaddleNLPSimpleServer的完整部署方案环境版本要求、Server 端启动命令、Client 端请求方式以及 schema 替换、模型路径设置、多卡负载均衡等自定义配置。读完本文你将能够独立搭建一个可对外提供 JSON 信息抽取服务的 HTTP 接口并通过轮询调度将请求均衡分发到多张显卡。背景与适用场景在 slm/applications/information_extraction/text/data_distill/README.md 描述的 UIE Slim 数据蒸馏流程中经过「UIE 微调得到 Teacher → 大规模无标注数据合成训练数据 → 封闭域 Student Model 训练」三步之后最终产物是一个以 ERNIE 3.0 轻量底座默认ernie-3.0-mini-zh训练出的封闭域信息抽取模型。它与通用 UIE 模型的关键差异在于训练完成后 schema标签体系被固定下来推理时不再需要动态解析 schema因此体量更小、预测更快更适合作为在线服务。uie-data-distill-gp即该封闭域模型在 Taskflow 中对应的注册名。在 paddlenlp/taskflow/taskflow.py 中可以看到uie-data-distill-gp被映射到GPTask任务类走 GlobalPointer/GPLinker 的抽取路径与通用的UIETask是不同的实现分支这解释了为什么部署该模型需要指定modeluie-data-distill-gp。本文所用示例代码位于仓库 slm/applications/information_extraction/text/data_distill/deploy/simple_serving/ 目录下包含server.py服务端与client.py客户端两个可直接运行的脚本。环境准备SimpleServing 能力内置于 PaddleNLP 的SimpleServer基于 FastAPI 封装见 paddlenlp/server/server.py因此需要安装带该功能的 PaddleNLP 版本pip install paddlenlp 2.4.4paddlenlp 2.4.4版本起提供 SimpleServing 功能也可以直接使用最新的 develop 版本。由于服务端依赖 FastAPI、uvicorn 等 Web 组件安装完成后建议确认fastapi、uvicorn、requests已就绪client.py使用requests发送 HTTP 请求。运行服务前需要先完成数据蒸馏训练并得到学生模型模型默认保存在数据蒸馏目录下的checkpoint/model_best/详见 slm/applications/information_extraction/text/data_distill/README.md 中学生模型训练部分。Server 服务启动在simple_serving目录下执行paddlenlp server server:app --workers 1 --host 0.0.0.0 --port 8189参数说明server:app指明加载当前目录下server.py中的app对象即SimpleServer实例。启动器会基于该对象自动生成 FastAPI 应用与路由。--workers 1启动 1 个 worker 进程。生产环境如需更高的并发吞吐可适当增大该值但需注意模型显存占用会随进程数成倍增加。--host 0.0.0.0监听所有网卡地址允许局域网内其他机器访问若仅本机访问可改为127.0.0.1。--port 8189HTTP 服务端口号需与 client.py 中请求 URL 的端口保持一致。server.py的核心逻辑如下完整代码见 server.pyfrom paddlenlp import SimpleServer, Taskflow # The schema changed to your defined schema schema {武器名称: [产国, 类型, 研发单位]} # The task path changed to your best model path uie Taskflow( information_extraction, modeluie-data-distill-gp, schemaschema, task_path../../checkpoint/model_best/ ) # If you want to define the finetuned uie service app SimpleServer() app.register_taskflow(taskflow/uie, uie)这里的关键点Taskflow的task_path指向蒸馏训练产出的学生模型权重目录相对于simple_serving目录即数据蒸馏目录下的checkpoint/model_best/。app.register_taskflow(taskflow/uie, uie)将该 Taskflow 注册为一个服务路由。从 paddlenlp/server/http_router/router.py 的源码可以看到注册时会将task_name直接拼成 HTTP 路径/taskflow/uie。请求模型与响应模型由 pydantic 动态生成请求体字段为data响应体字段为result。Client 请求启动服务启动后在另一终端执行python client.pyclient.py的请求逻辑完整代码见 client.pyimport json import requests url http://0.0.0.0:8189/taskflow/uie headers {Content-Type: application/json} texts [ 威尔哥Virgo减速炸弹是由瑞典FFV军械公司专门为瑞典皇家空军的攻击机实施低空高速轰炸而研制1956年开始研制1963年进入服役装备于A32“矛盾”、A35“龙”、和AJ134“雷”攻击机主要用于攻击登陆艇、停放的飞机、高炮、野战火炮、轻型防护装甲车辆以及有生力量。 ] data {data: {text: texts}} r requests.post(urlurl, headersheaders, datajson.dumps(data)) datas json.loads(r.text) print(datas)请求格式说明url必须与 Server 启动时的--port以及register_taskflow注册的task_name对应即http://host:port/taskflow/uie。请求体为{data: {text: texts}}其中text接受字符串列表可一次传入多条文本进行批量抽取。headers声明Content-Type: application/jsondata通过json.dumps序列化。返回结果为 JSON 文本示例中的datas是解析后的 Python 对象结构与 数据蒸馏 README 中 Taskflow 直接调用的输出一致[{武器名称: [{start: 0, end: 14, text: ..., probability: 0.99, relations: {产国: [...], 类型: [...], 研发单位: [...]}}]}]——即按 schema 组织的事件/实体/关系嵌套结构包含文本片段位置start/end与置信度probability。服务化自定义参数Server 自定义参数schema 替换封闭域模型训练时 schema 已固定但推理服务时仍需在构造 Taskflow 时显式声明供结果后处理解析使用。默认示例# Default schema schema {武器名称: [产国, 类型, 研发单位]}若你的蒸馏任务针对的是其他领域例如医疗、金融、电商需将schema替换为与训练数据标签一致的字典结构键为实体/事件类型值为对应的属性或关系标签列表。注意schema 必须包含训练数据中的所有标签类型否则预测结果的后处理会不完整。设置模型路径# Default task_path uie Taskflow(information_extraction, modeluie-data-distill-gp, task_path../../checkpoint/model_best/, schemaschema)task_path学生模型权重所在目录即数据蒸馏 train.py 训练后保存在./checkpoint/model_best的模型save_dir默认为./checkpoint。若模型存放于其他位置改为对应路径即可。modeluie-data-distill-gp必须保持该值它决定 Taskflow 选用GPTask封闭域抽取实现见 paddlenlp/taskflow/taskflow.py与通用information_extraction的 UIE 任务走不同的推理分支。多卡服务化预测PaddleNLP SimpleServing 支持多卡负载均衡预测做法是在服务注册时传入两个 Taskflow 实例的列表uie1 Taskflow(information_extraction, modeluie-data-distill-gp, task_path../../checkpoint/model_best/, schemaschema, device_id0) uie2 Taskflow(information_extraction, modeluie-data-distill-gp, task_path../../checkpoint/model_best/, schemaschema, device_id1) service.register_taskflow(uie, [uie1, uie2])其底层调度机制可以从 paddlenlp/server/taskflow_manager.py 的TaskflowManager.predict看到每次请求到达时以毫秒级时间戳对 Taskflow 列表长度取模task_index t % len(self._task)来选择目标实例从而实现请求在多个 GPU 上轮流分发同时用lock_predictor保证单实例的串行预测安全。要点归纳每个 Taskflow 通过device_id绑定到不同的显卡如 0、1同一模型权重加载两份分别驻留于各自显存。注册时直接传入[uie1, uie2]列表register_taskflow内部会逐个校验实例类型并交由TaskflowManager统一管理见 paddlenlp/server/server.py。注意示例代码中service.register_taskflow的路由名被省略为uie若照搬请改为你需要的路径如taskflow/uie并同步更新客户端请求 URL。Client 自定义参数客户端需要自定义的是待抽取的文本列表# Changed to input texts you wanted texts [威尔哥Virgo减速炸弹是由瑞典FFV军械公司专门为瑞典皇家空军的攻击机实施低空高速轰炸而研制1956年开始研制1963年进入服役装备于A32“矛盾”、A35“龙”、和AJ134“雷”攻击机主要用于攻击登陆艇、停放的飞机、高炮、野战火炮、轻型防护装甲车辆以及有生力量。]将texts替换为业务中实际需要抽取的文本即可client.py中的请求构造、发送与结果解析代码无需改动如果要多文本批量抽取直接向该列表追加元素。常见问题与排查要点端口冲突--port 8189被占用时uvicorn 会启动失败可更换端口并同步修改client.py中的url。模型路径错误task_path指向的目录下应包含model_state.pdparams等权重文件路径写错时 Taskflow 构造阶段即报错可核对simple_serving目录与checkpoint/model_best的相对位置。客户端返回 404检查注册的task_name如taskflow/uie与请求 URL 路径是否完全一致路由由register_taskflow_router按/task_name直接生成paddlenlp/server/http_router/router.py。多卡显存溢出每个device_id实例都会完整加载一份模型权重卡数增多时请评估单卡显存余量。中文乱码或 JSON 解析失败确认服务端与客户端文件均以 UTF-8 编码保存且响应按json.loads(r.text)解析。小结本文完整覆盖了 PaddleNLP SimpleServing 部署 UIE 数据蒸馏封闭域信息抽取模型的全流程安装paddlenlp 2.4.4、用paddlenlp server server:app启动服务、用client.py发起 HTTP 请求并通过schema、task_path、device_id与 Taskflow 列表完成领域定制和多卡负载均衡。结合 server.py、client.py 以及 paddlenlp/server/ 下的源码实现你可以在此基础上按业务需要扩展路由、增删实例或接入自定义后处理将蒸馏小模型稳定地对外提供在线抽取服务。赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleNLP SimpleServing 服务化部署实战基于 UIE-X 的文档信息抽取 HTTP 服务搭建指南PaddleNLP SimpleServing 服务化部署实战基于 UIE X 的文档信息抽取 HTTP 服务搭建指南 本文面向需要在生产环境中上线 UIE人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP 信息抽取应用全指南从 UIE Taskflow 零样本抽取到文档信息抽取与产业级部署PaddleNLP 信息抽取应用全指南从 UIE Taskflow 零样本抽取到文档信息抽取与产业级部署 本文以 PaddleNLP 仓库中 slm/appl人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP UIE Taskflow 文档信息抽取实战用 UIE-X 实现开箱即用的多模态信息抽取PaddleNLP UIE Taskflow 文档信息抽取实战用 UIE X 实现开箱即用的多模态信息抽取 本文是 PaddleNLP 信息抽取应用中 文档信人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇urllib3 性能优化终极指南7个提升HTTP请求速度的实用技巧下一篇21个效率神器用Illustrator脚本将设计工作提速300%创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考