
1 前言关系抽取是自然语言处理中知识图谱构建的核心任务目标是从非结构化文本中识别实体以及实体之间的语义关系输出(头实体关系尾实体)结构化三元组广泛用于知识库构建、舆情分析、智能问答、文档信息挖掘等场景。传统关系抽取依赖复杂的特征工程泛化能力有限大模型凭借强大的语义理解能力可以通过指令微调、提示词工程快速适配关系抽取任务。本文基于昇思 MindSpore 框架 昇腾 NPU 算力完整讲解大模型做关系抽取的落地实践包含任务介绍、环境准备、数据集处理、模型微调、推理验证、部署落地全流程帮助开发者快速复现业务场景下的关系抽取能力。2 任务背景与应用价值2.1 什么是关系抽取给定一段自然语句模型识别出文本中的实体并判断两两实体之间的关系类型。示例输入华为总部坐落于广东省深圳市输出三元组(华为总部所在地广东省深圳市)分为两大技术路线1. 流水线方案先实体识别再做关系分类2. 联合抽取方案实体、关系同步预测减少误差传递是大模型主流实践方案。2.2 业务价值● 知识图谱从海量网页、文档、财报、病历文本自动构建知识三元组● RAG 知识库把文档抽取结构化关系增强检索问答的准确性● 行业场景法律文书要素抽取、医疗实体关系挖掘、金融公告事件关系解析。2.3 昇思 MindSpore 优势昇思 MindSpore 具备自动并行、动静统一、全场景部署能力深度适配昇腾 AI 处理器支持大模型 LoRA 微调、全参数微调训练阶段充分发挥 NPU 算力训练完成后可以导出 MindIR完成端边云多端推理部署降低关系抽取大模型落地门槛。3 实验环境准备本次实践基于昇腾 910 NPU完整软硬件环境配置如下组件版本硬件Ascend 910 NPU32GBCANN7.0.RC1MindSpore2.5.0Python3.9依赖库datasets、transformers、peft、gradio环境快速安装参考# 安装昇思MindSpore NPU版本 pip install mindspore2.5.0 -f https://www.mindspore.cn/whl pip install datasets transformers peft gradio4 数据集构建与处理4.1 数据集选择选用中文公开关系抽取数据集也可以替换为企业自有领域数据。● 通用领域DuIE2.0中文关系抽取标准数据集包含 50 种关系类型● 领域场景可构造自定义指令数据集格式为指令微调格式。4.2 大模型指令样本格式采用指令微调范式每一条样本构造如下{ instruction: 请从文本中抽取实体关系三元组输出(头实体关系尾实体), input: 华为总部坐落于广东省深圳市, output: (华为总部所在地广东省深圳市) }4.3 数据预处理核心逻辑1. 读取原始数据集转换为指令微调样本2. 使用 tokenizer 对instructioninput做文本编码3. 对 output 标签做编码设置 loss mask只计算输出部分损失4. 划分训练集、验证集封装 MindSpore Dataset 迭代器。提示私有业务数据需要做好数据清洗过滤噪声文本保证关系标签统一。5 基于昇思实现大模型 LoRA 微调直接全参数微调大模型占用显存高实践中优先采用 LoRA 低秩微调仅训练少量适配器参数在昇腾 NPU 上即可完成训练。5.1 模型加载加载支持 MindSpore 后端的开源中文大模型基座如 Qwen 系列开启梯度检查点降低显存占用。from mindformers import AutoModel, AutoTokenizer model AutoModel.from_pretrained(qwen-7b) tokenizer AutoTokenizer.from_pretrained(qwen-7b)5.2 LoRA 配置配置 LoRA 参数仅对 Attention 层增加低秩矩阵冻结基座主干权重。from peft import LoraConfig lora_config LoraConfig( r8, lora_alpha16, target_modules[q_proj,v_proj], lora_dropout0.05, biasnone, task_typeCAUSAL_LM )5.3 训练流程● 优化器AdamWeightDecay学习率设置2e-4● 训练轮次 epoch3设置梯度累积适配单卡显存● 每轮结束在验证集评估 F1 指标关系抽取核心评价指标精确率 P、召回率 R、F1● 训练结束保存 LoRA 权重。昇思 MindSpore 可以开启 NPU 混合精度进一步加速训练。6 推理测试训练完成后合并 LoRA 权重执行关系抽取推理。示例推理代码片段prompt 请从文本中抽取实体关系三元组输出(头实体关系尾实体) 输入文本阿里巴巴成立于1999年总部位于杭州。 输出 inputs tokenizer(prompt, return_tensorsms) output model.generate(**inputs, max_length128) print(tokenizer.decode(output[0], skip_special_tokensTrue))输出示例结果(阿里巴巴成立时间1999年)、(阿里巴巴总部所在地杭州)效果调优小技巧1. 如果抽取结果存在幻觉可以增加 Few‑shot 示例到 prompt2. 领域数据不足优先做提示词工程再做微调3. 评估重点关注关系类型漏检、实体边界错误、生成虚假三元组。7 Gradio 可视化演示基于 gradio 快速搭建简易 web 界面输入文本直接输出关系三元组方便业务人员快速测试效果。import gradio as gr def predict(text): prompt f请从文本中抽取实体关系三元组输出(头实体关系尾实体)\n输入文本{text}\n输出 inputs tokenizer(prompt, return_tensorsms) out model.generate(**inputs,max_length200) return tokenizer.decode(out[0],skip_special_tokensTrue) demo gr.Interface(fnpredict,inputstext,outputstext) demo.launch()8 模型导出与部署训练完成后导出 MindIR 格式模型使用 MindIE 推理服务实现高并发线上关系抽取服务1. 将微调后模型导出 MindIR2. 通过 MindIE 拉起推理服务对外提供 HTTP 接口3. 业务系统调用接口传入待抽取文本获取结构化三元组结果对接知识图谱数据库。9 总结与拓展本篇实践完整演示了基于昇思 MindSpore 与昇腾算力使用大模型完成关系抽取任务从数据集准备、LoRA 微调、推理验证到 Web 演示和线上部署完整链路。拓展方向1. 支持文档长文本关系抽取结合滑动窗口解决超长文本2. 支持重叠实体、嵌套实体的复杂联合关系抽取3. 结合 RAG 系统将抽取出来的三元组存入图数据库构建行业知识库。