Xeon에서 🤗 Optimum Intel와 함께하는 SetFit 추론 가속화

TL;DR

Hugging Face는 SetFit 모델이 Intel Xeon CPU에서 🤗 Optimum Intel 라이브러리를 통한 사후 훈련 정적 양자화를 활용하여 추론 처리량이 최대 7.8배 증가할 수 있음을 보여주었습니다. 이 최적화는 정확도에 거의 영향을 주지 않으면서 few-shot 학습 모델을 프로덕션 수준으로 배포할 수 있게 합니다.

SetFit: 효율적인 Few-Shot 학습

SetFit은 제한된 라벨링된 학습 데이터 문제를 해결하기 위해 Sentence Transformers의 few-shot 미세 조정을 위해 설계된 프레임워크입니다. Large Language Model(LLM) 기반 방법에 비해 두 가지 주요 장점을 제공합니다:

  • 프롬프트 제거: LLM을 사용한 인컨텍스트 학습은 깨지기 쉬운 수작업 프롬프트가 필요하지만, SetFit은 소수의 라벨된 예시만으로 직접 임베딩을 생성합니다.
  • 학습 효율성: SetFit은 일반적으로 GPT-3.5나 Llama 2와 같은 LLM에 비해 학습 및 추론 속도가 한 차례 정도 빠릅니다.

성능 측면에서, SetFit은 5개의 샷을 사용할 때 3-shot 프롬프트에서 GPT-3.5를 능가하고, Banking 77 금융 의도 데이터셋에서 3-shot GPT-4보다 뛰어난 결과를 보였습니다.

🤗 Optimum Intel를 사용한 추론 가속화

Intel CPU에서 SetFit 추론을 가속화하기 위해 Hugging Face는 Optimum Intel을 활용합니다. 이 오픈소스 라이브러리는 Intel Advanced Vector Extensions 512(AVX-512), Vector Neural Network Instructions(VNNI), Advanced Matrix Extensions(AMX)를 이용합니다. 이러한 하드웨어 가속은 모든 코어에 내장된 BFloat16(bf16) 및 int8 GEMM 가속기를 포함합니다.

사후 훈련 정적 양자화 (PTQ)

핵심 최적화 기법은 Intel Neural Compressor(INC)를 통한 **Post-Training Static Quantization (PTQ)**입니다. 양자화는 가중치와 활성화를 표현하는 비트 수를 줄이며(예: 고정밀 숫자를 INT8로 변환), 메모리 사용량을 감소시키고 연산 속도를 높입니다.

PTQ는 추가 학습 없이도 지연 시간과 메모리 사용량을 감소시키기 때문에 특히 효과적이며, 보통 약 100개의 샘플로 구성된 작은 라벨 없는 보정 세트만으로도 보이지 않는 데이터의 분포를 나타낼 수 있습니다.

벤치마크 및 성능 결과

bge-small 모델을 sst2 데이터셋에 사용하여 성능을 평가했으며, 원본 PyTorch/Transformers fp32 구현과 IPEX-bfloat16 버전, 그리고 양자화된 Optimum-int8 버전을 비교했습니다.

지연 시간 및 모델 크기

배치 크기 1에서 최적화된 Optimum-int8 모델은 다음과 같은 큰 개선을 보였습니다:

  • 지연 시간 감소: 지연 시간이 3.45배 감소했습니다(4.55 ms vs fp32 모델의 15.69 ms).
  • 모델 크기 감소: 모델 크기가 2.85배 감소했습니다(44.65 MB vs 127.32 MB).
  • 정확도 유지: 정확도는 거의 변하지 않았으며, 88.4%(fp32)에서 88.1%(int8)로 약간 감소했습니다.

처리량 향상

지연 시간 개선도 크지만, 가장 큰 이득은 처리량에서 나타납니다. 다양한 배치 크기에서 달성 가능한 최고 처리량을 비교했을 때, Optimum-int8 모델은 원본 transformers fp32 모델보다 7.8배 빠릅니다.

지표 bge-small (transformers) bge-small (ipex-bfloat16) bge-small (optimum-int8)
모델 크기 127.32 MB 63.74 MB 44.65 MB
정확도 (테스트 세트) 88.4% 88.4% 88.1%
지연 시간 (bs=1) 15.69 +/- 0.57 ms 5.67 +/- 0.66 ms 4.55 +/- 0.25 ms

구현 워크플로우

이러한 최적화를 구현하기 위해 과정은 두 가지 주요 단계로 구성됩니다:

  1. 양자화: optimum.intel의 INCQuantizer를 사용하고, PostTrainingQuantConfig를 "static" 접근 방식과 "ipex" 백엔드로 설정합니다.
  2. 배포: 양자화된 모델 본문을 IPEXModel로 감싸고, SetFit 모델 구조에 통합하여 추론에 사용합니다.

SUMMARY: Hugging Face는 🤗 Optimum Intel 라이브러리를 통한 사후 훈련 정적 양자화를 사용하여 Intel Xeon CPU에서 SetFit 모델의 추론 처리량을 최대 7.8배 빠르게 달성하는 방법을 보여줍니다.

TITLE: Xeon에서 🤗 Optimum Intel와 함께하는 SetFit 추론 가속화

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch