๐Ÿš€ LLM ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๊ด€๋ จ ํ•„์ˆ˜ ๊ฐœ๋… & ๊ธฐ์ˆ  ์šฉ์–ด

์ตœ๊ทผ ๋‹จ์ˆœํ•œ ์ฑ—๋ด‡ ๊ตฌํ˜„์„ ๋„˜์–ด, ๊ธฐ์—…ํ˜• ์„œ๋น„์Šค๋‚˜ ๋ณต์žกํ•œ LLM ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์„ ํ•˜๋ ค๋Š” ์›€์ง์ž„์ด ๊ฐ€์†ํ™”๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ณผ์ •์—์„œ ๋งŒ๋‚˜๋Š” ์ˆ˜๋งŽ์€ ์šฉ์–ด์™€ ๊ฐœ๋…๋“ค์€ ๊ฐœ๋ฐœ์ž์™€ ์•„ํ‚คํ…ํŠธ๋“ค์—๊ฒŒ ํฐ ์žฅ๋ฒฝ์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ API ํ˜ธ์ถœ์„ ๋„˜์–ด, ์„ฑ๋Šฅ๊ณผ ๋น„์šฉ ํšจ์œจ์„ฑ์„ ๋™์‹œ์— ์žก๋Š” LLM ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ํ•ต์‹ฌ ๊ธฐ์ˆ  ์šฉ์–ด๋“ค์„ ์ •๋ฆฌํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


๋‹ค๋ฅธ ๊ฒŒ์‹œ๋ฌผ๋„ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด์„ธ์š”!


Contents

1. ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ: ๋ชจ๋ธ๊ณผ ํ† ํฐ

  • LLM (Large Language Model): ์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter)๋ฅผ ๊ฐ€์ง„ ๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. GPT, Claude, Llama ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ด๋ฉฐ, ํ…์ŠคํŠธ์˜ ๋ฌธ๋งฅ์„ ์ดํ•ดํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ‘๋‡Œ’ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ† ํฐ (Token): ๋ชจ๋ธ์ด ํ…์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์˜์–ด๋Š” ๋‹จ์–ด ์ค‘์‹ฌ, ํ•œ๊ตญ์–ด๋Š” ํ˜•ํƒœ์†Œ ์ค‘์‹ฌ์˜ ๋ถ„์ ˆ์ด ์ผ์–ด๋‚˜๋ฉฐ, ์ด ํ† ํฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ณง API ๋น„์šฉ๊ณผ ๋ชจ๋ธ์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ (Context Window): ๋ชจ๋ธ์ด ํ•œ ๋ฒˆ์— ๊ธฐ์–ตํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ์–‘์ž…๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐ„์ด ํด์ˆ˜๋ก ๊ธด ๋ฌธ์„œ๋ฅผ ์š”์•ฝํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๋Œ€ํ™”๋ฅผ ์ด์–ด๊ฐ€๋Š” ๋ฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฐ์ดํ„ฐ ์ •ํ™•๋„๋ฅผ ๋†’์ด๋Š” RAG์™€ ๋ฒกํ„ฐ DB์˜ ์—ญํ• 

๋ชจ๋ธ์ด ํ•™์Šตํ•˜์ง€ ์•Š์€ ์ตœ์‹  ์ •๋ณด๋‚˜ ๊ธฐ์—… ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

  • RAG (Retrieval-Augmented Generation): ‘๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ’์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์ „ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋จผ์ € ์ฐพ์•„(Retrieval) ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ• ๋ฃจ์‹œ๋„ค์ด์…˜(ํ™˜๊ฐ ํ˜„์ƒ)์„ ์ค„์ด๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์ž„๋ฒ ๋”ฉ (Embedding): ํ…์ŠคํŠธ๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ‘์ˆซ์ž ๋ฒกํ„ฐ(Vector)’๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์˜๋ฏธ๊ฐ€ ๋น„์Šทํ•œ ๋ฌธ์žฅ์ผ์ˆ˜๋ก ์ขŒํ‘œ ๊ณต๊ฐ„์—์„œ ๊ฐ€๊น๊ฒŒ ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (Vector DB): ์ˆ˜๋งŒ ๊ฐœ์˜ ์ž„๋ฒ ๋”ฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ๊ณผ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ณ ์†์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด ์ฃผ๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. (ChromaDB, Pinecone, Milvus ๋“ฑ)

์ฃผ์š” Vector DB TOP 4 ๋น„๊ต

RAG ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์‹œ ๊ฐ€์žฅ ๊ณ ๋ฏผ๋˜๋Š” ๋ฒกํ„ฐ DB ์„ ํƒ์„ ๋•๊ธฐ ์œ„ํ•œ ๋น„๊ตํ‘œ์ž…๋‹ˆ๋‹ค.

๊ตฌ๋ถ„Pineconeโญ๏ธMilvus(๊ธฐ์—…์ถ”์ฒœ)Weaviateโญ๏ธChroma(๊ฐœ์ธ๊ฐœ๋ฐœ์ถ”์ฒœ)
์œ ํ˜•์™„์ „ ๊ด€๋ฆฌํ˜• (SaaS)์˜คํ”ˆ์†Œ์Šค / ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์˜คํ”ˆ์†Œ์Šค / ํด๋ผ์šฐ๋“œ์˜คํ”ˆ์†Œ์Šค (๊ฒฝ๋Ÿ‰)
์ฃผ์š” ํŠน์ง•์ธํ”„๋ผ ๊ด€๋ฆฌ ํ•„์š” ์—†์Œ, ๋น ๋ฅธ ์‹œ์ž‘๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ตœ์ ํ™”, ๋†’์€ ํ™•์žฅ์„ฑ๊ฐ์ฒด ์ง€ํ–ฅ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ๊ฒฐํ•ฉํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜ ๋งค์šฐ ๊ฐ„ํŽธํ•œ ์„ค์ •
์ €์žฅ ๋ฐฉ์‹ํด๋ผ์šฐ๋“œ ์ „์šฉ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ (S3 ๋“ฑ)์ž์ฒด ๋กœ์ปฌ/ํด๋ผ์šฐ๋“œ ์ €์žฅ๋กœ์ปฌ ๋””์Šคํฌ / ์ธ๋ฉ”๋ชจ๋ฆฌ
์ ํ•ฉํ•œ ์‚ฌ๋ก€์šด์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์กฑํ•œ ์Šคํƒ€ํŠธ์—…๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ณต์žกํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉ ํ•„์š” ์‹œ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž… ๊ฐœ๋ฐœ ๋ฐ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ

3. ์ตœ์ ํ™” ๊ธฐ์ˆ : ํŒŒ์ธ ํŠœ๋‹๊ณผ ์–‘์žํ™”

๋ฒ”์šฉ ๋ชจ๋ธ์„ ์šฐ๋ฆฌ ์„œ๋น„์Šค์— ๋”ฑ ๋งž๊ฒŒ ๊นŽ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  • ํŒŒ์ธ ํŠœ๋‹ (Fine-tuning): ์ด๋ฏธ ํ•™์Šต๋œ ๋ชจ๋ธ์— ํŠน์ • ๋ถ„์•ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ํ•™์Šต์‹œ์ผœ ๋งํˆฌ๋‚˜ ์ „๋ฌธ ์ง€์‹์„ ์Šต๋“์‹œํ‚ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์—๋Š” ์ž์› ํšจ์œจ์„ฑ์„ ์œ„ํ•ด LoRA๋‚˜ QLoRA ๊ฐ™์€ ๊ธฐ๋ฒ•์ด ์ฃผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.
  • ์–‘์žํ™” (Quantization): ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜(Weight)๋ฅผ ์ •๋ฐ€๋„๊ฐ€ ๋‚ฎ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…(์˜ˆ: 16bit โ†’ 4bit)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์˜ ์šฉ๋Ÿ‰๊ณผ ์š”๊ตฌ ์‚ฌ์–‘์„ ํš๊ธฐ์ ์œผ๋กœ ๋‚ฎ์ถฐ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์€ GPU ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฑฐ๋Œ€ ๋ชจ๋ธ์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๐Ÿ’ก ์™œ ์–‘์žํ™”๋ฅผ ํ•˜๋ฉด ๋ชจ๋ธ์ด ๋” ๋นจ๋ผ์งˆ๊นŒ?

๋‹จ์ˆœํžˆ ๊ฐ€๋ฒผ์›Œ์ ธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ‘๋ณ‘๋ชฉ ํ˜„์ƒ’์„ ํ•ด๊ฒฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

1. ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ(Memory Bandwidth) ๋ณ‘๋ชฉ ํ•ด์†Œ (๊ฐ€์žฅ ์ค‘์š”!)
LLM์˜ ์ถ”๋ก  ์†๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์š”์ธ์€ ์—ฐ์‚ฐ ์†๋„ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ‘๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์—ฐ์‚ฐ ์žฅ์น˜(GPU ์ฝ”์–ด)๋กœ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์˜ฎ๊ธฐ๋А๋ƒ’์ž…๋‹ˆ๋‹ค.
FP16 (16๋น„ํŠธ):ย ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ์˜ฎ๊ธธ ๋•Œ 16๋น„ํŠธ์˜ ํ†ต๋กœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
INT4 (4๋น„ํŠธ):ย ๋˜‘๊ฐ™์€ ํ†ต๋กœ๋กœ ํ•œ ๋ฒˆ์—ย 4๋ฐฐ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ:ย ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“œ๋‹ˆ GPU๊ฐ€ ๋…ธ๋Š” ์‹œ๊ฐ„ ์—†์ด ๋ฐ”๋กœ ์—ฐ์‚ฐ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์–ด ์‘๋‹ต ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

2. ํ•˜๋“œ์›จ์–ด ๊ฐ€์†๊ธฐ(Tensor Cores) ํ™œ์šฉ ์ตœ์ ํ™”
์ตœ์‹  NVIDIA GPU(RTX 3090 ํฌํ•จ)์—๋Š” ํ…์„œ ์ฝ”์–ด(Tensor Cores)๋ผ๋Š” ์ „์šฉ ์—ฐ์‚ฐ ์žฅ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์žฅ์น˜๋Š” ๊ณ ์ •๋ฐ€๋„(FP32) ์—ฐ์‚ฐ๋ณด๋‹ค ์ €์ •๋ฐ€๋„(INT8,ย INT4,ย FP8) ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ›จ์”ฌ ๋” ๋†’์€ TFLOPS(์ดˆ๋‹น ํ…Œ๋ผ ์—ฐ์‚ฐ ํšŸ์ˆ˜)๋ฅผ ๋‚ด๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, ํ•˜๋“œ์›จ์–ด๊ฐ€ “๋” ์‰ฌ์šด ์—ฐ์‚ฐ”์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜์–ด ๊ณ„์‚ฐ ์ž์ฒด๊ฐ€ ๋นจ๋ผ์ง€๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(L1/L2/L3 Cache) ์ ์ค‘๋ฅ  ์ƒ์Šน
์ปดํ“จํ„ฐ์˜ CPU๋‚˜ GPU ๋‚ด๋ถ€์—๋Š” ์•„์ฃผ ๋น ๋ฅด์ง€๋งŒ ์šฉ๋Ÿ‰์ด ์ž‘์€ย ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธ์ด ์–‘์žํ™”๋˜์–ด ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง€๋ฉด, ๋” ๋งŽ์€ ๊ฐ€์ค‘์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด ๋น ๋ฅธ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋А๋ฆฐ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ(VRAM)๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๊ณ  ์บ์‹œ์—์„œ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์—ฐ ์‹œ๊ฐ„(Latency)์ด ํš๊ธฐ์ ์œผ๋กœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

ํ•œ๋งˆ๋””:ย “LLM ์„œ๋น„์Šค์—์„œ ์–‘์žํ™”๋Š” ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์žƒ๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์ •ํ™•๋„(Perplexity)๋ฟ์ด์ง€๋งŒ, ์–ป๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์˜ย ์••๋„์ ์ธ ์‘๋‹ต ์†๋„์™€ย ๋น„์šฉ ์ ˆ๊ฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.”
ํ•ญ๋ชฉ์–‘์žํ™” ์ „ (FP16)์–‘์žํ™” ํ›„ (INT4)ํšจ๊ณผ
๋ชจ๋ธ ์šฉ๋Ÿ‰100% (์˜ˆ: 14GB)์•ฝ 25~30% (์˜ˆ: 4GB)VRAM ์ ˆ์•ฝ
๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๊ธฐ์ค€ (1x)์ตœ๋Œ€ 4๋ฐฐ ๋น ๋ฆ„์ „์†ก ๋ณ‘๋ชฉ ํ•ด๊ฒฐ
์—ฐ์‚ฐ ํšจ์œจ์ผ๋ฐ˜ ์—ฐ์‚ฐํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์—ฐ์‚ฐ๊ณ„์‚ฐ ์†๋„ ํ–ฅ์ƒ

