SetFit 项目介绍
项目概述
SetFit是一个高效且无需提示词的框架,用于对句子转换器(Sentence Transformers)进行少样本微调。在客户评论情感数据集上,SetFit通过仅仅使用每类8个标记样本,就能达到与在3000个样本完整训练集上微调RoBERTa Large相媲美的高准确率。
SetFit的独特特征
SetFit相较于其他少样本学习方法有以下几个独特之处:
-
无需提示或言词:当前少样本微调技术需要人工设计提示或言词将样本转换为适合底层语言模型的格式,而SetFit通过直接从文本样本生成丰富的嵌入来完全取消提示程序。
-
训练速度快:SetFit不需要像T0或GPT-3这样的大规模模型就能实现高准确率,这使得它的训练和推理速度比其它方法快了一个数量级以上。
-
多语言支持:SetFit可与任何Hugging Face Hub上的句子转换器一起使用,这意味着通过微调一个多语言检查点,可以对多种语言的文本进行分类。
安装和使用
用户可以通过以下命令安装SetFit:
pip install setfit
如果用户想要获取最新版本,可以通过以下命令从源代码安装:
pip install git+https://github.com/huggingface/setfit.git
如何训练SetFit模型
SetFit与Hugging Face Hub集成,提供以下两个主要类:
-
SetFitModel:一种包装器,结合了
sentence_transformers
中预训练的主体和来自scikit-learn
或 SetFitHead 的分类头部。 -
Trainer:一个帮助类,用于封装SetFit的微调过程。
以下是一个简单的端到端训练示例:
- 从Hugging Face Hub加载一个数据集。
- 模拟少样本设置,每类选取8个样本。
- 从Hub加载SetFit模型。
- 设置训练参数。
- 使用Trainer进行训练和评估。
- 将训练好的模型推送到Hub,并进行预测。
项目结构
SetFit项目结构清晰,主要包括以下几个部分:
- notebooks:Jupyter笔记本。
- scripts:用于训练和推理的脚本。
- docs:文档源文件。
- src:SetFit的源代码。
- tests:单元测试。
相关工作
SetFit还存在一些相关的实现和API版本,例如:
- 基于scikit-learn API版本的SetFit。
- PyTorch Lightning实现的SetFit。
- 可与spaCy结合使用的SetFit实现。
通过方便的安装、快速的使用方法以及强大的多语言支持性,SetFit为少样本学习提供了一个高效且实用的解决方案。