LLM VRAM ์๊ตฌ๋ ๊ณ์ฐ๊ธฐ๋?
์ด ๋๊ตฌ๋ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์ถ๋ก (inference) ๋ชฉ์ ์ผ๋ก ๋ก๋ํ๊ณ ๊ตฌ๋ํ ๋ ํ์ํ GPU ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ(VRAM)๊ฐ ์ด๋ ์ ๋์ธ์ง ์ถ์ ํด ์ค๋๋ค. ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ ๋ฌด์๋ณด๋ค ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ ์์, ๊ฐ ๊ฐ์ค์น๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ๋ ์์น ์ ๋ฐ๋(precision)์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์์ ยท์ค๋ฒํค๋ ๊ณ์๋ฅผ ๋ํ๋ ์ด์ ๋, KV ์บ์ยทํ์ฑํ ๊ฐ(activations)ยทCUDA ์ปจํ ์คํธ์ฒ๋ผ ์์ ๊ฐ์ค์น ์ธ์ ์ถ๊ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ ์์๋ค์ ๋ฐ์ํ๊ธฐ ์ํด์์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ 10์ต(B) ๋จ์ ํ๋ผ๋ฏธํฐ ์๋ก ์ ๋ ฅํ์ธ์. ์๋ฅผ ๋ค์ด 7B ๋ชจ๋ธ์ด๋ผ๋ฉด 7, Llama-3 70B๋ผ๋ฉด 70์ ๋ฃ์ผ๋ฉด ๋ฉ๋๋ค. ๋ค์์ผ๋ก ์ ๋ฐ๋๋ฅผ ์ ํํฉ๋๋ค. FP32๋ ๊ฐ์ค์น๋น 4๋ฐ์ดํธ, FP16/BF16์ 2๋ฐ์ดํธ, INT8์ 1๋ฐ์ดํธ, INT4 ์์ํ๋ 0.5๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ค๋ฒํค๋ ๊ณ์๋ฅผ ์ค์ ํ์ธ์. ์งง์ ์ปจํ ์คํธ ์ถ๋ก ์ด๋ผ๋ฉด 1.2(20% ์ฌ์ ๋ถ)๊ฐ ๋ฌด๋ํ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ, ๊ธด ์ปจํ ์คํธ๋ ๋ฐฐ์น ์ฒ๋ฆฌ์์๋ ๊ฐ์ ๋ ๋์ฌ ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ณต์ ์ค๋ช
$$\text{VRAM (GB)} = \text{Params (B)} \times \text{Bytes/Param} \times \text{Overhead}$$ 10์ต ๋ฐ์ดํธ โ 1GB์ด๋ฏ๋ก, 10์ต ๋จ์ ํ๋ผ๋ฏธํฐ ์์ ํ๋ผ๋ฏธํฐ๋น ๋ฐ์ดํธ ์๋ฅผ ๊ณฑํ๋ฉด ๊ณง๋ฐ๋ก ๊ธฐ๊ฐ๋ฐ์ดํธ ๋จ์๊ฐ ๋์ต๋๋ค. ์ฌ๊ธฐ์ ์ค๋ฒํค๋ ๊ณ์๋ฅผ ๊ณฑํ๋ฉด ๋ฐํ์์ ์ค์ ๋ก ์๋ชจ๋๋ ๋ฉ๋ชจ๋ฆฌ๊น์ง ํฌํจํ ๊ฐ์ผ๋ก ๋์ด๋ฉ๋๋ค.
๊ณ์ฐ ์์
7B ๋ชจ๋ธ์ FP16, ์ค๋ฒํค๋ ๊ณ์ 1.2๋ก ๊ตฌ๋ํ๋ ๊ฒฝ์ฐ: $$7 \times 2 \times 1.2 = 16.8\,\text{GB}$$ 24GB ๊ทธ๋ํฝ์นด๋๋ผ๋ฉด ์ฌ์ ๋กญ๊ฒ ๋ค์ด๊ฐ๋๋ค. ๊ฐ์ ๋ชจ๋ธ์ INT4๋ก ๋๋ฆฌ๋ฉด: $$7 \times 0.5 \times 1.2 = 4.2\,\text{GB}$$ 8GB GPU์์๋ ๊ฑฐ๋ฌํ ์คํ๋ฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ค์ ์ฌ์ฉ๋์ด ์์ ๊ฐ์ค์น๋ณด๋ค ํฐ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? KV ์บ์๋ ์ปจํ ์คํธ ๊ธธ์ด์ ๋ฐฐ์น ํฌ๊ธฐ์ ๋ฐ๋ผ ์ปค์ง๊ณ , ํ๋ ์์ํฌ๋ ํ์ฑํ ๊ฐ๊ณผ ๋ฒํผ๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์์ฝํฉ๋๋ค. ์ค๋ฒํค๋ ๊ณ์๋ ๋ฐ๋ก ์ด ๋ถ๋ถ์ ์ด๋ฆผ์ก์ ๋ฐ์ํ ๊ฐ์ ๋๋ค.
ํ์ต(training)๋ ํฌํจ๋๋์? ์๋๋๋ค. ํ์ต์๋ ์ตํฐ๋ง์ด์ ์ํ์ ๊ทธ๋๋์ธํธ๋ฅผ ์ํด ๋๋ต 3~4๋ฐฐ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ด ๊ณ์ฐ๊ธฐ๋ ์ถ๋ก ์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
์ค๋ฒํค๋๋ ์ผ๋ง๋ก ์ก์์ผ ํ๋์? ์งง์ ํ๋กฌํํธ์๋ ์ฝ 1.2๋ฅผ, ๊ธด ์ปจํ ์คํธ๋ ๋ฌด๊ฑฐ์ด ๋ฐฐ์น ์ฒ๋ฆฌ์๋ 1.5~2.0 ์ด์์ ์ฌ์ฉํ์ธ์.