人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载PaddleNLP 多标签分类应用slm/applications/text_classification/multi_label提供了从数据标注、模型训练、模型分析、模型压缩到预测部署的端到端方案。本文聚焦其中基于Paddle Serving的在线服务化部署环节从环境准备、inference 静态图模型转换到 pipeline 服务启动与 RPC/HTTP 客户端验证完整覆盖将训练好的多标签模型上线为可对外提供预测能力的 HTTP 服务的全过程。读完本文你将掌握 PaddleNLP 多标签模型转 Paddle Serving 格式的命令、服务端config.yml的每项参数含义、service.py内部 tokenizer 预处理与 sigmoid 阈值后处理逻辑以及如何用 rpc_client 与 http_client 完成在线请求验证。适用前提本指南面向已经完成多标签模型训练并导出了静态图 inference 模型的场景。训练与静态图导出步骤详见 多标签分类指南部署目录中同时提供基于 ONNXRuntime 的离线部署方案、SimpleServing 方案 与 Triton 方案本文仅讲解 Paddle Serving 路线。目录环境准备模型转换部署模型环境准备在线服务化部署需要同时具备 PaddleNLP 运行环境和 Paddle Serving 运行环境版本要求如下python 3.6paddlepaddle 2.3paddlenlp 2.4安装 PaddlePaddle环境中paddlepaddle-gpu或paddlepaddle版本应大于或等于 2.3。请根据自己机器情况操作系统、是否使用 GPU、CUDA 版本等选择合适的安装命令具体可参考飞桨官方快速安装文档。安装 PaddleNLP安装 PaddleNLP 默认开启百度镜像源以加速下载如果你使用 HTTP 代理可以删去-i https://mirror.baidu.com/pypi/simplepython3 -m pip install --upgrade paddlenlp -i https://mirror.baidu.com/pypi/simple安装 Paddle ServingPaddle Serving 的安装拆分为三部分client 与 serving app用于向服务发送请求RPC/HTTP 客户端依赖例如本文后续用到的rpc_client.py依赖paddle_serving_server.pipeline.PipelineClienthttp_client.py通过 HTTP 请求访问服务pip install paddle_serving_app paddle_serving_clientserving server用于启动服务需根据服务器设备选择 CPU server 或 GPU server安装 CPU serverpip install paddle_serving_server安装 GPU server注意选择与本地环境一致的 CUDA/Cudnn/TensorRT 版本组合# CUDA10.2 Cudnn7 TensorRT6 pip install paddle-serving-server-gpu0.8.3.post102 -i https://pypi.tuna.tsinghua.edu.cn/simple # CUDA10.1 TensorRT6 pip install paddle-serving-server-gpu0.8.3.post101 -i https://pypi.tuna.tsinghua.edu.cn/simple # CUDA11.2 TensorRT8 pip install paddle-serving-server-gpu0.8.3.post112 -i https://pypi.tuna.tsinghua.edu.cn/simpleNOTE默认开启国内清华镜像源加速下载如果你使用 HTTP 代理可以去掉-i https://pypi.tuna.tsinghua.edu.cn/simple更多 wheel 包版本请参考 Paddle Serving 官方文档的 Latest Packages 说明。模型转换使用 Paddle Serving 做服务化部署时需要先将保存的 inference 静态图模型转换为 serving 易于部署的模型格式。第一步导出静态图模型在进入本文部署环节之前需要先完成动态图参数到静态图参数的导出。多标签分类应用提供 静态图导出脚本运行方式如下python export_model.py --params_path ./checkpoint/ --output_path ./export若使用多语言模型 ERNIE M 作为预训练模型需追加--multilingual参数此时输入规格只包含input_idspython export_model.py --params_path ./checkpoint/ --output_path ./export --multilingual从 export_model.py 的源码可以看到导出过程通过paddle.jit.to_static将动态图模型转换为静态图非多语言模型定义两个输入InputSpec(shape[None, None], dtypeint64, nameinput_ids)与token_type_ids多语言模型仅保留input_ids一个输入最终通过paddle.jit.save(model, save_path)将模型保存到output_path下的float32前缀文件中如float32.pdiparams、float32.pdiparams.info、float32.pdmodel。第二步转换为 Serving 格式用已安装的paddle_serving_client将静态图参数模型转换成 serving 格式。命令中的--dirname填模型地址export目录--model_filename与--params_filename根据实际导出的模型文件名填写即可python -m paddle_serving_client.convert --dirname ../../export --model_filename float32.pdmodel --params_filename float32.pdiparams原文档中该命令位于deploy/paddle_serving/目录下执行故../../export指向 multi_label 应用 下的export目录如你已将模型放在其他位置请相应调整--dirname。可通过以下命令查看convert各参数含义python -m paddle_serving_client.convert --help转换成功后的目录结构如下paddle_serving/ ├── serving_server │ ├── float32.pdiparams │ ├── float32.pdmodel │ ├── serving_server_conf.prototxt │ └── serving_server_conf.stream.prototxt └── serving_client ├── serving_client_conf.prototxt └── serving_client_conf.stream.prototxtserving_server目录用于启动服务端serving_client目录中的serving_client_conf.prototxt记录了模型输入输出节点fetch var 的 alias_name后面配置config.yml的fetch_list时需以它为准。部署模型Paddle Serving 部署目录slm/applications/text_classification/multi_label/deploy/paddle_serving/中包含了启动 pipeline 服务和发送预测请求的代码与模型结构如下serving/ ├── serving_server │ ├── float32.pdiparams │ ├── float32.pdmodel │ ├── serving_server_conf.prototxt │ └── serving_server_conf.stream.prototxt ├── config.yml # 分类任务启动服务端的配置文件 ├── rpc_client.py # 分类任务发送 pipeline 预测请求的脚本 └── service.py # 分类任务启动服务端的脚本实际部署时需要把上一步转换得到的serving_server目录放入此目录替换或覆盖并保证service.py、config.yml、rpc_client.py、http_client.py与本模型配套。修改配置文件目录中的 config.yml 是启动服务端的核心配置文件内注释解释了每个参数的含义。下面结合该文件逐项说明并给出常用修改示例# 修改模型目录为下载的模型目录或自己的模型目录: model_config: serving_server model_config: ernie-3.0-tiny/serving_server # 修改 rpc 端口号 rpc_port: 10231 rpc_port: 9998 # 修改使用 GPU 推理为使用 CPU 推理: device_type: 1 device_type: 0 # 开启 MKLDNN 加速 # use_mkldnn: False use_mkldnn: True # Fetch 结果列表以 serving_client/serving_client_conf.prototxt 中 fetch_var 的 alias_name 为准 fetch_list: [linear_147.tmp_1] fetch_list: [linear_75.tmp_1]config.yml 的完整参数清单及含义如下配置项取值示例含义rpc_port18090RPC 端口rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时会自动将rpc_port设置为http_port1http_port9878HTTP 端口当rpc_port可用且http_port为空时不会自动生成http_portworker_num1最大并发数。当build_dag_each_workerTrue时框架会创建worker_num个进程每个进程内构建 grpcServer 和 DAG当为False时框架会设置主线程 grpc 线程池的max_workersworker_numbuild_dag_each_workerfalseFalse时框架在进程内创建一条 DAGTrue时框架会在每个进程内创建多个独立的 DAGdag.is_thread_opFalseop 资源类型True为线程模型False为进程模型dag.retry1重试次数dag.use_profilefalse是否使用性能分析True会生成 Timeline 性能数据对性能有一定影响dag.tracer.interval_s10性能采样的时间间隔秒op.seq_cls.concurrency1op 并发数is_thread_opTrue时为线程并发否则为进程并发op.seq_cls.local_service_conf.client_typelocal_predictorclient 类型包括brpc、grpc和local_predictorlocal_predictor不启动 Serving 服务在进程内直接预测op.seq_cls.local_service_conf.model_configserving_server模型路径即转换得到的serving_server目录op.seq_cls.local_service_conf.fetch_list[linear_75.tmp_1]Fetch 结果列表以 client_config 中 fetch_var 的 alias_name 为准不同模型输出节点名不同详见下文op.seq_cls.local_service_conf.device_type1推理设备类型0cpu1gpu2tensorRT3arm cpu4kunlun xpuop.seq_cls.local_service_conf.devices0计算硬件 ID为空或不写时为 CPU 预测为0、0,1,2等时为 GPU 预测表示使用的 GPU 卡op.seq_cls.local_service_conf.use_mkldnnTrue是否开启 MKLDNN 加速CPU 推理场景下通常开启op.seq_cls.local_service_conf.thread_num12推理线程数op.seq_cls.local_service_conf.ir_optimTrue是否开启 IR 图优化op.seq_cls.local_service_conf.min_subgraph_size10注释示例开启 TensorRT 后进行优化的子图包含的最少节点数关于fetch_list的取值不同预训练模型导出的静态图输出节点名不同。service.py 中内置了一张模型名到输出节点名的映射表FETCH_NAME_MAP部署时请按实际使用的模型选择对应节点名例如ernie-3.0-medium-zh、ernie-3.0-mini-zh→linear_75.tmp_1ernie-3.0-base-zh、ernie-2.0-base-en、ernie-m-base→linear_147.tmp_1ernie-1.0-large-zh-cw、ernie-2.0-large-en、ernie-m-large→linear_291.tmp_1ernie-3.0-micro-zh、ernie-3.0-nano-zh→linear_51.tmp_1最稳妥的方式是直接查看serving_server/serving_server_conf.prototxt中记录的输出节点名与 service.py 注释中的说明一致。分类任务启动服务修改好配置文件后执行下面命令启动服务python service.py --max_seq_length 128 --model_name ernie-3.0-medium-zh可支持的参数max_seq_length分词器 tokenizer 使用的最大序列长度ERNIE 模型最大不能超过 2048。请根据文本长度选择通常推荐 128、256 或 512若出现显存不足请适当调低这一参数默认为 128。model_name选择预训练模型可选ernie-1.0-large-zh-cw、ernie-3.0-xbase-zh、ernie-3.0-base-zh、ernie-3.0-medium-zh、ernie-3.0-micro-zh、ernie-3.0-mini-zh、ernie-3.0-nano-zh、ernie-2.0-base-en、ernie-2.0-large-en、ernie-m-base、ernie-m-large默认为ernie-3.0-medium-zh请根据实际使用的预训练模型选择。从 service.py 源码可以看到服务端的完整工作流服务架构Service继承自paddle_serving_server.web_service.WebService通过service.prepare_pipeline_config(config.yml)读取 pipeline 配置service.run_service()启动服务get_pipeline_response将读取节点read_op与分类节点Op(nameseq_cls, input_ops[read_op])串联成一条 pipeline这与config.yml中op.seq_cls的配置一一对应。preprocess预处理使用AutoTokenizer.from_pretrained(args.model_name, use_fastTrue)加载与训练时一致的 tokenizer对输入句子按max_seq_length做paddingTrue, truncationTrue处理并转为int64的 numpy 数组作为模型输入。postprocess后处理对模型输出的 logits 逐项施加 sigmoid 变换result 1 / (1 np.exp(-result))将概率大于 0.5 的类别索引收集为多标签结果用逗号拼接返回{label: labels}。这一 0.5 阈值判多标签的机制与离线预测脚本 predict.py 及训练评估脚本 utils.py 中F.sigmoid(logits)的判定逻辑完全一致。启动成功后输出打印如下[DAG] Succ init [PipelineServicer] succ init ...... --- Running analysis [ir_graph_to_program_pass] I0625 16:44:36.563802 40218 analysis_predictor.cc:1007] optimize end I0625 16:44:36.571702 40218 naive_executor.cc:102] --- skip [feed], feed - token_type_ids I0625 16:44:36.571728 40218 naive_executor.cc:102] --- skip [feed], feed - input_ids I0625 16:44:36.574352 40218 naive_executor.cc:102] --- skip [linear_147.tmp_1], fetch - fetch [2022-06-25 16:44:37,546] [ INFO] - We are using class paddlenlp.transformers.ernie.tokenizer.ErnieTokenizer to load ernie-3.0-medium-zh. [2022-06-25 16:44:37,546] [ INFO] - Already cached /root/.paddlenlp/models/ernie-3.0-medium-zh/ernie_3.0_base_zh_vocab.txt [OP Object] init success W0625 16:45:40.312942 40218 gpu_context.cc:278] Please NOTE: device: 3, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.2 W0625 16:45:40.316538 40218 gpu_context.cc:306] device: 3, cuDNN Version: 8.1.日志中的skip [feed]、skip [fetch]表示静态图推理的输入输出节点已正确衔接[OP Object] init success表示 pipeline 中的分类 op 初始化完成。启动 rpc client 测试Paddle Serving 提供 RPC 客户端脚本 rpc_client.py。注意执行客户端请求时需关闭代理并根据实际情况修改server_url地址即启动服务所在机器的地址脚本默认127.0.0.1:18090需与config.yml中的rpc_port一致python rpc_client.py从源码看rpc_client.py 通过PipelineClient()连接服务端将文本列表编码为 numpy 数组后调用client.predict(feed_dict{sentence: sentence})发起预测返回结果中每个样本是逗号分隔的类别索引脚本再通过label_list将索引映射回中文标签名打印。示例输出如下data: 五松新村房屋是被告婚前购买的 label: 婚前个人财产 -------------------- data: 被告于2016年3月将车牌号为皖B×××××出售了2.7万元被告通过原告偿还了齐荷花人民币2.6万元原、被告尚欠齐荷花2万元。 label: 有夫妻共同财产,有夫妻共同债务 -------------------- data: 2、判令被告返还借婚姻索取的现金33万元婚前个人存款10万元 label: 婚前个人财产 -------------------- data: 一、判决原告于某某与被告杨某某离婚 label: 准予离婚,法定离婚可以看到模型对一个样本输出了多个标签如有夫妻共同财产,有夫妻共同债务这正是多标签分类与单标签分类的差异所在——每个类别独立做 sigmoid 判定多个类别可以同时成立。启动 http client 测试Paddle Serving 还提供 HTTP 客户端脚本 http_client.py。同样注意执行客户端请求时关闭代理并根据实际情况修改server_url地址脚本默认http://127.0.0.1:9878/seq_cls/prediction其中9878需与config.yml中的http_port一致/seq_cls/prediction为服务名拼接的预测路径python http_client.py从源码看http_client.py 将句子列表包装为{key: [sentence], value: [sentence]}的 JSON 通过requests.post发送解析返回的value[0]后同样借助label_list还原为中文标签。输出打印如下data: 五松新村房屋是被告婚前购买的 label: 婚前个人财产 -------------------- data: 被告于2016年3月将车牌号为皖B×××××出售了2.7万元被告通过原告偿还了齐荷花人民币2.6万元原、被告尚欠齐荷花2万元。 label: 有夫妻共同财产,有夫妻共同债务 -------------------- data: 2、判令被告返还借婚姻索取的现金33万元婚前个人存款10万元 label: 婚前个人财产 -------------------- data: 一、判决原告于某某与被告杨某某离婚 label: 准予离婚,法定离婚小结至此一条完整的 Paddle Serving 多标签分类在线部署链路已经打通训练导出静态图export_model.py→ 转换为 serving 格式paddle_serving_client.convert→ 修改config.yml→service.py启动 pipeline 服务 → RPC/HTTP 客户端验证。部署过程中需要重点注意三处与模型强相关的配置model_config指向转换后的serving_server目录fetch_list使用与当前模型输出节点一致的 alias_name可查serving_client_conf.prototxt或 service.py 的FETCH_NAME_MAPrpc_port/http_port与客户端脚本中的server_url保持一致。如需进一步提升在线推理性能可结合 多标签分类指南 中的模型裁剪方案prune.py压缩模型体积后再走本文的部署流程需要离线批量推理时则可参考同目录下的离线部署方案。赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleDetection 模型 Python Serving 服务化部署实战基于 Paddle Serving Pipeline 框架的完整部署指南PaddleDetection 模型 Python Serving 服务化部署实战基于 Paddle Serving Pipeline 框架的完整部署指南 导人工智能深度学习计算机视觉PaddleDetection C Serving 预测部署实战基于 Paddle Serving 的高性能服务化推理PaddleDetection C Serving 预测部署实战基于 Paddle Serving 的高性能服务化推理 Paddle Serving 是飞人工智能深度学习计算机视觉InsightFace ArcFace-Paddle 基于 PaddleServing 的 Pipeline 在线服务部署实战指南InsightFace ArcFace Paddle 基于 PaddleServing 的 Pipeline 在线服务部署实战指南 导读 本文以 Insight人工智能计算机视觉深度学习上一篇魔兽争霸3优化工具WarcraftHelper让经典游戏焕发新活力下一篇LunaTranslator 游戏翻译工具教程日文视觉小说实现在线即时字幕创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Kimi K3 深度测评:长文本之外的真实力,用 Python 微服务压测 API 稳定性 /* 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 11:17:11
Substrate区块链开发框架全解析:从模块化设计到自定义链实操 1. 从“substrate”这个词说起:它到底是什么,为什么值得单独聊第一次看到“substrate”这个词,很多人会愣一下。它在不同圈子里指向完全不同的东西:做区块链的人第一反应是 Parity 那套区块链开发框架,做生物实验的人想… · 2026/9/25 11:17:11
RRSI自改进Harness与Benchmark刷分:机制、风险与防护 1. RRSI论文里到底发生了什么:Harness自己改自己的第一次翻车最近有一篇谷歌的RRSI论文让我反复看了好几遍。论文讨论的不是更大更强的模型,而是一个更“野”的话题:当一套Harness——也就是跑Agent、跑评测的那套脚手架——开始学会修改自己… · 2026/9/25 11:17:05
大模型落地营销广告实战:从文案生成到合规审核的工程化全流程 营销广告通常被认为是离钱最近的业务之一。在货拉拉,营销广告同时覆盖C端用户的拉新、留存、促活,司机端的招募与激励,以及面向企业客户的月结账户场景;过去这些场景的文案物料主要靠运营手工产出,速度慢、版本少&… · 2026/9/25 12:02:09
Atlas 300V 24G部署YOLOv5s实战:从环境搭建到推理优化全记录 去年底接了一个产线上的缺陷检测项目,老机台本来跑的是传统视觉算法,客户要求换成深度学习的检测模型,专门盯产品表面的划痕和脏污。我们在选型阶段纠结过一阵,最后定了 Atlas 300V 24G 这张卡,在上面部署 YOLOv5s。整… · 2026/9/25 12:02:09
Atlas 300V 24G 部署 YOLO:昇腾推理卡从环境搭建到模型调优全攻略 直接进入正题。这几个月被问得最多的问题,一个是“atlas部署yolo怎么搞”,另一个是“atlas 300V 24G 是运算加速卡吗”。每次听到后半句我都想笑,但又很理解——这个名字听起来太像某种网盘工具,实际上它是昇腾的AI推理卡… · 2026/9/25 12:02:09
国自然申报避坑指南:一文分清‘不予受理’与‘不予资助’及常见雷区 每年申请季,我身边总有同事在“不予受理”和“不予资助”之间来回折腾。这两个词看着像,实际是天壤之别:前者是材料、资格、程序上有硬伤,初审直接被拦下来,连评审专家的面都见不着;后者是你的本子进入了评… · 2026/9/25 12:02:02
WiFi提示“某些信息已更改”?Windows无线配置清理与排查指南 前两天帮同事处理一台笔记本,右下角无线图标一直带着黄色感叹号。点开无线列表想重新连一下,系统弹了个对话框:“自上次连接后,某些信息已更改。我们还需要一些信息才能完成连接。”同事一脸茫然,说这个WiFi明明自己天… · 2026/9/25 12:02:02
Atlas 300V 24G推理卡YOLOv5部署实战:从ONNX到OM全流程 后台一直有人拿“atlas”这个关键词来问我,尤其是最近几个月,“atlas部署yolo”和“atlas 300v 24g是运算加速卡吗”这两句几乎是绑定出现的。我猜很多人的状态和我去年拿到这张卡时一样:手里有一堆训练好的YOLO权重,想上个推理卡… · 2026/9/25 12:01:50
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* 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 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* 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 1:00:37