人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载导读本文是 PaddleNLP 信息抽取应用Information Extraction中文档类标注的完整实操指南覆盖从安装 Label Studio、创建标注项目、完成实体/关系/文档分类三类标注到导出 JSON、再通过仓库提供的label_studio.py脚本一键转换为 UIEUniversal Information Extraction模型可直接训练的 train/dev/test 数据集的全流程。读完本文你将掌握如何在slm/applications/information_extraction目录下把一份手工标注的发票、报关单等文档图片转化为可用于uie-x-base等跨模态抽取模型微调的标准化数据并理解每个转换参数对训练数据质量的实际影响。本文以仓库中的 Label Studio 文档抽取标注指南 为主线并结合 label_studio.py 转换脚本、DataConverter 底层实现 与 DocParser 文档解析器 的源码进行纵深讲解。1. 环境安装Installation1.1 环境要求本文的标注示例基于以下环境配置Python 3.8label-studio 1.6.0标注平台paddleocr 2.6.0.1用于标注数据转换阶段对图片执行 OCR说明paddleocr 并非标注环节必需而是在执行数据转换时label_studio.py需要调用 PaddleOCR 从图片中抽取文字与位置信息详见第 2.6 节因此请保证在运行转换脚本的机器上安装了满足版本要求的 paddleocr。1.2 安装与启动在终端中使用 pip 安装指定版本的 label-studiopip install label-studio1.6.0安装完成后运行以下命令启动服务label-studio start随后在浏览器中打开 http://127.0.0.1:8080/输入用户名和密码登录即可开始使用 label-studio 进行标注。2. 文档抽取任务标注Document Extraction Task Annotation完整的标注 → 转换流水线如下创建项目 → 上传图片 → 构建标签 → 逐条标注 → 导出 JSON → 脚本转换 → 生成训练数据。转换后的数据格式由DataConverter统一生成最终产出train.txt、dev.txt、test.txt三个文件供 document 目录下的微调脚本 直接使用。2.1 项目创建Project Creation点击 Create 开始创建新项目填写项目名称与描述并根据任务类型选择标注模板命名实体识别NER、关系抽取Relation Extraction任务选择Object Detection with Bounding Boxes目标检测框模板。标注人员通过框选图片区域来完成实体标注通过连线完成关系标注。文档分类Document Classification任务选择Image Classification图像分类模板。标注人员只需为整张文档图片选择类别即可。说明本文基于原文档的标注示意图进行文字化描述。在 Label Studio 界面中上述两种模板对应着不同的标注组件矩形框 / 选择框这与第 2.3 节标签构建方式一一对应。项目创建后需要定义标签Define labels即预先声明本次任务涉及的实体类型集合。原文档示例中构建的是 Span 实体类型标签如开票日期、名称、纳税人识别号等。其他类型标签关系标签、分类标签的构建方式见 2.3 节。2.2 数据上传Data Upload首先将图片从本地或 HTTP 链接上传至 Label Studio然后选择将其导入当前项目。请记住上传图片时的原始文件名因为第 2.6 节数据转换阶段要求本地图片文件与上传到 Label Studio 时的文件名完全一致且需要放在约定的images目录下脚本才能通过标注记录中的图片字段完成定位。2.3 标签构建Label Construction实体标签Entity Label在项目中定义实体类别标签如开票日期、名称、纳税人识别号等标注时这些标签会出现在矩形框的属性面板中。关系标签Relation Label关系标签通过 Relation XML 模板声明原文档给出的模板如下Relations Relation valueunit/ Relation valueQuantity/ Relation valueamount/ /Relations上述Relation value.../中的 value 即为关系类型谓词例如发票明细场景下的单位、数量、金额。从源码看关系标注在转换后被解析为from_id主体实体→to_id客体实体与type谓词三元组见 DataConverter.process_text_tag / process_image_tag。分类标签Classification Label在 Image Classification 模板中配置分类选项如发票、报关单标注时直接为整张文档选择类别。2.4 任务标注Task Annotation实体抽取在图片上框选出每个实体区域并选择对应实体标签即可。原文档对应的标注示例 schema 为schema [开票日期, 名称, 纳税人识别号, 地址、电话, 开户行及账号, 金额, 税额, 价税合计, No, 税率]这是一个典型的增值税发票实体抽取 schema。转换后脚本会为每个实体生成一条{content: 全文, result_list: [{text: 实体文本, start: 起始偏移, end: 结束偏移}], prompt: 实体类型}的训练样本。关系抽取关系抽取分为四步标注主体与客体分别框选主体实体和客体实体例如发票中的商品名称与金额。画关系连线从主体拖出连线指向客体箭头方向表示从主体指向客体。添加关系标签为这条连线选择第 2.3 节声明的关系类型如金额、单位、数量。完成标注保存该条标注记录。该示例对应的 schema 为schema { 名称及规格: [ 金额, 单位, 数量 ] }即字典结构键为主体实体类型值为该主体可以关联的关系谓词列表。从源码DataConverter.convert_ext_examples可以印证转换时脚本对每条关系以主体名 的 谓词中文 schema或谓词 of 主体名英文 schema构造 prompt客体实体文本作为 answer这正是 UIE 关系抽取两阶段训练数据的构造方式。文档分类为整张文档选择类别即可对应 schema 为schema 文档类别[发票报关单]分类样本的 prompt 由prompt_prefix [ options 列表 ]拼接而成见 generate_cls_example例如文档类别[发票,报关单]。2.5 数据导出Data Export勾选已标注的图片 ID选择导出文件类型为JSON即可导出标注数据。导出文件记录了每条样本的原始图片、标注框坐标x/y/width/height 百分比、标签类型与关系连线等完整信息是第 2.6 节数据转换的输入。2.6 数据转换Data Conversion目录组织将导出的文件重命名为label_studio.json放入./document/data目录并将对应的标注图片放入./document/data/images目录图片文件名必须与上传到 Label Studio 时一致。最终目录结构如下./document/data/ ├── images # image directory │ ├── b0.jpg # Original picture (the file name must be the same as the one uploaded to label studio) │ └── b1.jpg └── label_studio.json # Annotation file exported from label studio然后通过仓库根目录下的 label_studio.py 脚本将其转换为 UIE 的数据格式。抽取任务extraction taskpython label_studio.py \ --label_studio_file ./document/data/label_studio.json \ --save_dir ./document/data \ --splits 0.8 0.1 0.1 \ --task_type ext文档分类任务document classification taskpython label_studio.py \ --label_studio_file ./document/data/label_studio.json \ --save_dir ./document/data \ --splits 0.8 0.1 0.1 \ --task_type cls \ --prompt_prefix document category \ --options invoice customs declaration脚本内部做了什么结合 label_studio.py 源码转换流程可拆解为校验与随机化校验label_studio_file路径存在性若splits非空则要求长度为 3 且元素之和为 1使用 Decimal 精确比较避免浮点误差根据is_shuffle与seed对样本做随机打乱。数据集划分按splits比例切分出train_ids、dev_ids、test_ids并额外写入sample_index.json保存划分索引方便回溯。标注类型识别脚本自动检测每条样本的data字段中是否含image键——含image则按图片标注anno_typeimage处理否则按纯文本标注anno_typetext处理。实例化 DataConverter将negative_ratio、prompt_prefix、options、separator、layout_analysis、schema_lang、ocr_lang等参数传入 DataConverter。逐条转换task_typeext时调用convert_ext_examples训练集is_trainTrue构建负例验证/测试集is_trainFalse构建全量负例task_typecls时调用convert_cls_examples。写出数据以 JSON Lines 格式分别写入train.txt、dev.txt、test.txt到save_dir日志中打印每个文件的样本数。对于图片标注样本process_image_tag会做如下工作见 paddlenlp/utils/tools.py从标注记录中解析出图片文件名Label Studio 会为图片加前缀脚本会截断前缀并在label_studio_file同级目录下的images/中查找原图找不到时记录 warning 并跳过该样本。调用DocParser对图片执行 OCRocr_lang指定语言layout_analysisTrue时启用 PPStructure 版面分析得到按阅读顺序拼接的全文与逐字坐标。将标注框百分比坐标乘以原图宽高与 OCR 结果做框内字符匹配_find_segment_in_box覆盖率阈值默认 0.7表格区域按整格覆盖判断把矩形框落到具体的字符起止偏移上从而生成实体start_offset/end_offset。关系标注只保留主体、客体均在实体集合中的记录。也就是说标注框本身并不会直接进入训练数据最终训练的答案是框内对应的 OCR 文本及其在全文中的字符偏移因此 OCR 质量与版面顺序对转换结果影响很大这正是ocr_lang与layout_analysis参数的意义所在。2.7 更多配置参数More Configuration下表为label_studio.py支持的全部参数默认值以仓库源码 argparse 定义 为准参数含义默认值label_studio_file从 label studio 导出的数据标注文件路径./data/label_studio.jsonsave_dir训练数据的存储目录./datanegative_ratio最大负例比例仅对抽取任务有效。负例数量 negative_ratio × 正例数量仅作用于训练集为保证评估指标准确验证集与测试集默认使用全量负例5splits数据集划分比例长度为 3 且之和为 1如0.8 0.1 0.1表示按 8:1:1 划分为训练/验证/测试集[0.8, 0.1, 0.1]task_type任务类型可选ext抽取与cls分类extoptions分类任务的类别标签仅对分类任务有效[正向, 负向]prompt_prefix分类任务的 prompt 前缀声明仅对分类任务有效情感倾向is_shuffle是否随机打乱数据集Trueseed随机种子1000separator实体类别/评价维度与分类标签之间的分隔符仅对实体/评价维度分类任务有效##schema_langschema 语言决定训练数据 prompt 的构造方式可选ch/enchocr_langOCR 语言可选ch/enchlayout_analysis是否使用 PPStructure 对文档做版面分析仅对文档类标注任务有效False参数深度解析negative_ratio 与负例构建机制合理的负例可以显著提升模型效果。从源码add_entity_negative_example、add_relation_negative_example可见实体阶段的负例来自该文档中未出现的其他实体类别与当前文档的组合关系阶段则从三类冗余 prompt 中采样反关系客体名 谓词、非主体的实体名 随机谓词、主体 未出现的谓词并保证负例数不超过negative_ratio × 正例数关系阶段按negative_ratio // 3分配给三类冗余不足部分从备选集补足。因此negative_ratio越大训练样本越难训练耗时也相应增加设为-1时源码中另有判断将使用全量负例。separator 与实体级分类当实体标签本身携带分类维度时如观点词##正向脚本通过separator拆分实体类别与情感标签并额外生成一条以实体名 的 prompt_prefix为 prompt 的实体级分类样本见 convert_ext_examples 中的_sep_cls_label。schema_lang 与 prompt 构造中文 schema 下实体 prompt 即实体类别本身关系 prompt 为主体 的 谓词英文 schema 下关系 prompt 变为谓词 of 主体。同时实体级分类的 prompt 前缀也遵循同一语言规则实体名 的 情感倾向与Sentiment of 实体名。训练与评估evaluate.py的schema_lang参数必须保持一致。ocr_lang / layout_analysis 与 DocParser图片转换由 DocParser 完成——parse方法先读取图片再调用ocr底层为 PaddleOCR 检测识别layout_analysisFalse时直接对整图 OCR输出(box, text)序列layout_analysisTrue时改用 PPStructure 版面分析引擎对每个非表格区域逐区 OCR、对表格区域整格处理见 DocParser.ocr从而优化复杂版面的文本排序。expand_to_a4_size逻辑还会将图片扩展到 A4 比例并记录偏移量确保跨模态训练时的坐标对齐。注意要点原文档强调默认情况下脚本会按比例将数据划分为 train/dev/test 三份数据集每次执行脚本都会覆盖同名数据文件train.txt/dev.txt/test.txt/sample_index.json如需保留请先备份或更换save_dir模型训练阶段建议构造负例提升效果该能力已内置于数据转换阶段负例比例由negative_ratio控制从 label studio 导出的文件默认要求每条数据都经过正确的人工标注。3. 转换之后无缝衔接 UIE-X 微调label_studio.py产出的train.txt/dev.txt/test.txt可直接喂给 document 目录的微调流程。该目录还提供了预标注的增值税发票示例数据集下载与finetune.py微调命令例如python finetune.py \ --device gpu \ --model_name_or_path uie-x-base \ --output_dir ./checkpoint/model_best \ --train_path data/train.txt \ --dev_path data/dev.txt \ --max_seq_len 512 \ --per_device_train_batch_size 8 \ --num_train_epochs 10 \ --learning_rate 1e-5 \ --do_train --do_eval --do_export \ --metric_for_best_model eval_f1微调完成后再通过 evaluate.py 评估、并参考 document 部署指南 完成 HTTP 服务部署即可形成标注 → 训练 → 评估 → 部署的完整文档信息抽取链路。这也是 information_extraction 应用总览 中所描述的全生命周期方案在文档场景下的落地路径。4. 参考资料本文主线文档Label Studio 文档抽取标注指南英文转换脚本label_studio.py底层转换器DataConverterpaddlenlp/utils/tools.py文档解析器DocParserpaddlenlp/utils/doc_parser.py文档微调与评估document 目录 README配套的纯文本标注指南原理相同针对文本场景label_studio_text_en.md官方工具Label Studio赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleNLP 文档信息抽取实战指南基于 UIE-X 的标注、微调、评估与推理全流程PaddleNLP 文档信息抽取实战指南基于 UIE X 的标注、微调、评估与推理全流程 本文围绕 PaddleNLP 开源仓库 slm/applicatio人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP基于 doccano 的 PP-UIE 信息抽取数据标注与转换全流程指南基于 doccano 的 PP UIE 信息抽取数据标注与转换全流程指南 本指南围绕 PaddleNLP 通用信息抽取大模型 PP UIE 的定制训练链路系统人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP生成式AI应用路线图四大应用领域深度拆解内容创作、电商营销、个人助理与开发者工具生成式AI应用路线图四大应用领域深度拆解内容创作、电商营销、个人助理与开发者工具 生成式AI应用路线图 generative ai roadmap是一份由人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇emilianJR/chilloutmix_NiPrunedFp32Fix提示词情感迁移风格情感控制的终极指南下一篇5分钟掌握Blender建筑建模Building Tools终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考