人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载本文围绕 PaddleNLP 仓库中的 对话情绪识别示例 展开讲解如何用一个百度提供的 TextCNN 预训练模型在机器人聊天数据集RobotChat上完成积极/消极/中性三分类微调并走通“数据准备 → 训练 → 静态图参数导出 → 动态图预测与推理部署”的完整链路。读完本文你可以复制示例中的命令独立跑通训练与预测并结合 model.py、train.py 等源码理解模型结构与训练流程的实现细节。任务与示例代码结构情感分析旨在自动识别和提取文本中的倾向、立场、评价、观点等主观信息其中对话情绪识别是一个典型任务针对智能对话中的用户文本自动判断该文本的情绪类别并给出相应置信度情绪类型分为积极positive、消极negative和中性neutral。本示例展示了如何用 TextCNN 预训练模型在机器人聊天数据集上进行 Fine-tune完成中文对话情绪识别任务。示例目录结构如下textcnn/ ├── deploy # 部署 │ └── python │ └── predict.py # python预测部署示例 ├── data.py # 数据处理脚本 ├── export_model.py # 动态图参数导出静态图参数脚本 ├── model.py # 模型组网脚本 ├── predict.py # 模型预测脚本 ├── README.md # 文档说明 └── train.py # 对话情绪识别任务训练脚本对应仓库内的实际文件data.py读取 TSV 数据、构造 DataLoader、预测数据预处理train.py加载词表与数据、组网、加载预训练参数、执行fit训练/评估/测试model.pyTextCNNModel网络结构定义export_model.py把动态图参数导出为静态图参数predict.py动态图预测脚本deploy/python/predict.py基于paddle.inference的静态图部署预测示例。模型结构TextCNNModel 与 CNNEncoder先看 model.py 中的网络组网这是理解整个示例的基础class TextCNNModel(nn.Layer): def __init__( self, vocab_size, num_classes, emb_dim128, padding_idx0, num_filter128, ngram_filter_sizes(1, 2, 3), fc_hidden_size96, ): super().__init__() self.embedder nn.Embedding(vocab_size, emb_dim, padding_idxpadding_idx) self.encoder CNNEncoder(emb_dimemb_dim, num_filternum_filter, ngram_filter_sizesngram_filter_sizes) self.fc nn.Linear(self.encoder.get_output_dim(), fc_hidden_size) self.output_layer nn.Linear(fc_hidden_size, num_classes) def forward(self, text): # Shape: (batch_size, num_tokens, embedding_dim) embedded_text self.embedder(text) # Shape: (batch_size, len(ngram_filter_sizes) * num_filter) encoder_out paddle.tanh(self.encoder(embedded_text)) # Shape: (batch_size, fc_hidden_size) fc_out paddle.tanh(self.fc(encoder_out)) # Shape: (batch_size, num_classes) logits self.output_layer(fc_out) return logits从源码结构看前向流程分为四步词嵌入nn.Embedding(vocab_size, 128, padding_idx...)将 token id 序列映射为(batch_size, num_tokens, 128)的向量序列padding_idx指定 [PAD] 的索引训练与预测脚本中均由词表vocab.to_indices([PAD])得到CNN 编码使用 PaddleNLP 内置的paddlenlp.seq2vec.CNNEncoder见 paddlenlp/seq2vec/encoder.py。它对每个 n-gram 卷积窗口尺寸创建一个nn.Conv2D(in_channels1, out_channelsnum_filter, kernel_size(i, emb_dim))卷积层卷积次数为num_tokens - ngram_size 1随后对每个卷积通道做最大池化。因此池化后的输出维度为num_filter * len(ngram_filter_sizes)即示例中128 * 3 384全连接降维nn.Linear(384, 96)加tanh激活分类输出nn.Linear(96, num_classes)输出三分类 logits。这里有一个容易踩坑的细节当ngram_filter_sizes(1, 2, 3)时输入序列长度必须不小于最大的 n-gram 窗口3否则 3-gram 卷积无法产生任何输出。这一点在 data.py 的preprocess_prediction_data中得到了印证# 序列长度应不小于 TextCNN 模型中最大的 ngram_filter_size if seq_len max_ngram_filter_size: ids.extend([pad_token_id] * (max_ngram_filter_size - seq_len))即对短于 3 个词的输入用 pad token 补齐到长度 3。此外model.py 中TextCNNModel的默认ngram_filter_sizes是(1, 2, 3)而CNNEncoder自身的默认值是(2, 3, 4, 5)示例脚本在实例化模型时显式传入了(1, 2, 3)两者保持一致即可。数据准备数据集示例提供了一份已标注的机器人聊天数据集包含训练集train.tsv、开发集dev.tsv和测试集test.tsv可通过以下命令下载并解压wget https://bj.bcebos.com/paddlenlp/datasets/RobotChat.tar.gz tar xvf RobotChat.tar.gz从 data.py 的read_custom_data函数可以看到数据文件的读取约定def read_custom_data(filename): Reads data. with open(filename, r, encodingutf-8) as f: # Skip head next(f) for line in f: data line.strip().split(\t) label, text data yield {text: text, label: label}即TSV 格式、首行是表头会被跳过、每行以制表符分隔且标签在前、文本在后。三类标签在 train.py 中通过label_map {0: negative, 1: neutral, 2: positive}映射为 0/1/2 三个类别 id训练、预测、部署三处脚本的 label_map 定义完全一致这也是保证预测结果类别顺序正确的前提。词表下载模型训练前需要先下载词表文件word_dict.txt用于构造词-id 映射关系wget https://bj.bcebos.com/paddlenlp/robot_chat_word_dict.txtNOTE词表的选择和实际应用数据相关需根据实际数据选择词表。训练脚本中词表通过 PaddleNLP 的Vocab加载并注入[UNK]与[PAD]两个特殊 tokenvocab Vocab.load_vocabulary(args.vocab_path, unk_token[UNK], pad_token[PAD])后续分词由JiebaTokenizer(vocab)完成即先用 jieba 切词、再查词表得到 id 序列convert_example函数。预训练模型下载示例提供了一个百度基于海量数据训练好的 TextCNN 模型用户通过以下方式下载预训练模型wget https://bj.bcebos.com/paddlenlp/models/textcnn.pdparams对应 train.py 中的加载逻辑当init_from_ckpt指向一个具体文件如./textcnn.pdparams时直接paddle.load后model.set_dict(state_dict)完成预训练参数的初始化随后在 RobotChat 数据上做 finetune。模型训练下载好词表和预训练模型后即可在机器人聊天数据集上 finetune在训练集train.tsv上训练并在开发集dev.tsv上验证通过--init_from_ckpt./textcnn.pdparams指定 TextCNN 预训练模型。CPU 启动python train.py --vocab_path./robot_chat_word_dict.txt \ --init_from_ckpt./textcnn.pdparams \ --devicecpu \ --lr5e-5 \ --batch_size64 \ --epochs10 \ --save_dir./checkpoints \ --data_path./RobotChatGPU 启动unset CUDA_VISIBLE_DEVICES python -m paddle.distributed.launch --gpus 0 train.py \ --vocab_path./robot_chat_word_dict.txt \ --init_from_ckpt./textcnn.pdparams \ --devicegpu \ --lr5e-5 \ --batch_size64 \ --epochs10 \ --save_dir./checkpoints \ --data_path./RobotChatXPU 启动python train.py --vocab_path./robot_chat_word_dict.txt \ --init_from_ckpt./textcnn.pdparams \ --devicexpu \ --lr5e-5 \ --batch_size64 \ --epochs10 \ --save_dir./checkpoints \ --data_path./RobotChat以上参数表示默认值与 train.py 中argparse定义一致参数说明默认值--vocab_path词汇表文件路径./robot_chat_word_dict.txt--init_from_ckpt恢复模型训练的断点路径或预训练参数文件None--device选用什么设备进行训练可选 cpu、gpu 或 xpu使用 gpu 训练时由参数 gpus 指定 GPU 卡号gpu--lr学习率5e-5--batch_size运行一个 batch 的大小64--epochs训练轮次10--save_dir训练保存模型的文件路径checkpoints/--data_path数据集文件路径./RobotChat从源码看训练流程的核心是 PaddlePaddle 高层 APIpaddle.Model模型包裹后配置 Adam 优化器、CrossEntropyLoss损失和Accuracy指标然后调用model.fit(train_loader, dev_loader, epochs..., save_dir..., callbacks...)程序运行时自动完成训练、开发集评估与测试训练结束后还会在测试集上执行一次model.evaluate。训练前通过set_seed(1000)固定random、numpy与paddle的随机种子保证结果可复现。数据侧由 data.py 的create_dataloader构造 DataLoader训练集使用DistributedBatchSamplerGPU 多卡启动时按卡自动切分验证/测试集使用BatchSampler且不 shuffle。训练过程中模型会自动保存到指定的save_dir中如checkpoints/ ├── 0.pdopt ├── 0.pdparams ├── 1.pdopt ├── 1.pdparams ├── ... └── final.pdparams其中*.pdparams是模型参数*.pdopt是对应轮次的优化器状态。NOTE:如需恢复模型训练断点续训init_from_ckpt只需指定到文件名即可不需要添加文件尾缀。如--init_from_ckptcheckpoints/0即可程序会自动加载模型参数checkpoints/0.pdparams也会自动加载优化器状态checkpoints/0.pdopt。使用动态图训练结束之后还可以将动态图参数导出成静态图参数具体代码见 export_model.py静态图参数保存在output_path指定路径中。运行方式python export_model.py --vocab_path./robot_chat_word_dict.txt --params_path./checkpoints/final.pdparams --output_path./static_graph_params其中params_path是动态图训练保存的参数路径output_path是静态图参数导出路径。export_model.py 的导出实现也很简短重新加载词表并按相同参数ngram_filter_sizes(1, 2, 3)重建TextCNNModel载入final.pdparams后用paddle.jit.to_static声明输入规格InputSpec(shape[None, None], dtypeint64)batch 维与序列维均可变再paddle.jit.save落盘。模型预测动态图训练完成后predict.py 可以直接加载动态图参数进行预测CPU 启动python predict.py --vocab_path./robot_chat_word_dict.txt \ --devicecpu \ --params_path./checkpoints/final.pdparamsGPU 启动export CUDA_VISIBLE_DEVICES0 python predict.py --vocab_path./robot_chat_word_dict.txt \ --devicegpu \ --params_path./checkpoints/final.pdparamsXPU 启动python predict.py --vocab_path./robot_chat_word_dict.txt \ --devicexpu \ --params_path./checkpoints/final.pdparams待预测数据如以下示例你再骂我我真的不跟你聊了 你看看我附近有什么好吃的 我喜欢画画也喜欢唱歌预测流程在源码中对应两段逻辑先经preprocess_prediction_data函数处理jieba 分词 查词表 短序列补齐再调用predict函数输出结果。predict内部将数据按batch_size切块用Pad(axis0, pad_valpad_token_id)对齐同批样本前向得到 logits 后经softmax → argmax映射回label_map中的类别字符串输出形如Data: 你再骂我我真的不跟你聊了 Label: negative Data: 你看看我附近有什么好吃的 Label: neutral Data: 我喜欢画画也喜欢唱歌 Label: positivepredict.py还支持--batch_size默认 1与--params_path默认./checkpoints/final.pdparams等参数可用于批量预测自己的文本。静态图导出后的 Python 部署预测导出静态图参数之后可以用于部署deploy/python/predict.py 提供了 Python 部署预测示例。运行方式需区分 PIR 机制的开关状态开启 PIR 机制3.0.0 默认python deploy/python/predict.py --model_filestatic_graph_params.json --params_filestatic_graph_params.pdiparams未开启 PIRpython deploy/python/predict.py --model_filestatic_graph_params.pdmodel --params_filestatic_graph_params.pdiparams两种命令的差异仅在模型描述文件后缀.json与.pdmodel权重文件都是static_graph_params.pdiparams。这一后缀约定在 paddlenlp/utils/env.py 中体现为PADDLE_INFERENCE_MODEL_SUFFIXPIR 下为.json非 PIR 下为.pdmodel与PADDLE_INFERENCE_WEIGHTS_SUFFIX.pdiparams。部署脚本内部的关键流程构造paddle.inference.Config(model_file, params_file)并按设备配置GPU 调用config.enable_use_gpu(100, 0)CPU 调用config.disable_gpu()还可进一步启用 MKL-DNN、设置 CPU 线程数XPU 调用config.enable_xpu(100)同时config.switch_use_feed_fetch_ops(False)创建 Predictor 后通过get_input_handle / get_output_handle拿到输入输出句柄预测时复用与训练一致的预处理jieba 分词 短序列按max_ngram_filter_size3补齐再经Pad对齐成批次copy_from_cpu送入 Predictor、predictor.run()执行推理输出 logits 后softmax → argmax得到情绪标签。该脚本还暴露了--max_seq_length默认 128、--batch_size默认 2、--device默认 gpu等参数方便按实际部署场景调整。小结与参考本示例用约四个脚本串起了 TextCNN 情绪识别任务的全流程数据侧以 TSV jieba 分词 词表查 id 的方式准备输入训练侧借助paddle.Model高层 API 完成预训练初始化、三分类微调与自动断点保存预测与部署侧分别提供了动态图直连预测和paddle.inference静态图部署两条路径且两者共享同一套分词与短序列补齐逻辑保证训练与部署的行为一致。TextCNN 参考论文EMNLP2014-Convolutional Neural Networks for Sentence Classification赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleNLP Transformer 机器翻译实战从 WMT14 英德翻译的训练、推理到静态图部署PaddleNLP Transformer 机器翻译实战从 WMT14 英德翻译的训练、推理到静态图部署 机器翻译Machine Translation是人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP 昇腾 NPU 全流程实战llama2-13B 微调训练与静态图推理PaddleNLP 昇腾 NPU 全流程实战llama2 13B 微调训练与静态图推理 导读 本文基于 PaddleNLP 在昇腾 Ascend NPU 上的人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPActon蓝绿部署无停机部署策略Acton蓝绿部署无停机部署策略 Acton作为TON智能合约开发的完整工具链提供了强大的蓝绿部署能力帮助开发者实现零停机时间的智能合约更新。本文将详细介人工智能语音音频上一篇如何快速搭建AWS CodePipeline全流程从零到英雄的DevOps持续集成实战指南下一篇突破M系列芯片限制xmrig macOS高性能计算完整适配指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
ClawHub 特性开关实践:基于 Krill Switch 的首页文案试点与 SSR 评估契约 后端前端AI 技能AI 插件搜索引擎 【免费下载链接】clawhub Skill Plugin Registry for OpenClaw 项目地址: https://gitcode.com/gh_mirrors/mo/clawhub 点击查看 免费下载 ClawHub 是 OpenClaw 的 Skill Plugin 注册中心。本站技术指南基于仓库规范文档 specs/f… · 2026/9/25 5:22:03
Shell变量与字符串深度解析:从原理到实战避坑指南 /* 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 6:25:01
Win10修改文件默认打开方式全指南:右键、设置、注册表一次说清 不知道你有没有过这种瞬间:双击一个 PDF,结果它跑浏览器里打开了;双击图片,弹出来的是一个从没用过的修图工具;甚至双击 .txt,蹦出来的不是记事本而是某个来路不明的编辑器。我第一次遇到的时候也愣了半天&… · 2026/9/25 6:25:01
从CSDN热榜抓取到技术趋势分析:Python爬虫雷达系统实战 CSDN 的热榜每天刷一遍,十个标题里有八个换新面孔,剩下的两个也变了时间戳。嘴上说着"技术圈日新月异",心里其实一直存个疑问:这些榜单数据背后,到底哪些技术方向是真热,哪些只是昙花一现&#x… · 2026/9/25 6:25:01
脉冲神经网络SNN入门:从LIF神经元到类脑芯片与低功耗计算 /* 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 6:25:01
从零开始学硬件:用人体解剖学构建硬件系统知识地图 /* 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 6:24:48
截图固定到屏幕怎么实现?贴图工具原理与Snipaste实操指南 1. 截图固定这件事,比你想的更有讲究很多人第一次听到“把截图固定在电脑页面上”这个需求,脑子里冒出来的第一反应是——截图不就是截完保存成图片文件吗?还能固定在页面上?这听起来像是个小众需求,但只要你真正用过一… · 2026/9/25 6:24:48
创维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