4. ์šด์˜ ์•„ํ‚คํ…์ฒ˜: ์ธํผ๋Ÿฐ์Šค ์—”์ง„๊ณผ ์—์ด์ „ํ‹ฑ ์›Œํฌํ”Œ๋กœ์šฐ

  • ์ธํผ๋Ÿฐ์Šค ์—”์ง„ (Inference Engine): ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์‹ค์ œ๋กœ ๊ตฌ๋™ํ•˜๊ณ  API ํ˜•ํƒœ๋กœ ์„œ๋น™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. OllamavLLMTGI ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์—์ด์ „ํ‹ฑ ์›Œํฌํ”Œ๋กœ์šฐ (Agentic Workflow): AI๋ฅผ ๋‹จ์ˆœํ•œ ๋‹ต๋ณ€ ๊ธฐ๊ณ„๊ฐ€ ์•„๋‹Œ, ์Šค์Šค๋กœ ๊ณ„ํš์„ ์„ธ์šฐ๊ณ  ๋„๊ตฌ(๋ธŒ๋ผ์šฐ์ง•, ์ฝ”๋“œ ์‹คํ–‰ ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ‘์—์ด์ „ํŠธ’๋กœ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. LangChain์ด๋‚˜ LlamaIndex๊ฐ€ ์ด ์„ค๊ณ„๋ฅผ ๋•๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” LLM ์ธํผ๋Ÿฐ์Šค ์—”์ง„ ๋น„๊ต

์ธํผ๋Ÿฐ์Šค ์—”์ง„์€ ๋‹จ์ˆœํžˆ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ(KV ์บ์‹œ), ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ์š”์ฒญ ํ์ž‰ ๋“ฑ์„ ๋‹ด๋‹นํ•˜์—ฌ ์„œ๋น„์Šค์˜ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)๊ณผ ์‘๋‹ต ์†๋„(Latency)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์—”์ง„๋ช…vLLMOllamaTGI (Hugging Face)llama.cpp
์ฃผ์š” ํƒ€๊ฒŸ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„/์šด์˜ ํ™˜๊ฒฝ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž/๋กœ์ปฌ ํ™˜๊ฒฝ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ/์šด์˜ ํ™˜๊ฒฝ์ดˆ๊ฒฝ๋Ÿ‰/์—ฃ์ง€ ๋””๋ฐ”์ด์Šค
ํ•ต์‹ฌ ๊ธฐ์ˆ PagedAttention (๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ ๊ทน๋Œ€ํ™”)๊ฐ„๋‹จํ•œ CLI, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌํ•˜๋“œ์›จ์–ด ๊ฐ€์†, ์ตœ์ ํ™”๋œ ์›Œํฌํ”Œ๋กœ์šฐC/C++ ๊ธฐ๋ฐ˜ ๋ฌด์˜์กด์„ฑ ์‹คํ–‰
์žฅ์ ์••๋„์ ์ธ ์ฒ˜๋ฆฌ๋Ÿ‰, ๋Œ€๊ทœ๋ชจ ์š”์ฒญ ์ฒ˜๋ฆฌ์„ค์น˜ ๋ฐ ๋ชจ๋ธ ๊ต์ฒด๊ฐ€ ๋งค์šฐ ๊ฐ„ํŽธํ—ˆ๊น…ํŽ˜์ด์Šค ์ƒํƒœ๊ณ„์™€ ์™„๋ฒฝ ํ˜ธํ™˜CPU, ๋งฅ, ์•ˆ๋“œ๋กœ์ด๋“œ ๋“ฑ ๋ฒ”์šฉ์„ฑ ์ตœ๊ณ 
๋‹จ์ NVIDIA GPU ์˜์กด๋„ ๋†’์Œ์„ธ๋ฐ€ํ•œ ์„ฑ๋Šฅ ํŠœ๋‹์˜ ํ•œ๊ณ„์„ค์ •์ด ๋‹ค์†Œ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์š”์ฒญ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ๋ถ€์กฑ
์ถ”์ฒœ ํ™˜๊ฒฝ์ƒ์šฉ ์„œ๋น„์Šค API ์„œ๋ฒ„๊ฐœ์ธ์šฉ ์ฑ—๋ด‡, ๋กœ์ปฌ ํ…Œ์ŠคํŠธํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ LLM ์„œ๋น„์Šค์‚ฌ๋ฌผ์ธํ„ฐ๋„ท(IoT), ์ €์‚ฌ์–‘ PC

