AI ortida shunchaki ko'p matematika
Bugun qayerga qaramang - AI, LLM, ChatGPT, DeepSeek... Hamma hayratda: "U mening fikrimni o'qiyapti!", "Bu qandaydir sehrgarlik!".
Lekin bugun siz bilan sahna ortiga o'tamiz va parda ortidagi sehrgar aslida oddiygina (yaxshi, unchalik oddiy bo'lmagan) matematika, gigabaytlab Memory va aqlli arxitektura ekanini ko'rib chiqamiz. Agar tayyor bo'lsangiz, server xonasiga kiramiz! ๐
1. LLM sehrgar emas, u shunchaki matematikaning ashaddiy muxlisi
Keling, tan olaylik: LLM (Large Language Model) aqlli ko'ringani bilan, uning ichida hech qanday "ong" yoki "ruh" yo'q. U matnni tushunmaydi ham.
Intuitsiya: LLM โ bu shunchaki keyingi so'zni (to'g'rirog'i token'ni) eng katta ehtimollik bilan topib beradigan ulkan bashorat mashinasi.
Siz unga "Ertalab turib men..." desangiz, u ichidagi milliardlab parametrlar (vaznlar - weights) yordamida hisob-kitob qiladi-da, keyingi so'z "nonushta qildim" bo'lish ehtimolligi 95% deb topadi. Mana shu hisob-kitob esa ko'p, juda ko'p Matrix Multiplication (matritsalarni ko'paytirish) demakdir. Tizim shunchaki ulkan chiziqli algebra (Linear Algebra) formulasidir.
Sizning Promptingiz -> Tokenization -> Milliardlab Matritsalar Ko'paytmasi -> Keyingi So'z:
2. CPU vs GPU: Bitta zo'r professorga qarshi 10,000 ta maktab o'quvchisi
Xo'sh, bu milliardlab matritsalarni kim hisoblaydi? Tizim administratorligini tasavvur qiling. Bizda serverda baquvvat CPU bor. Nega hamma GPU deb o'zini to'rt tomonga urmoqda?

Keling, buni taqqoslaymiz:
| Xususiyat | CPU (Central Processing Unit) | GPU (Graphics Processing Unit) |
|---|---|---|
| Ishchilar soni | Kam (lekin har biri juda aqlli, Intel i9 yoki AMD Ryzen'da 16-24 ta yadro) | Juda ko'p (minglab kichik, sodda yadrolar) |
| Ishlash uslubi | Sequential (Ishlarni ketma-ket, bittadan bajaradi) | Parallel (Minglab ishni bir vaqtda bajaradi) |
| AI'dagi vazifasi | Operatsion tizimni boshqarish, umumiy logika | Matritsalarni bir vaqtda parallel ko'paytirish |
Muhandislik tili bilan aytganda: CPU - bu matematika bo'yicha dunyo olimi. U juda murakkab masalalarni ketma-ket yecha oladi. Lekin unga "Mana bu 1 millionta oddiy ko'paytirishni bajar" desangiz, u bittalab bajarib, charchab qoladi.
GPU esa - 10,000 ta boshlang'ich sinf o'quvchisi. Ularning har biri murakkab integralni bilmaydi, lekin har biriga bittadan oddiy ko'paytirishni bersangiz, bir soniyada 1 millionta amalni parallel ravishda yopib tashlaydi. LLM'ga aynan mana shu parallellik (SIMD - Single Instruction, Multiple Data) kerak!
3. Memory muammosi: KV Cache nima va u nega serverni "chokidan so'kadi"?
Dasturchi do'stim, tasavvur qil, foydalanuvchi LLM bilan uzoq suhbat quryapti (context kattalashib boryapti). LLM har safar yangi so'zni generatsiya qilganda, eski suhbatlarning hammasini qaytadan o'qib, boshidan hisoblab chiqishi kerakmi? Agar shunday bo'lsa, suhbat uzaygani sayin servering portlab ketadi.
Buning yechimi sifatida KV Cache (Key-Value Cache) o'ylab topilgan.
KV Cache - bu model o'tgan so'zlarni (tokenlarni) qayta-qayta hisoblab o'tirmasligi uchun, ularning oraliq matematik hisob-kitob natijalarini (Key va Value matritsalarini) GPU xotirasida (VRAM) saqlab turishi.
// Agar KV Cache bo'lmaganda, har bir yangi token uchun:
func GenerateNextToken(allPreviousTokens []Token) Token {
// GPU har safar o'tgan hamma narsani boshidan hisoblaydi. Resurs uvol!
return calculate(allPreviousTokens)
}
Lekin bu yerda katta bir "LEKIN" bor: KV Cache GPU'ning eng qimmat resursi bo'lgan VRAM (Video RAM) ichida yashaydi. Agar sening saytingga bir vaqtning o'zida 1000 ta foydalanuvchi kirsa va har biri uzun maqola yozishni so'rasa, KV Cache tezda hamma VRAM'ni yeb bitiradi. Tizimda xuddi Linux'dagi mashhur Out of Memory (OOM) xatosi kabi, GPU xotirasi to'lib, server crash bo'ladi.
4. PagedAttention: OS darslarini yaxshi o'qish kerak edi, og'aynilar!
Ko'p foydalanuvchi bir vaqtda kelganda an'anaviy KV Cache qiynalishining sababi โ u xotirani ketma-ket (contiguous) bloklarda band qiladi. Foydalanuvchi suhbati qancha davom etishini oldindan bilmaganimiz uchun, har bir user uchun xotiradan zaxira (overservation) joy ajratishga majbur bo'lamiz. Natijada xotiraning 60-80% gacha qismi Fragmentatsiya tufayli uvol bo'ladi.
Mana shu joyda vLLM jamoasi chiqib, "Ey yoshlar, Linux operatsion tizimi xotirani qanday boshqarardi?" dedi va PagedAttention arxitekturasini olib kirdi.

PagedAttention xuddi Operatsion tizimlardagi (OS) Paging (Virtual Memory) konsepti kabi ishlaydi:
- KV Cache xotirasi ketma-ket emas, kichik, bo'lingan sahifalar (pages) shaklida saqlanadi.
- Xotira jismonan GPU'ning xohlagan bo'sh joyida bo'lishi mumkin.
- Tizim xuddi OS'dagi
Page Tablekabi Logical-to-Physical jadval orqali ularni bog'laydi.
Foydalanuvchi xotirasi (Logical): [Block 1] -> [Block 2] -> [Block 3]
| | |
GPU VRAM Jismoniy (Physical): [Page 42] [Page 7] [Page 105]
Natija nima bo'ldi?
Xotira fragmentatsiyasi deyarli 0% ga tushdi! Endi bitta server avvalgiga qaraganda 4-5 baravar ko'proq foydalanuvchiga bir vaqtning o'zida (concurrently) xizmat ko'rsata oladi. Bu esa xarajatlarni trillion marta kamaytirish demakdir.
Xulosa
Xullas, AI ortida sehrgarlar emas, balki:
- Milliardlab matritsalarni parallel aylantirayotgan minglab GPU yadrolari,
- Xotirani tejash uchun kecha-yu kunduz ishlaydigan KV Cache,
- Va dasturchilarning xotirani boshqarish muammosiga topgan eng aqlli yechimi โ PagedAttention turibdi.
Shuning uchun, navbatdagi safar ChatGPT senga chiroyli javob qaytarganda, orqa fonda milliardlab o'quvchilar matritsa ko'paytirib, terlab-pishib yotganini va OS konseptlari yana bir bor dunyoni qutqarganini eslab qo'y! ๐
post yoqqan bo'lsa ulashishni unutmang! see you soon!
