? Modèles | Ensembles de données | Documentation | Blog | ? Papier
SetFit est un cadre efficace et sans rapide pour le réglage fin à quelques transformateurs de phrases. Il obtient une grande précision avec de petites données étiquetées - par exemple, avec seulement 8 exemples étiquetés par classe sur l'ensemble de données de sentiment de consultation du client, SetFit est compétitif avec Roberta fin sur l'ensemble de formation complet de 3K Exemples ?!
Par rapport aux autres méthodes d'apprentissage à quelques coups, SetFit a plusieurs fonctionnalités uniques:
Consultez la documentation SetFit pour plus d'informations!
Télécharger et installer setfit en fonctionnant:
pip install setfitSi vous souhaitez plutôt la version saigneuse, installez-vous à partir de la source en exécutant:
pip install git+https://github.com/huggingface/setfit.gitLe QuickStart est un bon endroit pour découvrir la formation, l'économie, le chargement et l'exécution de l'inférence avec les modèles SetFit.
Pour plus d'exemples, consultez le répertoire notebooks , les tutoriels ou les guides pratiques.
setfit est intégré au centre de visage étreint et fournit deux classes principales:
SetFitModel : un emballage qui combine un corps pré-entraîné de sentence_transformers et une tête de classification de scikit-learn ou SetFitHead (une tête différenciable construite sur PyTorch avec des API similaires à sentence_transformers ).Trainer : une classe d'assistance qui enroule le processus de réglage fin de Setfit. Voici un exemple de formation de bout en bout simple en utilisant la tête de classification par défaut 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"] Nous fournissons des scripts pour reproduire les résultats pour setFit et diverses lignes de base présentées dans le tableau 2 de notre article. Consultez les instructions de configuration et de formation dans les scripts/ répertoire.
Pour exécuter le code dans ce projet, créez d'abord un environnement virtuel Python à l'aide de Conda:
conda create -n setfit python=3.9 && conda activate setfitInstallez ensuite les exigences de base avec:
pip install -e ' .[dev] ' Cela installera des packages obligatoires pour SetFit comme datasets ainsi que des packages de développement comme black et isort que nous utilisons pour assurer la mise en forme cohérente du code.
Nous utilisons black et isort pour assurer le formatage cohérent du code. Après avoir suivi les étapes d'installation, vous pouvez vérifier votre code localement en exécutant:
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 }
}