8 GB noutbuk: yarim javob
Yettinchi qism
Yettinchi qism — Tez ning laboratoriyadan chiqishi haqida: oddiy kompyuter, maxfiylik, yangilash va keyingi qadamlar. Va birinchi bobni halol boshlash kerak: bu bobning asosiy savoliga hozircha yarim javob bor. Tez ning o'zi qancha xotira olishini o'lchadik. Haqiqiy 8 GB kompyuterda Windows bilan birga qanday ishlashi esa hali o'lchanmagan.
Savol
Tez loyihasining boshida ikki foydalanuvchi tasavvur qilingan edi: bank tahlilchisi va kichik kompaniya buxgalteri — eski noutbuk, 8 GB xotira, videokartasiz. Ikkinchisi Tez uchun pastki chegara: agar Tez unda ishlasa — deyarli hamma joyda ishlaydi.
Loyihaning ochiq savollar ro'yxatida bu savollar bor:
savollar = (TEZ.parent.parent / "10-decisions-and-open-questions.md").read_text(encoding="utf-8") for qator in savollar.splitlines(): if qator.startswith(("| Q-01", "| Q-02", "| Q-14")): print(qator)
| Q-01 | Bank user's PC: RAM, CPU, GPU | Bank user | Model tier | | Q-02 | Can he install software? Does IT approve? Is there an internal server? | Bank user | Desktop or server mode | | Q-14 | Does Tez run well on 8 GB RAM with Windows 11, the model (about 4.4 GB in use) and a large file loaded together | Test on a real 8 GB PC | Minimum PC spec, model tier |
Tahlilchining kompyuteri qanday — hali noma'lum (Q-01). 8 GB kompyuterda Tez qanday ishlashi — hali sinalmagan (Q-14). Bu kitob yozilgan kunga qadar ikkalasi ham ochiq.
Biz nimani bilamiz
O'lchangan narsalardan boshlaymiz. Uchta qism xotira egallaydi: model, ma'lumot engine i va operatsion tizim (boshqa dasturlar bilan birga).
Model. Spike 2 da (6-bob) har bir modelning server jarayoni egallagan xotira o'lchangan. Saqlangan hisobotdan:
import re hisobot = (TEZ / "results_speed_cpu.md").read_text(encoding="utf-8") xotira = {} for qator in hisobot.splitlines(): katak = [k.strip() for k in qator.strip("|").split("|")] if len(katak) == 11 and katak[0].startswith(("qwen", "Qwen")) and katak[-1].isdigit(): xotira.setdefault(katak[0], []).append(int(katak[-1])) for model, qiymatlar in xotira.items(): print(f"{model:20s} {min(qiymatlar):,} - {max(qiymatlar):,} MiB")
qwen3.5-0.8b 1,002 - 1,004 MiB qwen2.5-coder-1.5b 1,913 - 1,915 MiB qwen3.5-2b 2,062 - 2,064 MiB qwen3.5-4b 4,486 - 4,490 MiB
Tez modeli Qwen3.5-4B asosida — 6-bobda taxminan 4.4 GB. Lekin bu o'lchov 4 096 token kontekst bilan qilingan. Bugungi Tez server sozlamasida kontekst boshqacha:
import json sozlama = json.load(open(TEZ / "speed/config.json", encoding="utf-8")) print("hozirgi kontekst:", sozlama["context"]) log = (DATA / "accuracy_tez-tez8_cpu_all.log").read_text(encoding="utf-8") print(next(q for q in log.splitlines() if "n_ctx_slot" in q).split("load_model: ")[1])
hozirgi kontekst: 8192 initializing, n_slots = 1, n_ctx_slot = 8192, kv_unified = 'false'
Kontekst ikki barobar katta. Kontekst uchun xotira (KV cache) kontekst uzunligiga qarab o'sadi. Shuning uchun bu savolni endi taxmin bilan emas, o'lchov bilan yopdik. Shu kompyuterda tez8 serveri mahsulot sozlamasida (kontekst 8 192, bitta slot, videokartasiz) va 4 096 bilan ishga tushirildi. Har birida xotira ikki marta o'qildi: server tayyor bo'lganda va suhbat tarixi bor real savolga javob bergandan keyin. Undan keyin 400 000 qatorli Excel fayl Tez ning o'z loaderi bilan o'qildi, va DuckDB 541 909 qatorli real jadvalda to'rtta planni bajardi. Natijalar bitta faylda:
ram = [json.loads(q) for q in open(TEZ / "results/ram_cpu.jsonl", encoding="utf-8")] for r in ram: if r["part"] == "model server": tinch, javob = r["rest_mib"], r["after_answer_mib"] print(f"model serveri, kontekst {r['context']:5d}: tayyor {tinch['VmRSS']:,} MiB, javobdan keyin {javob['VmHWM']:,} MiB" f" (model fayli {javob['RssFile']:,} + ish xotirasi {javob['RssAnon']:,}); prompt {r['ask']['prompt_tokens']:,} token") elif r["part"] == "excel loader": print(f"Excel yuklagich, {r['file']}: eng yuqori {r['peak_mib']:,} MiB, {r['seconds']} soniya") elif r["part"] == "engine": print(f"DuckDB, {r['file']} ({r['rows']:,} qator, {r['plans']} reja): eng yuqori {r['peak_mib']:,} MiB, {r['seconds']} soniya")
model serveri, kontekst 8192: tayyor 4,593 MiB, javobdan keyin 4,863 MiB (model fayli 2,589 + ish xotirasi 2,273); prompt 1,503 token model serveri, kontekst 4096: tayyor 4,473 MiB, javobdan keyin 4,744 MiB (model fayli 2,590 + ish xotirasi 2,153); prompt 1,503 token Excel yuklagich, medium.xlsx 400000 rows: eng yuqori 651 MiB, 7.13 soniya DuckDB, real_retail.csv (541,909 qator, 4 reja): eng yuqori 314 MiB, 0.42 soniya DuckDB, medium.csv from the loader (400,000 qator, 1 reja): eng yuqori 257 MiB, 0.25 soniya
Uchta narsa ko'rinadi.
Model — 4.9 GB, va kontekst deyarli ahamiyatsiz. Javobdan keyingi eng yuqori xotira 8 192 kontekstda
4 863 MiB. Uning yarmidan ko'pi — model faylining o'zi (RssFile): server faylni xotiraga "xaritalaydi" (mmap),
va bu sahifalar diskdagi fayl bilan bog'liq. Qolgani — ish xotirasi: KV cache va hisob buferlari. Kontekstni
4 096 ga tushirish atigi 120 MiB tejaydi. Kontekstni qisqartirish xotira muammosini hal qilmaydi.
Excel loader — 0.65 GB, lekin qisqa. 400 000 qatorli fayl yetti soniyada o'qildi, eng yuqori xotira 651 MiB. Bu butun Python jarayoni, va u faqat yuklash paytida. Fayl CSV ga aylangandan keyin DuckDB uni 257 MiB bilan o'qiydi.
DuckDB — 0.3 GB. Yarim million qatorda to'rtta plan — guruhlash, top 5, oylarni solishtirish, filtr va saralash — 0.42 soniyada, 314 MiB bilan. Bu Python, DuckDB va jadvalning o'zi birga.
Hisob
Endi qismlarni o'lchangan raqamlar bilan yig'amiz:
| Qism | Xotira | Manba |
|---|---|---|
| Tez modeli serveri (kontekst 8 192, javobdan keyin) | 4.9 GB | o'lchangan, shu bob |
| Excel faylni yuklash (400 000 qator) | 0.65 GB, faqat yuklash paytida | o'lchangan, shu bob |
| DuckDB dagi ish (541 909 qator) | 0.3 GB | o'lchangan, shu bob |
| Windows 11 va boshqa dasturlar | noma'lum | o'lchanmagan |
| Tez jami, eng yomon holatda | taxminan 5.5 GB |
8 GB dan Tez eng yuqori nuqtada taxminan 5.5 GB oladi. Windows, brauzer va Excel uchun 2.5 GB atrofida qoladi. Bu tor, lekin imkonsiz emas. Agar yetmasa, Windows diskka almashtirishni (swap) boshlaydi, va hamma narsa — Tez ham, Excel ham — sekinlashadi. Model fayli sahifalari bu yerda yengillik beradi: ular diskdagi fayldan qayta o'qilishi mumkin, shuning uchun tizim ularni birinchi bo'lib bo'shatadi — lekin keyingi javob sekinroq bo'ladi.
Ikki ogohlantirish. Bu o'lchovlar Linux (WSL) da qilingan; Windows dagi llama-server.exe ning raqamlari
yaqin bo'lishi kutiladi, lekin tekshirilmagan. Va Windows ning o'zi 8 GB kompyuterda qancha joy olishi — hali
o'lchanmagan.
Tezlik ham noma'lum
Xotira yetgan taqdirda ham, tezlik savoli qoladi. 6-bobdagi o'lchovlar kuchli i9 protsessorida qilingan, va 4-bobda biz ko'rdik: "2 ta oqimli i9" kuchsiz noutbukni taqlid qilmaydi. Shunga qaramay, bitta raqam yo'nalish beradi: 6-bobda 4B model i9 ning 2 ta oqimida birinchi (sovuq) javobga o'ttiz soniyadan ko'p sarflagan. Eski noutbukning protsessori i9 yadrosidan sekinroq — demak sovuq javob undan ham uzoqroq bo'ladi. Iliq javoblar qanchalik sekinlashishini bilmaymiz.
Agar sig'masa
Bu savolning javobi "yo'q" chiqsa, bir nechta yo'l bor. Bittasi o'lchandi, qolganlari hali sinalmagan:
- Kichikroq model. Qwen3.5-2B xotirani yarmicha oladi (yuqoridagi jadval). Lekin 18-bobda ko'rdik: o'qitilmagan 2B 40 dan 20-25 to'g'ri javob bergan, 4B esa 30-37. 2B ni train qilish plandan chiqarilgan edi (run1). Kuchsiz kompyuter uchun bu plan qaytadan ko'rib chiqilishi kerak.
- Qisqaroq kontekst — endi bu yo'l yopildi: 4 096 kontekst atigi 120 MiB tejaydi (yuqorida).
- Ofis serveri. Bitta kuchli kompyuter (ehtimol videokartali) modelni ishga tushiradi, qolgan kompyuterlar unga mahalliy tarmoq orqali ulanadi. Ma'lumot baribir ofisdan chiqmaydi. Bu loyihaning boshidan planda bor, lekin qurilmagan; va bu bank IT bo'limining ruxsatiga bog'liq (Q-02).
- Faqat toollar. Model umuman ishlamasa ham, Tez engine — fayl o'qish, tozalash, filtr, jamlash — tugmalar orqali ishlaydi. Bu loyihaning eng birinchi tamoyili edi: "avval toollar, keyin AI".
Qanday o'lchanadi
Sinov plani oddiy, lekin u haqiqiy kompyuter talab qiladi:
- Windows 11, 8 GB xotira, videokartasiz kompyuter — ideal holda tahlilchining o'zinikiga o'xshash.
- Odatdagi dasturlar ochiq: brauzer, Excel.
- Tez modeli serveri ishga tushiriladi va xotirasi o'lchanadi (bo'sh holatda va javob paytida) — shu kompyuterda qilindi, kuchsiz kompyuterda takrorlanadi.
- Bir vaqtda 400 000 qatorli fayl yuklanadi — loader alohida o'lchandi, birga emas.
- Bo'sh xotira, diskka almashtirish (swap) va har bir javob vaqti — sovuq va iliq — yoziladi.
- Toza va real test to'plamlaridan bir qismi shu kompyuterda ishga tushiriladi: aniqlik o'zgarmasligi kerak (bir xil model fayli), faqat tezlik.
Natija Tez ning minimal talablarini belgilaydi: "8 GB bilan ishlaydi", "16 GB tavsiya etiladi" yoki "8 GB uchun 2B modeli". Tez ning o'z xotirasi endi ma'lum; jumlani tanlash uchun faqat Windows va kuchsiz protsessor qoldi.
Xulosa
- O'lchangan: tez8 serveri mahsulot sozlamasida javobdan keyin 4.9 GB (yarmidan ko'pi — model fayli), Excel loader 400 000 qatorda 0.65 GB, DuckDB yarim million qatorda 0.3 GB. Tez jami — taxminan 5.5 GB.
- Kontekstni 4 096 ga tushirish atigi 120 MiB tejaydi — bu yo'l yopildi.
- 8 GB kompyuterda Windows va boshqa dasturlar uchun taxminan 2.5 GB qoladi — tor. Haqiqiy Windows sarfi va kuchsiz protsessordagi tezlik — hali noma'lum. Tahlilchining kompyuteri ham noma'lum.
- Sig'masa: kichikroq model, ofis serveri yoki faqat toollar. Hech biri sinalmagan.
- Bu bob haqiqiy 8 GB kompyuterda sinovdan keyin yana qayta yoziladi.
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.