? Modelos | Conjuntos de datos | Documentación | Blog | ? Papel
SetFit es un marco eficiente y gratuito para el ajuste de pocos disparos de los transformadores de oraciones. Logra una alta precisión con pequeños datos etiquetados, por ejemplo, con solo 8 ejemplos etiquetados por clase en el conjunto de datos de sentimientos de los clientes, SetFit es competitivo con el ajuste de Roberta grande en el conjunto de capacitación completo de ejemplos de 3k?
En comparación con otros métodos de aprendizaje de pocos disparos, SetFit tiene varias características únicas:
¡Vea la documentación de SetFit para obtener más información!
Descargar e instalar setfit ejecutando:
pip install setfitSi desea la versión de borde de sangrado, instale desde la fuente ejecutando:
pip install git+https://github.com/huggingface/setfit.gitQuickStart es un buen lugar para aprender sobre el entrenamiento, el ahorro, la carga y la realización de la inferencia con los modelos SetFit.
Para obtener más ejemplos, consulte el directorio notebooks , los tutoriales o las guías de instrucciones.
setfit está integrado con el abrazo de la cara abrazada y proporciona dos clases principales:
SetFitModel : un envoltorio que combina un cuerpo previamente provocado de sentence_transformers y un cabezal de clasificación de scikit-learn o SetFitHead (una cabeza diferenciable construida sobre PyTorch con API similares a sentence_transformers ).Trainer : una clase de ayuda que envuelve el proceso de ajuste de SetFit. Aquí hay un ejemplo de entrenamiento de extremo a extremo simple utilizando el cabezal de clasificación predeterminado de scikit-learn :
from datasets import load_dataset
from setfit import SetFitModel , Trainer , TrainingArguments , sample_dataset
# Load a dataset from the Hugging Face Hub
dataset = load_dataset ( "sst2" )
# Simulate the few-shot regime by sampling 8 examples per class
train_dataset = sample_dataset ( dataset [ "train" ], label_column = "label" , num_samples = 8 )
eval_dataset = dataset [ "validation" ]. select ( range ( 100 ))
test_dataset = dataset [ "validation" ]. select ( range ( 100 , len ( dataset [ "validation" ])))
# Load a SetFit model from Hub
model = SetFitModel . from_pretrained (
"sentence-transformers/paraphrase-mpnet-base-v2" ,
labels = [ "negative" , "positive" ],
)
args = TrainingArguments (
batch_size = 16 ,
num_epochs = 4 ,
eval_strategy = "epoch" ,
save_strategy = "epoch" ,
load_best_model_at_end = True ,
)
trainer = Trainer (
model = model ,
args = args ,
train_dataset = train_dataset ,
eval_dataset = eval_dataset ,
metric = "accuracy" ,
column_mapping = { "sentence" : "text" , "label" : "label" } # Map dataset columns to text/label expected by trainer
)
# Train and evaluate
trainer . train ()
metrics = trainer . evaluate ( test_dataset )
print ( metrics )
# {'accuracy': 0.8691709844559585}
# Push model to the Hub
trainer . push_to_hub ( "tomaarsen/setfit-paraphrase-mpnet-base-v2-sst2" )
# Download from Hub
model = SetFitModel . from_pretrained ( "tomaarsen/setfit-paraphrase-mpnet-base-v2-sst2" )
# Run inference
preds = model . predict ([ "i loved the spiderman movie!" , "pineapple on pizza is the worst ?" ])
print ( preds )
# ["positive", "negative"] Proporcionamos scripts para reproducir los resultados para SetFit y varias líneas de base presentadas en la Tabla 2 de nuestro artículo. Consulte las instrucciones de configuración y capacitación en los scripts/ directorio.
Para ejecutar el código en este proyecto, primero cree un entorno virtual de Python utilizando EG Conda:
conda create -n setfit python=3.9 && conda activate setfitLuego instale los requisitos base con:
pip install -e ' .[dev] ' Esto instalará paquetes obligatorios para setFit como datasets , así como paquetes de desarrollo como black e isort que utilizamos para garantizar un formato de código constante.
Usamos black e isort para garantizar un formato de código constante. Después de seguir los pasos de instalación, puede verificar su código localmente ejecutando:
make style && make quality
├── LICENSE
├── Makefile <- Makefile with commands like `make style` or `make tests`
├── README.md <- The top-level README for developers using this project.
├── docs <- Documentation source
├── notebooks <- Jupyter notebooks.
├── final_results <- Model predictions from the paper
├── scripts <- Scripts for training and inference
├── setup.cfg <- Configuration file to define package metadata
├── setup.py <- Make this project pip installable with `pip install -e`
├── src <- Source code for SetFit
└── tests <- Unit tests
@misc { https://doi.org/10.48550/arxiv.2209.11055 ,
doi = { 10.48550/ARXIV.2209.11055 } ,
url = { https://arxiv.org/abs/2209.11055 } ,
author = { Tunstall, Lewis and Reimers, Nils and Jo, Unso Eun Seo and Bates, Luke and Korat, Daniel and Wasserblat, Moshe and Pereg, Oren } ,
keywords = { Computation and Language (cs.CL), FOS: Computer and information sciences, FOS: Computer and information sciences } ,
title = { Efficient Few-Shot Learning Without Prompts } ,
publisher = { arXiv } ,
year = { 2022 } ,
copyright = { Creative Commons Attribution 4.0 International }
}