์‹ค์ „ ์šด์˜์„ ์œ„ํ•œ LLM ์„ฑ๋Šฅ ์ง€ํ‘œ (Performance Metrics)

์‚ฌ์šฉ์ž๊ฐ€ “์ด AI ๋„ˆ๋ฌด ๋А๋ฆฐ๋ฐ?”๋ผ๊ณ  ๋งํ•  ๋•Œ, ์•„๋ž˜ ์ง€ํ‘œ๋“ค์„ ๋ถ„์„ํ•˜์—ฌ ์–ด๋””๊ฐ€ ๋ณ‘๋ชฉ(Bottleneck)์ธ์ง€ ์ฐพ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฉ์–ดํ’€๋„ค์ž„์„ค๋ช… (์‚ฌ์šฉ์ž ์ฒด๊ฐ)์ค‘์š” ๊ด€์ 
TTFTTime to First Token์ฑ„ํŒ…์„ ๋ณด๋‚ด๊ณ  ์ฒซ ๊ธ€์ž๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฒด๊ฐ ์†๋„. ๋ชจ๋ธ์ด ์ž…๋ ฅ์„ ํ•ด์„ํ•˜๊ณ  ์ฒซ ๋‹จ์–ด๋ฅผ ๋ฑ‰๋Š” ์†๋„์ž…๋‹ˆ๋‹ค.
TPSTokens Per Second์ฒซ ์‘๋‹ต ์ดํ›„ ๋ง์ด ๋‚˜์˜ค๋Š” ์†๋„ (๊ธ€์ž ์ƒ์„ฑ ์†๋„)์ดˆ๋‹น ๋ช‡ ๊ฐœ์˜ ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š”์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ณดํ†ต ์ธ๊ฐ„์˜ ์ฝ๊ธฐ ์†๋„์ธ 5~10 TPS ์ด์ƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
E2ELEnd-to-End Latency์งˆ๋ฌธ์„ ๋˜์ง€๊ณ  ์ „์ฒด ๋‹ต๋ณ€์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ์ด ์‹œ๊ฐ„๊ธด ๋‹ต๋ณ€์ผ์ˆ˜๋ก ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค. ์š”์•ฝ์ด๋‚˜ ๋ถ„์„ ์ž‘์—… ์‹œ ์ „์ฒด ํšจ์œจ์„ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.
ThroughputThroughput๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์‹œ์Šคํ…œ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ์ด ์ž‘์—…๋Ÿ‰์šฐ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ๋™์‹œ์— ๋ช‡ ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋Š๊น€ ์—†์ด ๋‹ต๋ณ€์„ ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€(๋™์‹œ์„ฑ)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๐Ÿ’ก LLM ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ํŒ

1. ์™œ TTFT(์ฒซ ๊ธ€์ž ์†๋„)๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€์š”?

์‚ฌ์šฉ์ž๋Š” ์ „์ฒด ๋‹ต๋ณ€์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค, ์ฒซ ๊ธ€์ž๊ฐ€ ์ฆ‰์‹œ ๋‚˜ํƒ€๋‚  ๋•Œ ์„œ๋น„์Šค๊ฐ€ ๋น ๋ฅด๋‹ค๊ณ  ๋А๋‚๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„œ๋น„์Šค ์„ค๊ณ„ ์‹œ ๋ฐ˜๋“œ์‹œ ์ŠคํŠธ๋ฆฌ๋ฐ(Streaming) ๋ฐฉ์‹์„ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. TPOT (Time Per Output Token)๋ž€?

