? Model | Dataset | Dokumentasi | Blog | ? Kertas
SetFit adalah kerangka kerja yang efisien dan bebas cepat untuk beberapa penyempurnaan transformator kalimat. Ini mencapai akurasi tinggi dengan sedikit data berlabel - misalnya, dengan hanya 8 contoh berlabel per kelas pada dataset sentimen ulasan pelanggan, SetFit kompetitif dengan fine -tuning Roberta Large pada set pelatihan lengkap contoh 3K?!
Dibandingkan dengan metode pembelajaran beberapa tembakan lainnya, SetFit memiliki beberapa fitur unik:
Lihat dokumentasi SetFit untuk informasi lebih lanjut!
Unduh dan instal setfit dengan menjalankan:
pip install setfitJika Anda ingin versi pendarahan-tepi sebagai gantinya, instal dari sumber dengan menjalankan:
pip install git+https://github.com/huggingface/setfit.gitQuickStart adalah tempat yang baik untuk belajar tentang pelatihan, menabung, memuat, dan melakukan inferensi dengan model setFit.
Untuk contoh lebih lanjut, lihat direktori notebooks , tutorial, atau panduan cara.
setfit terintegrasi dengan hub wajah pelukan dan menyediakan dua kelas utama:
SetFitModel : Pembungkus yang menggabungkan tubuh pretrain dari sentence_transformers dan kepala klasifikasi baik dari scikit-learn atau SetFitHead (kepala yang dapat dibedakan dibangun di atas PyTorch dengan API yang sama dengan sentence_transformers ).Trainer : Kelas pembantu yang membungkus proses penyetelan setFit. Berikut adalah contoh pelatihan ujung ke ujung sederhana menggunakan kepala klasifikasi default dari 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"] Kami menyediakan skrip untuk mereproduksi hasil untuk SetFit dan berbagai garis dasar yang disajikan pada Tabel 2 dari makalah kami. Lihat instruksi pengaturan dan pelatihan di scripts/ direktori.
Untuk menjalankan kode dalam proyek ini, pertama -tama buat lingkungan virtual Python menggunakan EG Conda:
conda create -n setfit python=3.9 && conda activate setfitKemudian pasang persyaratan dasar dengan:
pip install -e ' .[dev] ' Ini akan menginstal paket wajib untuk setFit seperti datasets serta paket pengembangan seperti black dan isort yang kami gunakan untuk memastikan pemformatan kode yang konsisten.
Kami menggunakan black dan isort untuk memastikan pemformatan kode yang konsisten. Setelah mengikuti langkah -langkah instalasi, Anda dapat memeriksa kode Anda secara lokal dengan menjalankan:
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 }
}