Hugging Face์ Intel์ด Optimum Intel์ OpenVINO๋ฅผ ํตํฉํด Vision Transformer ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ 3.8๋ฐฐ ๊ฐ์(344MBโ90MB)์ํค๊ณ ์ถ๋ก ๋ ์ดํด์๋ฅผ 2.4๋ฐฐ ๋จ์ถ(98msโ41ms)
Accelerate your models with ๐ค Optimum Intel and OpenVINO
AI ์์ฝ
Context
Transformer ๋ชจ๋ธ์ ํ๋ก๋์ ํ๊ฒฝ์์ ๋์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ์ฌํญ๊ณผ ์ถ๋ก ๋ ์ดํด์๋ก ์ธํด ์ฃ์ง ๋๋ฐ์ด์ค๋ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๊ฐ ์ ํ๋๊ณ ์๋ค.
Technical Solution
- OpenVINO 2.2 ๋ฐํ์์ Optimum Intel์ ํตํฉํด PyTorch ๋ชจ๋ธ์ OpenVINO ํ์(XML ํ ํด๋ก์ง + ๋ฐ์ด๋๋ฆฌ ๊ฐ์ค์น ํ์ผ)์ผ๋ก ๋ณํ
- OpenVINO Neural Network Compression Framework(NNCF)๋ฅผ ํ์ฉํ ํฌ์คํธํธ๋ ์ด๋ ์ ์ ์์ํ(Post-training static quantization) ์ ์ฉ์ผ๋ก ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ๋นํธํญ ๊ฐ์
- OVModelForImageClassification ๋ฑ OVModel ํด๋์ค๋ฅผ ํตํด Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ ์ธํฐํ์ด์ค๋ก ์์ํ๋ ๋ชจ๋ธ ๋ก๋ ๋ฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
- ์์ํ ๊ณผ์ ์์ ์๋ณธ ๋ฐ์ดํฐ์ 300๊ฐ ์ํ์ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ (calibration) ๋ฐ์ดํฐ์ ๊ตฌ์ฑํ์ฌ ์ ํ๋ ์์ค ์ต์ํ
- Intel CPU ๋ฑ ๋ค์ํ Intel ํ๋ก์ธ์์์ ๋จ์ผ ์ปดํ์ผ๋ ๋ชจ๋ธ ์คํ ๊ฐ๋ฅ
Impact
- ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ: 344MB โ 90MB (3.8๋ฐฐ ๊ฐ์)
- ์ถ๋ก ๋ ์ดํด์: 98ms โ 41ms (2.4๋ฐฐ ๋จ์ถ)
- ์ ํ๋ ์ ์ง: ์์ํ ์ ํ 87.6% ๋์ผ
- ์์ํ ์์ ์๊ฐ: 1~2๋ถ
Key Takeaway
Transformer ๋ชจ๋ธ์ ์์ํ๋ ์ ์ ์ฐ์ฐ์ ํจ์จ์ฑ์ ํ์ฉํด ์ ๋ถ ๋ด์ 3๋ฐฐ ์ด์์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ฐ๊ณผ 2๋ฐฐ ์ด์์ ๋ ์ดํด์ ๊ฐ์ ์ ๋์์ ๋ฌ์ฑํ ์ ์์ผ๋ฉฐ, ํ๋ก๋์ ๋ฐฐํฌ ์ ์ ํ๋ ์์ค์ ๋ฌด์ํ ์์ค์ผ๋ก ์ ์ด ๊ฐ๋ฅํ๋ค.
์ค์ฒ ํฌ์ธํธ
Hugging Face์์ ํธ์คํ ๋๋ Transformer ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ์์ง๋์ด๋ผ๋ฉด OVQuantizer.quantize()๋ฅผ ํตํด ํฌ์คํธํธ๋ ์ด๋ ์์ํ๋ฅผ ์ ์ฉํ๊ณ , ์๋ณธ ๋ฐ์ดํฐ์ ๊ธฐ๋ฐ ๋ณด์ ๊ณผ์ ์ ๊ฑฐ์น ํ OVModel ํด๋์ค๋ก ๋ก๋ํ๋ฉด, ์ฝ๋ ๋ณ๊ฒฝ ์ต์ํ(pipeline ์ธํฐํ์ด์ค ๋์ผ ์ ์ง)๋ก ์ฃ์ง ๋๋ฐ์ด์ค ๋ฐฐํฌ ๋๋ ๋ ์ดํด์ ํฌ๋ฆฌํฐ์ปฌํ ์๋น์ค์์ 2~4๋ฐฐ์ ์ฑ๋ฅ ๊ฐ์ ์ ์ป์ ์ ์๋ค.