合并 GitLink 初始化提交(保留本仓库 README)
自然语言处理课程实验(大三下):基于 Qwen2.5-3B-Instruct 完成军事领域文本的命名实体识别(NER)与关系抽取(RE),覆盖量化部署、LLM 异步标注、LoRA 微调与知识图谱构建的完整管线,并在课程竞赛平台取得 0.85 分(排名第 1)。
依托 Qwen2.5-3B-Instruct 与远程 GPU 服务器,围绕军事数据集(fned.json,10,450 条文本,BIO 字符级标签)完成四个递进任务,并向竞赛平台提交 LoRA 权重接受自动评测:
response_format=json_object
关键结果:
竞赛评分四阶段:NER+ER 联合(未修 pos)0.37;纯 NER 误交 1 epoch checkpoint 得 0.21;NER+ER 联合(修复 pos)0.841;最终纯 NER 完整 3 epoch 版本 0.85。经验:训练充分性与提交文件 MD5 校验比策略调整更关键。
未入库内容(体积或产物原因,予以说明):各 task 的 datasets/ 目录(LlamaFactory dataset_info.json、qwen_lora_config.yaml 与训练用大 json)、task3/save/ 的 LoRA 权重与 zip、超过 20MB 的标注中间文件(task2/er.csv 125.7MB;task3/er.csv、er_fixed.csv 128.4MB、er_dsflash.csv 125.7MB;task4/er.csv 92.0MB、er_fixed.csv 128.4MB)、实验报告 docx、排行榜截图、散装 whl。核心数据 fned.json(8 至 18MB)与小型 er_test/fned_train/fned_test 文件已保留,可复现数据处理全流程。
环境:Python 3.10+ 与 CUDA GPU;主要依赖 torch、transformers、bitsandbytes、vllm、openai、pandas、json_repair、neo4j(或 py2neo)、pyvis、llamafactory、python-docx(原散装 whl 不入库,请直接 pip 安装)。
# task1:先起 vLLM 服务,再逐格运行 notebook vllm serve /path/to/Qwen2.5-3B-Instruct --dtype=half --trust-remote-code --gpu-memory-utilization 0.7 jupyter lab task1/task1.ipynb # task2:填入 DeepSeek API key 后批量标注(输出 er.csv,约 1.6 小时) jupyter lab task2/task2.ipynb # task3:pos 修复、转训练数据后 LoRA 微调,再以 vLLM LoRA 推理 python task4/fix_pos.py llamafactory-cli train datasets/qwen_lora_config.yaml vllm serve /path/to/Qwen2.5-3B-Instruct --enable-lora \ --lora-modules ner-lora=/path/to/lora/checkpoint-4983 # task4:四维度 F1 评测;notebook 内导入 Neo4j(neo4j://127.0.0.1:7687)生成 knowledge_graph.html python task4/evaluate_er_f1.py
注意:notebook 内模型路径为课程服务器路径,本地复现需替换;LoRA 训练所需 datasets/ 未入库,需按 alpaca 格式(instruction/input/output)重建,配置要点见 task3.ipynb。
自然语言处理竞赛作业:军事数据集 NER/RE 四个 task,含 LoRA 微调,排行榜第一(0.85)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
军事命名实体关系识别
任务背景
依托 Qwen2.5-3B-Instruct 与远程 GPU 服务器,围绕军事数据集(fned.json,10,450 条文本,BIO 字符级标签)完成四个递进任务,并向竞赛平台提交 LoRA 权重接受自动评测:
response_format=json_object强制 JSON、每 10 条断点续传。关键结果:
竞赛评分四阶段:NER+ER 联合(未修 pos)0.37;纯 NER 误交 1 epoch checkpoint 得 0.21;NER+ER 联合(修复 pos)0.841;最终纯 NER 完整 3 epoch 版本 0.85。经验:训练充分性与提交文件 MD5 校验比策略调整更关键。
内容结构
未入库内容(体积或产物原因,予以说明):各 task 的 datasets/ 目录(LlamaFactory dataset_info.json、qwen_lora_config.yaml 与训练用大 json)、task3/save/ 的 LoRA 权重与 zip、超过 20MB 的标注中间文件(task2/er.csv 125.7MB;task3/er.csv、er_fixed.csv 128.4MB、er_dsflash.csv 125.7MB;task4/er.csv 92.0MB、er_fixed.csv 128.4MB)、实验报告 docx、排行榜截图、散装 whl。核心数据 fned.json(8 至 18MB)与小型 er_test/fned_train/fned_test 文件已保留,可复现数据处理全流程。
运行方法
环境:Python 3.10+ 与 CUDA GPU;主要依赖 torch、transformers、bitsandbytes、vllm、openai、pandas、json_repair、neo4j(或 py2neo)、pyvis、llamafactory、python-docx(原散装 whl 不入库,请直接 pip 安装)。
注意:notebook 内模型路径为课程服务器路径,本地复现需替换;LoRA 训练所需 datasets/ 未入库,需按 alpaca 格式(instruction/input/output)重建,配置要点见 task3.ipynb。
来源声明