TPS์˜ ์—ญ์ˆ˜๋กœ, ํ† ํฐ ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ‰๊ท  ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณต์‹: TPOT=TPS1โ€‹
  • ์˜ˆ๋ฅผ ๋“ค์–ด 20 TPS๋ผ๋ฉด, ํ† ํฐ ํ•˜๋‚˜๋‹น 0.05์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์…ˆ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์ด ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ‘๋งํ•˜๋Š” ์†๋„’๊ฐ€ ๋Š๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. ์šด์˜ ํ™˜๊ฒฝ์—์„œ์˜ ๋ณ‘๋ชฉ ์ง€์ 

  • TTFT๊ฐ€ ๋А๋ฆฌ๋‹ค๋ฉด? ์ž…๋ ฅ(Prompt)์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜, ๋ชจ๋ธ์ด ์ฒซ ์—ฐ์‚ฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๋กœ์ง(Prefill)์— ๋ณ‘๋ชฉ์ด ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • TPS๊ฐ€ ๋А๋ฆฌ๋‹ค๋ฉด? GPU ์„ฑ๋Šฅ(VRAM ๋Œ€์—ญํญ)์ด ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ๊ฑฐ๋‚˜, ๋™์‹œ ์ ‘์†์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ์—ฐ์‚ฐ ์ž์›์ด ๋ถ€์กฑํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Š ํ•œ๋ˆˆ์— ๋ณด๋Š” ์ง€ํ‘œ ๊ด€๊ณ„๋„

์งˆ๋ฌธ ์ „์†ก โž” [ ๋Œ€๊ธฐ / ์—ฐ์‚ฐ ์‹œ์ž‘ ] โž” ์ฒซ ๊ธ€์ž ์ถœ๋ ฅ (TTFT) โž” [ ํƒ€๋‹ค๋‹ค๋‹ฅ… (TPS/TPOT) ] โž” ๋‹ต๋ณ€ ์™„๋ฃŒ (E2EL)


5. ๐Ÿ’ก ์š”์•ฝ: ํ•œ๋ˆˆ์— ๋ณด๋Š” LLM ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ํ•ต์‹ฌ ์šฉ์–ด์—ญํ•  ๋ฐ ์ค‘์š”์„ฑ
๋ชจ๋ธLLM, Token, Context Window์‹œ์Šคํ…œ์˜ ๋‘๋‡Œ์ด์ž ๋น„์šฉ ๋ฐœ์ƒ์˜ ํ•ต์‹ฌ
์ง€์‹ ํ™•์žฅRAG, Vector DB, Embedding์ตœ์‹  ์ •๋ณด ๋ฐ˜์˜ ๋ฐ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฐฉ์ง€
์ตœ์ ํ™”Fine-tuning, QuantizationํŠน์ • ๋„๋ฉ”์ธ ํŠนํ™” ๋ฐ ํ•˜๋“œ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ ์ ˆ๊ฐ
์‹คํ–‰/์šด์˜Inference Engine, Agentic Workflow์‹ค์ œ ์„œ๋น„์Šค ๊ตฌ๋™ ๋ฐ ์ž์œจ์  ์ž‘์—… ์ˆ˜ํ–‰ ๋Šฅ๋ ฅ

๐Ÿ–ฅ๏ธ ์™œ ๋กœ์ปฌ ์ธํ”„๋ผ๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€?

์ตœ๊ทผ OpenClaw ๊ฐ™์€ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์ด ์ฃผ๋ชฉ๋ฐ›์œผ๋ฉด์„œ, API ๋น„์šฉ ๋ถ€๋‹ด์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ LLM์„ ์ง์ ‘ ์„œ๋น™ํ•˜๋Š” ์‚ฌ๋ก€๊ฐ€ ๋Š˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ M4 ์นฉ์…‹์˜ ๋งฅ ๋ฏธ๋‹ˆ๋‚˜ ๋„‰๋„‰ํ•œ VRAM์„ ๊ฐ–์ถ˜ RTX 3090/4090 ํ™˜๊ฒฝ์€ ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ์—…์šฉ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์— ์ตœ์ ์˜ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ์ˆ  ์šฉ์–ด๋“ค์„ ๋‹จ์ˆœํ•œ ์ •์˜ ์ด์ƒ์œผ๋กœ ์ดํ•ดํ•˜๊ณ , ๊ฐ ์š”์†Œ๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ง€์—ฐ ์‹œ๊ฐ„(Latency)๊ณผ ๋น„์šฉ(Cost)์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ง„์ •ํ•œ AI ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค