ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GLiNER2模型训练教程:10行代码微调自己的NER与分类模型

GLiNER2模型训练教程:10行代码微调自己的NER与分类模型 GLiNER2模型训练教程10行代码微调自己的NER与分类模型【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2本教程带你从零开始完成GLiNER2 模型训练只需约 10 行 Python 代码即可用你自己的数据微调一个NER命名实体识别与文本分类模型。GLiNER2 是一个基于 Schema 的统一信息抽取框架支持实体抽取、情感分类、结构化数据和关系抽取全程本地运行、隐私安全。什么是 GLiNER2为什么适合新手微调传统 NER 模型每加一个实体类型就要重新设计标签体系而 GLiNER2 采用Schema 驱动的设计推理时你直接告诉模型我要找哪些实体训练时只需准备简单的 JSONL 数据。它有几个对新手特别友好的特点一套模型多种任务NER、文本分类、JSON 结构化抽取、关系抽取共用同一个模型CPU 友好推理不需要 GPU普通笔记本就能跑预训练模型丰富可以直接加载公开检查点再微调冷启动只需几百条数据️100% 本地处理数据不出内网适合隐私敏感场景 想先看效果可以先阅读 tutorial/2-ner.md 了解 NER 用法再回来训练。环境安装一条命令完成配置GLiNER2 要求Python 3.10。训练功能需要安装带train扩展的版本pip install gliner2[train]安装完成后核心入口是AutoExtractor加载模型和ExtractorTrainer训练器源码分别位于 gliner2/training/trainer.py 与 gliner2/training/data.py。第一步准备 NER 训练数据JSONL 格式GLiNER2 训练数据是 JSONL 文件每行一条inputoutput。NER 数据只需要一个entities字典实体类型 → 文本中的实体提及列表。{input: John works at Google in California., output: {entities: {person: [John], company: [Google], location: [California]}}} {input: Apple released iPhone 15., output: {entities: {company: [Apple], product: [iPhone 15]}}}分类任务则用classifications字段格式参考 tutorial/8-train_data.md 中的完整示例。新手提示实体文本必须精确出现在input原文中区分大小写否则校验会报错建议同时标注 10%~20% 的验证集数据用于监控训练效果数据不足 500 条时建议启用 LoRA见下文进阶章节第二步10 行代码启动 GLiNER2 微调下面是最小的完整训练流程——加载预训练模型、配置超参数、开始训练from gliner2 import AutoExtractor from gliner2.training.trainer import ExtractorTrainer, TrainingConfig # 1. 加载预训练基座模型span 架构 model AutoExtractor.from_pretrained(fastino/gliner2-base-v1) # 2. 配置训练参数 config TrainingConfig( output_dir./ner_model, num_epochs10, batch_size8, encoder_lr1e-5, task_lr5e-4 ) # 3. 开始训练直接传入 JSONL 文件 trainer ExtractorTrainer(model, config) trainer.train(train_datatrain.jsonl)训练器会在验证时自动保存检查点最优模型保存在./ner_model/best目录save_bestTrue时。完整参数说明见 tutorial/9-training.md。第三步加载训练好的模型并测试训练完成后用两行代码加载并使用你的 NER 模型from gliner2 import AutoExtractor model AutoExtractor.from_pretrained(./ner_model/best) result model.extract_entities( Tim Cook is the CEO of Apple in Cupertino., [person, company, location] ) # {entities: {person: [Tim Cook], company: [Apple], location: [Cupertino]}}分类微调怎么做分类任务的训练方式完全相同区别只在数据格式。比如训练一个情感分类模型{input: This laptop has amazing performance!, output: {classifications: [{task: sentiment, labels: [positive, negative, neutral], true_label: positive}]}}推理时改用classify_text方法result model.classify_text(Battery life is terrible., {sentiment: [positive, negative, neutral]}) # {sentiment: negative}甚至可以在一次训练中混合 NER 分类 关系抽取多任务训练让一个模型同时学会所有技能详见 tutorial/1-classification.md。进阶LoRA 高效微调与常见问题排查显存不够用 LoRA 只训练 1% 的参数LoRA低秩适配冻结基座模型只训练少量适配参数显存占用降低 10~100 倍且训练出的适配器文件仅 2~10 MBconfig TrainingConfig( output_dir./lora_output, num_epochs10, use_loraTrue, # 开启 LoRA lora_r16, # 秩常见 8/16/32 lora_alpha32, # 缩放因子通常取 2*r task_lr5e-4 )更实用的玩法是一个基座模型 多个领域适配器法律、医疗、金融各一个毫秒级热切换详见 tutorial/10-lora_adapters.md。常见问题快速排查症状解决方案显存溢出 (OOM)减小batch_size、开启fp16True、加gradient_accumulation_steps或改用 LoRA模型不收敛检查学习率encoder 1e-5 / task 5e-4 起步增加num_epochs确认数据已校验校验报错最常见是实体文本与原文不匹配用dataset.validate()定位具体行训练速度慢增大batch_size、启用fp16、降低评估频率eval_steps总结与延伸阅读到这里你已经掌握了 GLiNER2 模型训练的完整闭环准备 JSONL 数据 → 10 行代码微调 → 加载测试 → LoRA 优化。几个建议帮你走得更远先用max_train_samples100跑通全流程再上全量数据生产训练务必开启eval_strategystepssave_bestTrue 早停领域适配如医疗 NER建议降低encoder_lr到5e-6防止过拟合更多训练技巧可参考项目内置文档训练完整指南tutorial/9-training.md数据格式详解tutorial/8-train_data.mdLoRA 适配器实战tutorial/10-lora_adapters.md训练器源码gliner2/training/trainer.py【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表