SetFit: 프롬프트 없이 효율적인 Few-Shot 학습
Hugging Face, Intel Labs 및 UKP Lab와 협업하여 Sentence Transformers의 효율적인 Few-Shot 파인튜닝을 위한 프레임워크인 SetFit를 출시했습니다. SetFit는 개발자가 매우 적은 라벨링된 예시—클래스당 때로는 8개만—로도 높은 분류 정확도를 달성하게 해 주며, 일반적인 Few-Shot 학습에 수반되는 수작업 프롬프트나 버베리사이저가 필요하지 않습니다.
대조 학습 아키텍처
SetFit는 제한된 데이터에서 고품질 임베딩을 생성하기 위해 두 단계의 학습 과정을 사용합니다:
- Contrastive Fine-Tuning: 프레임워크는 먼저 소량의 라벨링된 예시를 사용해 Sentence Transformer 모델을 파인튜닝합니다. 클래스 내부와 외부 선택을 통해 양성 및 음성 쌍(또는 삼중항)을 생성하여 모델이 클래스별로 군집화되는 밀집 벡터를 생성하도록 학습합니다.
- Classification Head Training: 그런 다음 파인튜닝된 Sentence Transformer가 생성한 임베딩과 해당 클래스 라벨을 사용해 분류 헤드를 학습합니다.
추론 시, 보지 못한 예시는 파인튜닝된 Sentence Transformer를 통과해 임베딩을 생성하고, 이 임베딩을 분류 헤드가 사용해 클래스 라벨을 예측합니다.
성능 및 벤치마킹
SetFit는 높은 샘플 효율성과 노이즈에 대한 강인성을 보여주며, 훨씬 작은 모델을 사용함에도 불구하고 최신 Few-Shot 방법들과 동등하거나 더 나은 성능을 종종 달성합니다.
RAFT 벤치마크 결과
RAFT Few-Shot 분류 벤치마크에서 SetFit(all-roberta-large-v1 모델, 파라미터 3억 5500만 개 사용)는 PET와 GPT-3보다 우수한 성능을 보였습니다. 정확도 71.3%를 달성했으며, 이는 110억 파라미터 T-Few 모델(75.8%)과 인간 기준(73.5%) 바로 아래 수준입니다. 특히 SetFit는 11개의 RAFT 과제 중 7개에서 인간 기준을 능가했습니다.
| 순위 | 방법 | 정확도 | 모델 크기 |
|---|---|---|---|
| 2 | T-Few | 75.8 | 11B |
| 4 | Human Baseline | 73.5 | N/A |
| 6 | SetFit (Roberta Large) | 71.3 | 355M |
| 9 | PET | 69.6 | 235M |
| 11 | SetFit (MP-Net) | 66.9 | 110M |
| 12 | GPT-3 | 62.7 | 175 B |
다른 방법들과의 비교
클래스당 8개의 예시만으로도 SetFit는 일반적으로 PERFECT, ADAPET, 그리고 기본 파인튜닝된 트랜스포머보다 우수한 성능을 보입니다. 또한 27배 더 작고 프롬프트가 필요 없는 상태에서 T-Few 3B와 비슷한 결과를 달성합니다.
학습 및 추론 효율성
SetFit는 대규모 Few-Shot 모델에 비해 학습 및 실행 속도가 훨씬 빠르고 비용도 저렴합니다.
- Training Speed: NVIDIA V100에서 라벨링된 예시 8개로 SetFit를 학습하면 약 30초가 소요되고 비용은 $0.025입니다. 반면 NVIDIA A100에서 T-Few 3B를 학습하면 약 11분이 걸리며 비용은 약 $0.70으로, 비용과 시간이 28배 증가합니다.
- Hardware Accessibility: SetFit는 단일 GPU(예: Google Colab)에서 혹은 몇 분 안에 CPU에서도 학습할 수 있습니다.
- Inference: SetFit는 추론 시 상당한 속도 향상을 제공하며, 모델 증류를 통해 이러한 속도 향상을 최대 123배까지 늘릴 수 있습니다.
다국어 지원 및 구현
SetFit는 Hugging Face Hub에 있는 모든 Sentence Transformer와 호환됩니다. 다국어 Sentence Transformer를 기본 모델로 사용하면 독일어, 일본어, 중국어, 프랑스어, 스페인어 등 여러 언어에 대해 텍스트 분류에 활용할 수 있으며, 언어 내 및 언어 간 설정 모두 지원합니다.
SetFit를 구현하려면 Hugging Face가 제공하는 setfit 라이브러리를 사용합니다. 학습 워크플로우는 다음과 같습니다:
pip install setfit명령으로 라이브러리를 설치합니다.- 사전 학습된 Sentence Transformer를 로드합니다(예:
paraphrase-mpnet-base-v2). SetFitTrainer를 사용해 대조 학습 및 분류 헤드 학습을 수행합니다.