simpletransformers

GitHub
4.2k 719 中等 2 次阅读 昨天Apache-2.0语言模型
AI 解读 由 AI 自动生成,仅供参考

Simple Transformers 是一个基于 HuggingFace Transformers 库构建的开源工具,专为简化 Transformer 模型的训练与应用而设计。它通过高度封装的接口,让开发者和研究人员仅需三行代码即可完成模型初始化、训练和评估流程,显著降低了使用前沿 NLP 技术的门槛。

这个工具主要解决传统 Transformer 模型实现复杂度高的问题。无论是信息检索、文本分类、命名实体识别,还是问答系统、语言生成等任务,用户无需深入理解模型底层结构,即可快速搭建定制化解决方案。其内置对 T5、BERT 等主流架构的支持,同时涵盖多模态分类和对话系统等前沿场景。

适合需要快速验证 NLP 模型的开发者、学术研究者以及 AI 初学者使用。对于希望将注意力集中在数据处理和业务逻辑而非代码实现的用户而言,其预设的训练流程和自动优化功能尤为实用。配合 Weights & Biases 集成,还能实现训练过程的可视化追踪。

技术亮点包括:统一的多任务接口设计、自动化的超参数优化机制、以及对 GPU/TPU 的即插即用支持。通过封装复杂的模型配置,同时保留关键参数的可调节性,既保证了易用性又不失灵活性。2024 年发表于 SIGIR-AP 的论文也印证了其学术价值。

使用场景

某电商平台需要快速构建一个高精度的评论情感分析系统,以实时识别用户评论中的负面情绪并触发客服干预。开发团队尝试使用传统方法构建模型,但面临效率瓶颈。

没有 simpletransformers 时

  • 数据预处理需要手动编写文本清洗、分词和标签映射代码,5000行评论处理耗时3小时
  • 使用PyTorch从头实现BERT分类模型需编写150+行代码,包含复杂的数据加载器和训练循环
  • 模型训练时需手动调整学习率、batch size等参数,单次训练耗时8小时且准确率仅72%
  • 评估阶段需单独实现混淆矩阵和F1值计算,不同实验结果难以统一比较
  • 部署时需要额外开发模型序列化和API封装代码,增加2周开发周期

使用 simpletransformers 后

  • 内置TextClassificationModel自动处理文本清洗和tokenization,5000条评论预处理缩短至15分钟
  • 3行代码完成模型初始化和训练:
model = TextClassificationModel("bert", "bert-base-uncased")
model.train_model(train_df)
result, model_output = model.eval_model(eval_df)
  • 预训练模型+自动超参数优化使训练时间降至2小时,准确率提升至89%
  • 内置支持F1、AUC等10+评估指标,实验结果自动记录到WandB可视化面板
  • 提供predict()方法直接输出概率分布,模型导出为ONNX格式后可直接部署到生产环境

simpletransformers 通过标准化接口和开箱即用的预训练模型,将NLP模型开发周期从数周缩短至数天,使团队能聚焦业务逻辑而非底层实现细节。

运行环境要求

操作系统
  • 未说明
GPU

需要 NVIDIA GPU,显存 8GB+,CUDA 11.0+

内存

未说明

依赖
notes建议使用 conda 管理环境,首次运行需下载预训练模型文件
python3.8+
torch>=1.6
transformers
pandas
tqdm
wandb
simpletransformers hero image

快速开始

License Downloads

All Contributors

简易变形金刚(Simple Transformers)

本库基于 HuggingFace 的 Transformers 库构建。Simple Transformers 可让您快速训练和评估 Transformer 模型。仅需 3 行代码即可完成模型的初始化训练评估

支持的任务:

  • 信息检索(密集检索)
  • (大)语言模型(训练、微调和生成)
  • 编码器模型训练与微调
  • 序列分类
  • 标记分类(NER)
  • 问答系统
  • 语言生成
  • T5 模型
  • 序列到序列任务
  • 多模态分类
  • 对话式人工智能

引用文献

如果您在工作中使用了 Simple Transformers,请引用以下文献:

@inproceedings{Rajapakse2024SimpleTransformers,
  author    = {Rajapakse, Thilina C. and Yates, Andrew and de Rijke, Maarten},
  title     = {Simple Transformers: Open-source for All},
  booktitle = {Proceedings of the 2024 Annual International ACM SIGIR
               Conference on Research and Development in Information
               Retrieval in the Asia Pacific Region},
  series    = {SIGIR-AP 2024},
  pages     = {209--215},
  year      = {2024},
  doi       = {10.1145/3673791.3698412},
  url       = {https://doi.org/10.1145/3673791.3698412},
  location  = {Tokyo, Japan}
}

目录

安装

通过 Conda 安装

  1. 这里安装 AnacondaMiniconda 包管理器
  2. 创建新的虚拟环境并安装依赖包
$ conda create -n st python pandas tqdm
$ conda activate st

使用 CUDA:

$ conda install pytorch>=1.6 cudatoolkit=11.0 -c pytorch

不使用 CUDA:

$ conda install pytorch cpuonly -c pytorch
  1. 安装 simpletransformers
$ pip install simpletransformers

可选步骤

  1. 安装 WeightsBiases(wandb)以通过浏览器跟踪和可视化训练过程
$ pip install wandb

使用方法

所有文档现已在 simpletransformers.ai 上线

Simple Transformer 模型针对特定自然语言处理(NLP)任务构建。每个模型都配备了专为执行特定任务而设计的功能和特性。使用 Simple Transformers 模型的高级流程遵循相同模式:

  1. 初始化任务专用模型
  2. 使用 train_model() 训练模型
  3. 使用 eval_model() 评估模型
  4. 使用 predict() 对(未标注)数据进行预测

不过,不同模型之间存在必要差异以确保其适合预期任务。主要差异通常体现在输入/输出数据格式和特定任务的功能/配置选项上。这些内容在每个任务的文档部分均有详细说明。

当前实现的任务专用 Simple Transformer 模型及其对应任务如下:

任务 模型
二分类和多分类文本分类 ClassificationModel
对话式人工智能(聊天机器人训练) ConvAIModel
语言生成 LanguageGenerationModel
语言模型训练/微调 LanguageModelingModel
多标签文本分类 MultiLabelClassificationModel
多模态分类(文本和图像数据结合) MultiModalClassificationModel
命名实体识别 NERModel
问答系统 QuestionAnsweringModel
回归任务 ClassificationModel
文本对分类 ClassificationModel
文本表示生成 RepresentationModel
文档检索 RetrievalModel
  • 请参考文档中的相关章节了解如何使用这些模型
  • 示例脚本可在 examples 目录中找到
  • 项目最新变更请查看 Changelog

一个快速示例

from simpletransformers.classification import ClassificationModel, ClassificationArgs
import pandas as pd
import logging


logging.basicConfig(level=logging.INFO)
transformers_logger = logging.getLogger("transformers")
transformers_logger.setLevel(logging.WARNING)

# 准备训练数据
train_data = [
    ["Aragorn was the heir of Isildur", 1],
    ["Frodo was the heir of Isildur", 0],
]
train_df = pd.DataFrame(train_data)
train_df.columns = ["text", "labels"]

# 准备评估数据
eval_data = [
    ["Theoden was the king of Rohan", 1],
    ["Merry was the king of Rohan", 0],
]
eval_df = pd.DataFrame(eval_data)
eval_df.columns = ["text", "labels"]

# 可选模型配置
model_args = ClassificationArgs(num_train_epochs=1)

# 创建分类模型
model = ClassificationModel(
    "roberta", "roberta-base", args=model_args
)

# 训练模型
model.train_model(train_df)

# 评估模型
result, model_outputs, wrong_predictions = model.eval_model(eval_df)

# 使用模型进行预测
predictions, raw_outputs = model.predict(["Sam was a Wizard"])

使用 Weights and Biases(权重与偏差,简称 W&B)进行实验追踪

  • Weights and Biases 使得追踪所有实验变得非常简单。点击此处查看 Colab 示例:Open In Colab

当前预训练模型

有关预训练模型列表,请参见 Hugging Face 官方文档

每个任务可用的 model_types(模型类型) 可在各自的任务章节下找到。Hugging Face 文档中列出的任何该类型预训练模型都应可用。要使用这些模型,只需在 args(参数) 字典中设置正确的 model_typemodel_name


贡献者 ✨

感谢以下这些出色的贡献者(表情符号说明):


hawktang

💻

Mabu Manaileng

💻

Ali Hamdi Ali Fadel

💻

Tovly Deutsch

💻

hlo-world

💻

huntertl

💻

Yann Defretin

💻 💬 🤔

Manuel

📖 💻

Gilles Jacobs

📖

shasha79

💻

Mercedes Garcia

💻

Hammad Hassan Tarar

💻 📖

Todd Cook

💻

Knut O. Hellan

💻 📖

nagenshukla

💻

flaviussn

💻 📖

Marc Torrellas

🚧

Adrien Renaud

💻

jacky18008

💻

Matteo Senese

💻

sarthakTUM

📖 💻

djstrong

💻

Hyeongchan Kim

📖

Pradhy729

💻 🚧

Iknoor Singh

📖

Gabriel Altay

💻

flozi00

📖 💻 🚧

alexysdussier

💻

Jean-Louis Queguiner

📖

aced125

💻

Laksh1997

💻

Changlin_NLP

💻

jpotoniec

💻

fcggamou

💻 📖

guy-mor

🐛 💻

Cahya Wirawan

💻

BjarkePedersen

💻

tekkkon

💻

Amit Garg

💻

caprone

🐛

Ather Fawaz

💻

Santiago Castro

📖

taranais

💻

Pablo N. Marino

💻 📖

Anton Kiselev

💻 📖

Alex

💻

Karthik Ganesan

💻

Zhylko Dima

💻

Jonatan Kłosko

💻

sarapapi

💻 💬

Abdul

💻

James Milliman

📖

Suraj Parmar

📖

KwanHong Lee

💬

Erik Fäßler

💻

Thomas Søvik

💬

Gagandeep Singh

💻 📖

Andrea Esuli

💻

DM2493

💻

Nick Doiron

💻

Abhinav Gupta

💻

Martin H. Normark

📖

Mossad Helali

💻

calebchiam

all-contributors 贡献者规范,欢迎任何形式的贡献!

如果您应该出现在贡献者列表中但未出现,或您希望从列表中移除,请随时联系我!


如何贡献

如何更新文档

最新版本的文档托管在 Github Pages 上,如果您希望帮助完善 Simple Transformers 的文档,请按照以下步骤操作: 文档使用 Jekyll(静态网站生成器) 构建,详细工作原理请参考其官方文档。

  1. 安装 Jekyll(静态网站生成器): 运行命令 gem install bundler jekyll
  2. 在本地计算机预览文档: 在终端中进入本仓库的 docs 目录,例如:cd simpletransformers/docs 在 docs 目录下运行以下命令本地启动 Jekyll 服务:bundle exec jekyll serve 浏览器访问 http://localhost:4000 或控制台显示的任意 URL 即可预览文档。
  3. 编辑并预览更改: 所有文档章节页面位于 docs/_docs 目录下,您可以按照 Markdown 格式编辑任意文件,刷新浏览器标签页即可查看更改效果。

致谢

没有 HuggingFace 团队开发的 Transformers(自然语言处理库) 库,这一切都不可能实现。

<div>社交媒体预览图标由 <a href="https://www.flaticon.com/authors/freepik" title="Freepik">Freepik</a><a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com` 制作`

版本历史

v0.60.02021/02/01
v0.51.02020/12/05
v0.49.02020/11/09
v0.48.62020/09/26
v0.48.52020/09/24
v0.48.02020/09/06
v0.47.02020/08/09
v0.45.22020/07/24
v0.45.02020/07/18
v0.44.02020/07/18
v0.43.62020/07/18
v0.43.02020/07/05
v0.42.02020/07/05
v0.40.22020/06/25
v0.40.02020/06/23
v0.32.32020/06/04
v0.32.02020/05/31
v0.31.02020/05/30
v0.30.02020/05/26
0.29.02020/05/24

常见问题

相似工具推荐

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语言模型

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图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

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