- โมเดล | ชุดข้อมูล เอกสาร บล็อก | - กระดาษ
SetFit เป็นเฟรมเวิร์กที่มีประสิทธิภาพและรวดเร็วสำหรับการปรับแต่งการปรับแต่งของหม้อแปลงประโยคสองสามครั้ง มันบรรลุความแม่นยำสูงด้วยข้อมูลที่มีป้ายกำกับเล็ก ๆ น้อย ๆ - ตัวอย่างเช่นมีเพียง 8 ตัวอย่างที่มีป้ายกำกับต่อชั้นเรียนในชุดข้อมูลความคิดเห็นของลูกค้า SetFit สามารถแข่งขันกับ Roberta ขนาดใหญ่ได้อย่างละเอียดในชุดการฝึกอบรมเต็มรูปแบบของตัวอย่าง 3K?!
เมื่อเทียบกับวิธีการเรียนรู้แบบไม่กี่ครั้ง SetFit มีคุณสมบัติที่ไม่ซ้ำกันหลายประการ:
ตรวจสอบเอกสาร SetFit สำหรับข้อมูลเพิ่มเติม!
ดาวน์โหลดและติดตั้ง setfit โดย Running:
pip install setfitหากคุณต้องการเวอร์ชันที่มีเลือดออกแทนให้ติดตั้งจากแหล่งที่มาโดยเรียกใช้:
pip install git+https://github.com/huggingface/setfit.gitQuickStart เป็นสถานที่ที่ดีในการเรียนรู้เกี่ยวกับการฝึกอบรมการประหยัดการโหลดและการอนุมานกับโมเดล SetFit
สำหรับตัวอย่างเพิ่มเติมลองดูไดเรกทอรี notebooks บทเรียนหรือคำแนะนำวิธีการ
setfit ถูกรวมเข้ากับฮับใบหน้ากอดและมีสองคลาสหลัก:
SetFitModel : wrapper ที่รวมร่างกายที่ sentence_transformers PyTorch ฝึกฝนมาจาก sentence_transformers และหัวการจำแนกจาก scikit-learn หรือ SetFitHeadTrainer : คลาสผู้ช่วยที่ปิดกระบวนการปรับแต่งของ SetFit นี่คือตัวอย่างการฝึกอบรมแบบ end-to-end อย่างง่ายโดยใช้หัวการจำแนกประเภทเริ่มต้นจาก 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"] เราให้บริการสคริปต์เพื่อทำซ้ำผลลัพธ์สำหรับ setFit และเส้นเขตแดนต่างๆที่นำเสนอในตารางที่ 2 ของกระดาษของเรา ตรวจสอบคำแนะนำการตั้งค่าและการฝึกอบรมใน scripts/ ไดเรกทอรี
ในการเรียกใช้รหัสในโครงการนี้ก่อนอื่นให้สร้างสภาพแวดล้อมเสมือนจริงของ Python โดยใช้ EG Conda:
conda create -n setfit python=3.9 && conda activate setfitจากนั้นติดตั้งข้อกำหนดพื้นฐานด้วย:
pip install -e ' .[dev] ' สิ่งนี้จะติดตั้งแพ็คเกจบังคับสำหรับ SetFit เช่น datasets รวมถึงแพ็คเกจการพัฒนาเช่น black และ isort ที่เราใช้เพื่อให้แน่ใจว่าการจัดรูปแบบรหัสที่สอดคล้องกัน
เราใช้ black และ isort เพื่อให้แน่ใจว่าการจัดรูปแบบรหัสที่สอดคล้องกัน หลังจากทำตามขั้นตอนการติดตั้งคุณสามารถตรวจสอบรหัสของคุณในเครื่องโดยเรียกใช้:
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 }
}