bert_seq2seq

GitHub
1.3k 209 简单 1 次阅读 2天前Apache-2.0开发框架视频语言模型图像音频
AI 解读 由 AI 自动生成,仅供参考

bert_seq2seq 是一个基于 PyTorch 构建的轻量级 NLP 开发框架,旨在简化使用 BERT 及其变体模型解决各类自然语言处理任务的流程。它核心解决了开发者在适配不同预训练模型(如 BERT、RoBERTa、T5、GPT-2、NeZha 等)到具体应用场景时,需要重复编写底层代码的痛点。

该工具支持广泛的下游任务,涵盖序列生成(如自动摘要、写诗、对联)、文本分类、情感分析、命名实体识别(NER)、关系抽取及语义匹配等。其独特的技术亮点在于采用了 UniLM 方案处理 Seq2Seq 任务,并内置了分布式训练功能;用户仅需修改参数即可直接启动多 GPU 训练,无需额外命令或代码改动,极大提升了实验效率。此外,它还支持结合 CRF 损失函数以优化序列标注效果。

bert_seq2seq 非常适合 NLP 领域的研究人员、算法工程师及高校学生使用。无论是希望快速验证新想法的研究者,还是需要高效落地中文文本处理项目的开发者,都能通过其丰富的示例代码和灵活的配置接口,轻松完成从数据加载、模型训练到推理的全流程工作。

使用场景

某医疗科技公司的算法团队正在构建一个智能药品说明书分析系统,需要从海量非结构化文本中快速提取实体信息并生成患者易懂的摘要。

没有 bert_seq2seq 时

  • 开发门槛高:团队需分别搭建 NER(命名实体识别)和文本摘要两套独立框架,重复编写数据加载、模型定义及训练循环代码,耗时数周。
  • 多任务协同难:处理“序列标注”与"Seq2Seq 生成”任务时,无法统一接口,切换模型(如从 BERT 换到 RoBERTa)需大幅重构代码。
  • 资源利用率低:缺乏内置的分布式训练支持,利用多 GPU 加速需手动修改底层逻辑,导致大模型训练效率低下且易出错。
  • 效果调优复杂:针对医学实体识别,难以快速集成 CRF 层优化边界识别,导致“禁忌症”、“用法用量”等关键信息抽取准确率不稳定。

使用 bert_seq2seq 后

  • 一站式开发:通过简单配置 model_class 参数,同一套代码即可无缝切换进行医学 NER 抽取和说明书自动摘要,开发周期缩短至几天。
  • 灵活模型切换:仅需修改 model_name 参数即可在 BERT、RoBERTa 或 Nezha 等预训练模型间自由切换,快速验证不同基座对医疗术语的理解能力。
  • 开箱即用的加速:直接调整参数即可启动多 GPU 分布式训练,无需额外命令或代码改动,显著提升了大规模医疗语料的训练速度。
  • 高精度实体识别:利用内置的 sequence_labeling_crf 任务模式,轻松加入 CRF 损失函数,大幅提升了对药品剂量、频次等复杂实体的标注精度。

bert_seq2seq 通过统一的轻量级架构,将复杂的 NLP 多任务开发简化为参数配置过程,让团队能专注于医疗业务逻辑而非底层工程实现。

运行环境要求

操作系统
  • 未说明
GPU

非必需(支持 CPU),分布式训练版本支持多 GPU,具体型号、显存及 CUDA 版本未说明

内存

未说明

依赖
notes该框架为轻量级工具,安装命令为'pip install bert-seq2seq'。支持多种 NLP 任务(如 seq2seq、分类、序列标注等)及多种模型(BERT, RoBERTa, GPT2, T5, NeZha, BART 等)。预训练模型权重需单独下载(来源包括 Google Drive, 百度网盘, Hugging Face 等)。重构版支持通过修改参数直接进行多 GPU 分布式训练,无需额外代码或命令。
python未说明
torch (pytorch)
tqdm
transformers (参考引用)
bert_seq2seq hero image

快速开始

bert_seq2seq

一个轻量级的小框架,如果喜欢的话欢迎star~ 谢谢谢谢。如果遇到问题也可以提issue,保证会回复。

目前重构了一版分布式训练的版本,改下参数即可直接进行多GPU的训练,而不需要额外的命令,不需要添加额外的代码!欢迎前往https://github.com/920232796/bert_seq2seq_DDP 详细了解

欢迎加入交流群~ 可以提问题,提建议,互相交流 QQ群: 975907202

本框架目前可以做各种NLP任务,支持的模型有:

  1. bert
  2. roberta
  3. roberta-large
  4. gpt2
  5. t5
  6. 华为nezha模型
  7. bart-中文

支持的任务有:

  1. seq2seq 比如写诗,对联,自动标题,自动摘要等。
  2. cls_classifier 通过提取句首的cls向量去做分类,比如情感分析,文本分类,语义匹配等。
  3. sequence_labeling 序列标注任务,比如命名实体识别,词性标注,中文分词等。
  4. sequence_labeling_crf 加入CRF Loss的序列标注任务,效果更好。
  5. relation_extract 关系抽取,比如三元组抽取任务。(复现苏剑林老师的例子,不完全一样。)
  6. simbert SimBert模型,生成相似句子,并且给相似句子进行相似度判断。
  7. multi_label_cls 多标签分类。

加载不同模型通过设置“model_name”参数实现,不同任务通过设置“model_class”参数实现,具体可以去看examples里面的各种例子。

预训练模型下载地址汇总:

  1. roberta模型,模型和字典文件需要去 https://drive.google.com/file/d/1iNeYFhCBJWeUsIlnW_2K6SMwXkM4gLb_/view 这里下载。 具体可以参考这个github仓库~ https://github.com/ymcui/Chinese-BERT-wwm ,roberta-large模型也是在里面进行下载即可。
  2. bert模型(目前不支持large),下载bert中文预训练权重 "bert-base-chinese": "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-pytorch_model.bin", 下载bert中文字典 "bert-base-chinese": "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt".
  3. nezha模型,字典权重位置(目前只支持base):nezha-base模型下载:链接: https://pan.baidu.com/s/1Z0SJbISsKzAgs0lT9hFyZQ 提取码: 4awe
  4. gpt2模型,可以查看test文件中的gpt_test文件进行文本续写测试,gpt2中文通用模型和字典下载地址:https://pan.baidu.com/s/1vTYc8fJUmlQrre5p0JRelw 密码: f5un
  5. gpt2英文模型,具体参考了https://huggingface.co/pranavpsv/gpt2-genre-story-generator 这个预训练的model,具体的训练代码可以看example中的gpt2_english_story_train.py
  6. 支持t5模型,英文中文都支持,直接使用transformers包进行加载,具体可以看examples文件夹中的相关例子。 预训练参数下载:https://github.com/renmada/t5-pegasus-pytorch
  7. SimBert模型,支持相似句的生成,预训练模型使用bert、roberta、nezha均可。
  8. bart中文模型下载地址:https://huggingface.co/fnlp/bart-base-chinese

部分代码参考了 https://github.com/huggingface/transformers/https://github.com/bojone/bert4keras 非常感谢!!!

一些小例子的效果截图

gpt2生成

输入:

今天天气好

输出:

,就 和 宝 贝 们 一 起 去 那 里 看 电 影 了 ,真 的 好 好 哦 !环 境 什 么 的 都 是 没 得 说 的 ,电 影 很 精 致 ,音 效 也 很 不 错 ,不 知 道 这 家 店 还 开 着 没 有 ,希 望 有 空 的 话 可 以 经 常 去 看 看

写诗

image.png

bert+crf ner

输入: image.png 输出: iamge.png

新闻摘要文本分类(14分类)

image.png 输出: image.png

医学ner

输入:

如与其他药物同时使用可能会发生药物相互作用,详情请咨询医师或药师。 开水冲服,一次14克,一日3次。 养血,调经,止痛。用于月经量少、后错,经期腹痛 健民集团叶开泰国药(随州)有限公司 1,忌食生冷食物。2,患有其他疾病者,应在医师指导下服用。3,平素月经正常,突然出现月经过少,或经期错后,应去医院就诊。4,治疗痛经,宜在经前3~5天开始服药,连服一周,如有生育要求应在医师指导下服用。5,服药后痛经不减轻,或重度痛经者,应到医院诊治。6,服药2周症状无缓解,应去医院就诊。7,对本品过敏者禁用,过敏体质者慎用。8,本品性状发生改变时禁止使用。9,请将本品放在儿童不能接触的地方。10,如正在使用其他药品,使用本品前请咨询医师或药师。 本品为妇科月经不调类非处方药药品。 养血,调经,止痛。用于月经量少、后错,经期腹痛。 养血,调经,止痛。用于月经量少、后错,经期腹痛 14g*5袋 非处方药物(乙类),国家医保目录(乙类) 孕妇禁用。糖尿病者禁服。

输出:

image.png

对联

image.png

语义匹配

image.png

分词

image.png

安装

  1. 安装本框架 pip install bert-seq2seq
  2. 安装pytorch
  3. 安装tqdm 可以用来显示进度条 pip install tqdm
  4. 准备好自己的数据,只需要修改example代码中的read_data函数,构造好输入输出,便可开始训练。
  5. 去example文件夹下面运行对应的*_train.py文件,针对不同任务,运行不同train.py文件,需要修改输入输出数据的结构,然后进行训练。具体可以看examples里面的各种例子~

一些函数解释

def load_bert(word2ix, model_name="roberta", model_class="seq2seq")

加载bert模型,model_name参数指定了用哪种bert,目前支持bert、roberta、nezha;model_class指定了使用bert做哪种任务,seq2seq表示生成任务,cls表示文本分类任务......

model.load_pretrain_params(pretrain_model_path)

加载bert模型参数,注意,只是加载编码器的参数,也就是从网上下载好的预训练模型的参数;例如seq2seq模型包括了bert模型的参数+全连接层,此函数只是加载第一部分参数。

def model.load_all_params(recent_model_path)

加载全部模型参数,当你训练了部分时间,保存了模型以后,通过此函数便可以加载上次模型训练结果,继续训练或者进行测试。

想看各种文章,可以去我网站~ http://www.blog.zhxing.online/#/ 搜索写诗或者对联或者NER或者新闻摘要文本分类即可找到对应文章。 多谢支持。

更新记录

2021.11.12: 优化代码,支持了roberta-large模型。

2021.10.12: 优化了ner的解码方法,以前粗粒度的解码方式存在bug。

2021.08.18: 优化了大量代码,目前框架代码看起来更加清晰了,删除了大量冗余的代码。

2021.08.17: 支持了华为的nezha模型,很简单,改一下model_name参数即可,欢迎测试效果。

2021.08.15: 添加了分词的例子,tokenizer中添加了rematch代码。

2021.07.29: 优化部分代码,更简洁了。

2021.07.20: 复现了SimBert模型,可以进行相似句的输出,不过由于数据量太少,还有待测试。

2021.03.19: 支持模型扩展,可以不仅仅使用框架自带的模型了,可以直接加载hugging face上面的模型进行训练 预测。

2021.03.12: 添加了gpt2中文训练的例子,周公解梦。

2021.03.11: 添加了gpt2例子,可以进行文章的续写。

2021.03.11: 添加了一个随机生成的解码方式,生成更加多样了。

2021.03.08: beam search 返回n个结果,随机取某个作为输出。

2021.02.25: 添加了一个语义匹配的例子。

2021.02.06: 调整了device的设置方式,现在更加的方便了。

2021.1.27: 调整了框架的代码结构,改动较多,如果有bug,欢迎提issue。

2021.1.21: 添加了一个新的例子,人物关系提取分类。

2020.12.02: 调整了一些代码,并且添加了几个测试的文件,可以很方便的加载已经训练好的模型,进行对应任务的测试。

2020.11.20: 添加了一个例子,三元组抽取f1目前能到0.7。添加了新闻摘要文本分类的测试代码。

2020.11.04: 跑了跑bert-crf做普通ner任务的例子,效果不错。

2020.10.24: 调整了大量代码,添加了THUCNews数据集的自动摘要例子~现在的话,训练应该效果很好了,以前可能出现预训练参数加载不上的情况,效果有时会很差。

2020.10.23: 调整了一些代码结构,把每个例子里面的一些变量写为全局变量了,改了下beam-search的代码,更精简了。不过暂时不支持写诗里面的押韵了。以后补上。

2020.09.29: 新增了天池医学ner比赛的训练例子(医学ner_train.py),详情可见比赛界面:https://tianchi.aliyun.com/competition/entrance/531824/information

2020.08.16: 新增了诗词对联联合训练的例子(诗词对联_train.py),可以同时写诗写词作对联了;另外新增了诗词的测试代码,模型训练好了可以进行测试。

2020.08.08: 本次更新的内容较多,1. 添加了自动摘要的例子(auto_title.py) 2. 添加了精简词表的代码,原本3W个字缩减为1W多(因为某些字永远不会出现) 3. 修改了部分beam-search代码,效果更好了。4. 细粒度ner暂时不能使用了,数据有点问题,因此暂时放入test文件夹,如果找到合适的数据,可以使用 5. 新增test文件夹,训练好的模型可以在里面进行测试,看看效果。

2020.06.22: 补充了Conditional Layer Norm 的一篇文章。解释了部分代码。http://www.blog.zhxing.online/#/readBlog?blogId=347

2020.06.21: 更新了很多代码,复现了一个三元组抽取的例子(三元组抽取_train.py)~

2020.06.02: 最近一直在忙毕业的事情,还有个比赛,暂时不更新了,以后会一直更新哒。

2020.04.18: 训练了bert+crf模型,crf层学习率好像不够高,还需要改善(现在已经可以单独设置crf层学习率了,一般设为0.01)。

2020.04.13: 添加了NER任务 + CRF层Loss,跑通了训练例子,但是还没有添加维特比算法。

2020.04.11: 计划给NER任务添加一个CRF层。

2020.04.07: 添加了一个ner的example。

2020.04.07: 更新了pypi,并且加入了ner等序列标注任务的模型。

2020.04.04: 更新了pypi上面的代码,目前最新版本 0.0.6,请用最新版本,bug会比较少。

2020.04.02: 修改了beam-search中对于写诗的重复字和押韵惩罚程度,可能效果会更好。

2020.04.02: 添加了周公解梦的task

2020.04.02: 添加了对对联的task

2020.04.01: 添加了写诗的task

2020.04.01: 重构了代码,开始训练一个新的任务花费时间更少。

python setup.py sdist twine upload dist/bert_seq2seq-2.3.5.tar.gz

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架