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 |
๊ตฌํ ์ํฌํ๋ก์ฐ
์ด๋ฌํ ์ต์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๊ณผ์ ์ ๋ ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- ์์ํ:
optimum.intel์INCQuantizer๋ฅผ ์ฌ์ฉํ๊ณ ,PostTrainingQuantConfig๋ฅผ "static" ์ ๊ทผ ๋ฐฉ์๊ณผ "ipex" ๋ฐฑ์๋๋ก ์ค์ ํฉ๋๋ค. - ๋ฐฐํฌ: ์์ํ๋ ๋ชจ๋ธ ๋ณธ๋ฌธ์
IPEXModel๋ก ๊ฐ์ธ๊ณ , SetFit ๋ชจ๋ธ ๊ตฌ์กฐ์ ํตํฉํ์ฌ ์ถ๋ก ์ ์ฌ์ฉํฉ๋๋ค.
SUMMARY: Hugging Face๋ ๐ค Optimum Intel ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํ ์ฌํ ํ๋ จ ์ ์ ์์ํ๋ฅผ ์ฌ์ฉํ์ฌ Intel Xeon CPU์์ SetFit ๋ชจ๋ธ์ ์ถ๋ก ์ฒ๋ฆฌ๋์ ์ต๋ 7.8๋ฐฐ ๋น ๋ฅด๊ฒ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
TITLE: Xeon์์ ๐ค Optimum Intel์ ํจ๊ปํ๋ SetFit ์ถ๋ก ๊ฐ์ํ