19-bo‘lim
Ishlab chiqarish - tezlik va narx
Kechikish taqsimoti, paketlash foydasi, tokenizator tanlash orqali narxni kamaytirish, xotira hisobi va kesh.
Ushbu bo‘lim mundarijasi
Tizim ishlayapti. Endi uni haqiqiy foydalanuvchilarga chiqarish kerak - va bu yerda boshqa savollar paydo bo'ladi.
Kechikishni to'g'ri o'lchash #
O'rtacha qiymat yetarli emas:
vaqt = []
for _ in range(50):
t = time.perf_counter()
vek(q)
vaqt.append((time.perf_counter() - t) * 1000)
vaqt.sort()
o'rtacha: 11.0 ms
median : 11.4 ms
p95 : 12.3 ms
eng uzun: 13.3 ms
p95 - so'rovlarning 95% i shundan tez bajarilgani. Foydalanuvchi tajribasi aynan shu son bilan o'lchanadi, o'rtacha bilan emas.
O'rtacha 11 ms bo'lsa-yu, har yigirmanchi so'rov 2 soniya davom etsa, o'rtacha buni yashiradi.
Ishlab chiqarishda odatda p95 va p99 kuzatiladi. Bizning misolda taqsimot tor (11.0 va 12.3 yaqin) - bu sog'lom holat.
Paketlash #
PyTorch darsligining 19-bo'limidagi xulosa bu yerda ham amal qiladi:
paket= 1: 10.3 ms jami -> 10.34 ms/so'rov
paket= 4: 16.9 ms jami -> 4.21 ms/so'rov
paket= 16: 45.2 ms jami -> 2.82 ms/so'rov
paket= 64: 134.1 ms jami -> 2.10 ms/so'rov
Bitta so'rov 10.34 ms, 64 talik paketda esa 2.10 ms - deyarli 5 barobar tez.
Lekin 64 ta so'rovni yig'ish uchun kutish kerak. Amalda vaqt chegarasi qo'yiladi: «20 ms kutamiz yoki 16 ta so'rov yig'ilguncha».
Tokenizator narxni belgilaydi #
2-bo'limda o'zbekcha matn qimmatga tushishini ko'rgan edik. Endi qaysi tokenizator tanlanishi qanchalik muhimligini o'lchaymiz:
tokenizator tur uz tok en tok nisbat uz/soz
bert-base-multilingual WordPiece 61 44 1.39x 2.54x
paraphrase-multilingual SentencePiece (XLM-R) 46 43 1.07x 1.92x
gpt2 BPE (faqat inglizcha) 72 45 1.60x 3.00x
Bir xil o'zbekcha matn: 46 dan 72 tokengacha. Farq 1.6 barobar - faqat tokenizator tanlovi tufayli.
Bitta so'zda buni ko'rish oson:
bert-base-multilingual-cased o'rganish 5 ta: ['o', "'", 'r', '##gani', '##sh']
paraphrase-multilingual-MiniLM o'rganish 3 ta: ['▁o', "'", 'rganish']
gpt2 o'rganish 5 ta: ['o', "'", 'r', 'gan', 'ish']
bert-base-multilingual-cased Toshkent 1 ta: ['Toshkent']
paraphrase-multilingual-MiniLM Toshkent 1 ta: ['▁Toshkent']
gpt2 Toshkent 4 ta: ['T', 'osh', 'k', 'ent']
XLM-R oilasidagi modellar (SentencePiece tokenizatori) o'zbekcha matnni eng tejamli bo'laklaydi: bir so'zga 1.92 token.
WordPiece (mBERT) 2.54, faqat inglizcha BPE (GPT-2) esa 3.00.
Bu tanlov narxga, kontekst oynasiga va sifatga bir vaqtda ta'sir qiladi. Model tanlashda nafaqat sifat ko'rsatkichiga, balki tokenizatoriga ham qarang - o'z matningizda sinab ko'ring.
2-bo'limdagi yuqoriroq nisbatlar (3-3.5x) qisqa jumlalarda va mBERT bilan o'lchangan edi. Matn uzaygan sari nisbat pasayadi, chunki uzun so'zlar takrorlanadi.
Xarajat bashorati #
kuniga 100 so'rov -> oyiga 690,000 token = $ 0.10
kuniga 1,000 so'rov -> oyiga 6,900,000 token = $ 1.03
kuniga 10,000 so'rov -> oyiga 69,000,000 token = $ 10.35
Hisob: har so'rovda 5 ta hujjat (40 tokendan) va savol (30 token) - jami 230 token. Narx misol uchun 1 mln token = $0.15 deb olingan.
Haqiqiy hisobda yana uchta narsa bor:
- Chiqish tokenlari - odatda kirishdan qimmatroq narxlanadi.
- Embedding hisobi - o'z serveringizda bo'lsa, protsessor vaqti.
- Qayta urinishlar - xato va vaqt tugashi holatlari.
Haqiqiy narxni bilishning yagona yo'li - kichik hajmda sinab ko'rish va o'lchash. Jadval bo'yicha hisoblangan bashorat har doim past chiqadi.
Xotira #
model parametrlari: 449 MB
1,000 hujjat indeksi: 1.5 MB
100,000 hujjat indeksi: 146.5 MB
1,000,000 hujjat indeksi: 1464.8 MB
Model 449 MB - bu doimiy xarajat. Indeks esa hujjatlar soniga mutanosib o'sadi.
| Hujjatlar | Indeks | Yechim |
|---|---|---|
| 100 000 gacha | ~150 MB | Oddiy tenzor, xotirada saqlanadi |
| 1 million | ~1.5 GB | FAISS, diskdan o'qish |
| Undan ko'p | - | Vektor bazasi, siqilgan indeks |
Kesh #
Foydalanuvchilar bir xil savollarni qayta-qayta beradi:
kesh = {}
def keshli_vek(s):
k = hashlib.md5(s.encode()).hexdigest()
if k in kesh:
return kesh[k], True
v = vek([s])
kesh[k] = v
return v, False
5 so'rov, 3 marta keshdan olindi (60%)
Haqiqiy tizimda takrorlanish darajasi yuqori bo'ladi - eng ko'p beriladigan savollar butun trafikning katta qismini tashkil qiladi.
Kalit sifatida normallangan matnni ishlating: kichik harfga o'tkazing, ortiqcha bo'shliqlarni olib tashlang, apostrof shaklini birxillashtiring (2-bo'lim).
Aks holda «Ta'til necha kun?» va «ta'til necha kun?» ikki xil kalit bo'ladi va kesh deyarli ishlamaydi.
Hujjatlar o'zgarganda esa keshni tozalang - aks holda eski javob qaytaverdi.
Chiqarishdan oldin ro'yxat #
| Tekshiruv | Nega |
|---|---|
| Baholash to'plami bormi | Usiz yaxshilanishni bilib bo'lmaydi (18-bo'lim) |
| Recall@k qoniqarlimi | Qidiruv yomon bo'lsa, qolgani ahamiyatsiz (17-bo'lim) |
| «Ma'lumot yo'q» ishlaydimi | Bilmaganda rad eta olsin |
| Chegara tanlanganmi | Raqam bilan, taxmin bilan emas |
| p95 o'lchanganmi | O'rtacha yetarli emas |
| Kesh va paketlash bormi | Arzon tezlik |
| Indeks yangilanadimi | Hujjat o'zgarsa, vektor ham |
| Narx bashorat qilinganmi | Kichik hajmda sinab ko'rilgan |
- 50 marta o'lchab, o'rtacha, median va p95 ni hisoblang.
- p95 nega o'rtachadan muhimroq ekanini tushuntiring.
- Paket hajmini 1, 4, 16 va 64 qilib, bir so'rovga ketgan vaqtni yozing.
- Paketlashning kamchiligini ayting.
- Bir xil matnni uch xil tokenizatorda bo'laklab, token sonini solishtiring.
- O'zbek tili uchun qaysi tokenizator tejamliroq ekanini aniqlang.
- Kuniga 5000 so'rov uchun oylik token hajmini hisoblang.
- 500 000 hujjat uchun indeks xotirasini hisoblang.
- Kesh yozib, takroriy so'rovlarda tezlik farqini o'lchang.
- Kesh kalitini normallash nega kerakligini misol bilan ko'rsating.
Xulosa #
- Kechikishni p95 bilan o'lchang, o'rtacha bilan emas.
- Bizda o'rtacha 11.0 ms, p95 esa 12.3 ms - taqsimot tor, holat sog'lom.
- Paketlash bir so'rov narxini 10.34 ms dan 2.10 ms ga tushirdi.
- Lekin u kutish vaqti qo'shadi - vaqt chegarasi bilan muvozanatlanadi.
- Tokenizator tanlovi narxga to'g'ridan-to'g'ri ta'sir qiladi.
- O'zbekcha matn: SentencePiece 1.92 token/so'z, WordPiece 2.54, GPT-2 BPE 3.00.
- Ya'ni noto'g'ri tanlov narxni 1.6 barobar oshiradi.
- Model 449 MB, indeks esa million hujjatda ~1.5 GB.
- Kesh eng arzon optimallashtirish; kalitni normallash shart.
- Chiqarishdan oldin baholash to'plami, chegara va narx bashorati tayyor bo'lsin.
Keyingi, yakuniy bo'limda hamma narsani bitta ishlaydigan loyihada birlashtiramiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.