simpletransformers
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模型开发周期从数周缩短至数天,使团队能聚焦业务逻辑而非底层实现细节。
运行环境要求
- 未说明
需要 NVIDIA GPU,显存 8GB+,CUDA 11.0+
未说明

快速开始
简易变形金刚(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 安装
- 从这里安装
Anaconda或Miniconda包管理器 - 创建新的虚拟环境并安装依赖包
$ 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
- 安装
simpletransformers
$ pip install simpletransformers
可选步骤
- 安装
Weights和Biases(wandb)以通过浏览器跟踪和可视化训练过程
$ pip install wandb
使用方法
所有文档现已在 simpletransformers.ai 上线
Simple Transformer 模型针对特定自然语言处理(NLP)任务构建。每个模型都配备了专为执行特定任务而设计的功能和特性。使用 Simple Transformers 模型的高级流程遵循相同模式:
- 初始化任务专用模型
- 使用
train_model()训练模型 - 使用
eval_model()评估模型 - 使用
predict()对(未标注)数据进行预测
不过,不同模型之间存在必要差异以确保其适合预期任务。主要差异通常体现在输入/输出数据格式和特定任务的功能/配置选项上。这些内容在每个任务的文档部分均有详细说明。
当前实现的任务专用 Simple Transformer 模型及其对应任务如下:
| 任务 | 模型 |
|---|---|
| 二分类和多分类文本分类 | ClassificationModel |
| 对话式人工智能(聊天机器人训练) | ConvAIModel |
| 语言生成 | LanguageGenerationModel |
| 语言模型训练/微调 | LanguageModelingModel |
| 多标签文本分类 | MultiLabelClassificationModel |
| 多模态分类(文本和图像数据结合) | MultiModalClassificationModel |
| 命名实体识别 | NERModel |
| 问答系统 | QuestionAnsweringModel |
| 回归任务 | ClassificationModel |
| 文本对分类 | ClassificationModel |
| 文本表示生成 | RepresentationModel |
| 文档检索 | RetrievalModel |
一个快速示例
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)进行实验追踪
当前预训练模型
有关预训练模型列表,请参见 Hugging Face 官方文档。
每个任务可用的 model_types(模型类型) 可在各自的任务章节下找到。Hugging Face 文档中列出的任何该类型预训练模型都应可用。要使用这些模型,只需在 args(参数) 字典中设置正确的 model_type 和 model_name。
贡献者 ✨
感谢以下这些出色的贡献者(表情符号说明):
































































