
Umumiy ko‘rinish
glm53-flash-offload GLM-5.3-Flash’ning 125.3 GB hajmdagi, EXL3 3.05-bpw tuzilmasini bitta 24 GB NVIDIA GPU va host DDR4 xotirasi yordamida ishga tushiradi. U OpenAI bilan mos HTTP API taqdim etadi, bunda modelning yo‘naltirilgan mixture-of-experts og‘irliklari asosan pinlangan tizim RAM’ida saqlanadi.
Loyiha bir nechta kichik maxsus kernel bilan to‘ldirilgan, standart exllamav3 1.5.1 ustidagi yupqa monkeypatchlar to‘plamidan iborat. exllamav3 manba kodini tahrirlash talab qilinmaydi. Hujjatlashtirilgan konfiguratsiya PCIe 4.0 x16 orqali AMD EPYC 7443P tizimiga ulangan RTX 3090’da o‘lchangan.
Asosiy g‘oya tez-tez ishlatiladigan ekspertlarni elastik GPU keshida saqlashdan iborat. Keshda bo‘lmagan ekspertlarni PCIe orqali pinlangan host xotirasidan bevosita o‘qish mumkin. Tezkor rejimda dekodlash paytida keshda topilmagan eng kam ishlatiladigan ekspertlar o‘rniga AVX2 CPU ishchisi tomonidan hisoblanishi mumkin.
Asosiy imkoniyatlar
- Bitta GPU’da joylashtirish: GLM-5.3-Flash’ni 24 GB’li bitta RTX 3090 sinfidagi GPU bilan ishga tushiradi.
- OpenAI bilan mos API: chat completion, text completion, modelni aniqlash, oqimli uzatish, reasoning kontenti va OpenAI uslubidagi tool call’larni qo‘llab-quvvatlaydi.
- Pinlangan zero-copy saqlash: barcha yo‘naltiriladigan ekspertlar pinlangan host RAM’ida saqlanadi va CUDA unified virtual addressing orqali ulardan foydalanish mumkin.
- Elastik GPU ekspert keshi: faol ekspertlar mavjud VRAM’dan foydalanadi, uzoq davom etadigan prefill aktivatsiyalari va staging buferlari uchun kesh joyi vaqtincha bo‘shatilishi mumkin.
- Prefill staging: keshda bo‘lmagan ekspertlar bir qatlam oldindan ko‘chiriladi, shu sababli PCIe uzatmasi hisoblash bilan parallel bajariladi.
- Ixtiyoriy CPU qatlami: tezkor rejim tanlangan, keshda bo‘lmagan dekodlash so‘rovlarini AVX2 CPU kernel’iga taqsimlaydi.
- Batch dekodlash: hujjatlashtirilgan
-ambs 4konfiguratsiyasi bilan to‘rttagacha oqim birgalikda dekodlanishi mumkin. - Qayta tiklanadigan konfiguratsiya: model reviziyasi, container digest’i, exllamav3 versiyasi, Triton tanlovlari, benchmarklar va sifat bo‘yicha ma’lumotnoma paneli mahkamlangan.
Tezkor va aniq rejimdan birini tanlang
Server GLM53_MODE muhit o‘zgaruvchisi orqali ikkita ishlash rejimini taqdim etadi.
Tezkor rejim
fast standart rejimdir. U GPU ekspert keshini, zero-copy keshda topilmagan ma’lumotlarni, tanlangan sovuq dekodlash so‘rovlari uchun AVX2 CPU qayta ishlashini, batch dekodlashni va birlashtirilgan dekodlash kernel’larini birlashtiradi. O‘lchangan host’da u taxminan 218 GiB yoki 234 GB host RAM ishlatgan.
E’lon qilingan sinov kampaniyasida bitta dekodlash oqimi uchun taxminan sekundiga 28.15 token, ikkita oqim uchun jami sekundiga 31.57 token va to‘rtta oqim uchun jami sekundiga 33.98 token o‘lchangan. Joriy digest bilan o‘tkazilgan image smoke test mos ravishda jami sekundiga 28.88, 31.27 va 35.00 token natijasini ko‘rsatdi.
Sifat haqida ogohlantirish: prefill aniq bajariladi, ammo tezkor rejimdagi dekodlash standart exllamav3’ga nisbatan bitma-bit aynan bir xil emas. Juftlikdagi dekodlash tekshiruvi o‘rtacha KL 0.0053 va top-1 moslik 0.977 ekanini ko‘rsatdi. Natijalar ekvivalentligi talab qilinsa, aniq rejimdan foydalaning.
Aniq rejim
exact CPU qatlamini va faqat tezkor rejimga xos dekodlash kernel’larini o‘chiradi. GPU ekspert keshi hamda host xotirasida keshda topilmagan ma’lumotlardan foydalanish saqlanib qoladi. Ma’lumotnoma panelida top-1 moslik 1.0000 va KL 0 ko‘rsatildi, host xotirasidan foydalanish esa taxminan 111 GiB yoki 119 GB bo‘ldi.
Aniq rejim sekinroq, biroq RAM’dan ancha kam foydalanadi. O‘lchangan bir oqimli dekodlash tezligi qisqaroq sinov kontekstida sekundiga 12.57 tokenni tashkil etdi. Bu standart exllamav3 sig‘magan ekspertlarni CPU ishchisiga joylashtirgandagi taxminan sekundiga 7.5–8.4 token tezlik bilan solishtirilgan.
Uskuna va dasturiy ta’minot talablari
GPU va drayver
- VRAM hajmi 24 GB bo‘lgan bitta NVIDIA GPU.
- O‘lchangan maqsadli konfiguratsiya
sm_86GPU, masalan RTX 3090 yoki A5000. - Ichiga kiritilgan
sm_86binar fayllarism_89qurilmalarida, jumladan RTX 4090’da ham ishlaydi, ammo bu konfiguratsiya o‘lchanmagan. - Image CUDA 13.0.3’dan foydalangani sababli CUDA 13.0’ni qo‘llab-quvvatlaydigan NVIDIA drayveri talab qilinadi.
- PCIe 4.0 x16 tavsiya etiladi. O‘lchangan ulanishda keshda topilmagan ma’lumotlar taxminan 25 GB/s tezlikdan foydalanadi.
Host xotirasi
- Tezkor rejim: boshqa dasturlar deyarli ishlamayotganda jami 256 GiB xotira mutlaq minimum hisoblanadi; 320 GB yoki undan ko‘p tavsiya etiladi. Docker xotira cheklovlaridan foydalanilsa, kamida
230gajrating. - Aniq rejim: 128 GiB minimum, 160 GB yoki undan ko‘p tavsiya etiladi.
CPU va saqlash qurilmasi
- Tezkor rejim uchun AVX2, FMA va F16C qo‘llab-quvvatlanadigan x86-64 CPU talab qilinadi.
- O‘lchangan tezkor rejim ko‘rsatkichlariga erishish uchun taxminan 24 ta jismoniy yadro va sakkiz kanalli DDR4 yoki undan yaxshiroq xotira tavsiya etiladi.
- Checkpoint diskda taxminan 117 GiB yoki 125.3 GB joy egallaydi.
- Model yuklanish vaqtini qisqartirish uchun NVMe saqlash qurilmasi tavsiya etiladi.
- Hujjatlashtirilgan sozlash uchun Docker, NVIDIA Container Toolkit va Hugging Face CLI kerak bo‘ladi.
Docker yordamida serverni o‘rnating va ishga tushiring
1-qadam: Checkpoint’ni yuklab oling
Mahalliy katalogga mahkamlangan 3.05-bpw checkpoint’ni yuklab oling:
hf download turboderp/GLM-5.3-Flash-exl3 \
--revision 3.05bpw \
--local-dir /data/GLM-5.3-Flash-exl3-3.05bpw
Buning o‘rniga /models manziliga bo‘sh katalogni mount qilishingiz mumkin. Agar config.json mavjud bo‘lmasa, container sozlangan checkpoint’ni shu katalogga yuklab oladi.
2-qadam: Tezkor rejimni ishga tushiring
Quyidagi buyruq serverni GPU 0’da ishga tushiradi va uni 30000-portda e’lon qiladi. Unda oqimli yetkazib berishdagi tuzatish mavjud image digest’i ishlatiladi.
docker run -d \
--name glm53 \
--gpus '"device=0"' \
--ulimit memlock=-1 \
--shm-size 16g \
-p 30000:30000 \
-v /data/GLM-5.3-Flash-exl3-3.05bpw:/models \
ghcr.io/0xsero/glm53-flash-offload@sha256:bb633b0bcb85573ad40b6c408af5e1036ae062c593e42479f4e4d2ab521e551d
--ulimit memlock=-1 sozlamasi tavsiya etiladi, chunki server katta hajmdagi xost xotirasini band qilib qo‘yadi. Nashr qilingan image o‘lchangan drayverda bu sozlamasiz ham ishga tushdi, ammo bunday holat har bir xostda kuzatilishiga kafolat yo‘q.
3-qadam: Ishga tushishni kuzatish
docker logs -f glm53
loaded in ... s iborasini o‘z ichiga olgan xabarni kuting. Hujjatlarda ko‘rsatilgan tizimda ishga tushish kesh va xost sharoitlariga qarab taxminan ikki-uch daqiqa davom etadi.
4-qadam: Ishlash holatini tasdiqlash
curl -s http://localhost:30000/health
Aniq rejimda ishga tushirish
Natijalar mosligini ustuvor qilish va xost xotirasi sarfini kamaytirish uchun -e GLM53_MODE=exact parametrini qo‘shing:
docker run -d \
--name glm53-exact \
--gpus '"device=0"' \
--ulimit memlock=-1 \
--shm-size 16g \
-p 30000:30000 \
-e GLM53_MODE=exact \
-v /data/GLM-5.3-Flash-exl3-3.05bpw:/models \
ghcr.io/0xsero/glm53-flash-offload@sha256:bb633b0bcb85573ad40b6c408af5e1036ae062c593e42479f4e4d2ab521e551d
Tezkor va aniq misollarni bir vaqtning o‘zida bir xil portda ishga tushirmang. Rejimlarni almashtirishdan oldin birinchi konteynerni to‘xtating va o‘chiring:
docker rm -f glm53
API’dan asosiy foydalanish
Chat yakunlanishini yuborish
curl -s http://localhost:30000/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"glm-5.3-flash","messages":[{"role":"user","content":"Explain zero-copy model offloading."}],"max_tokens":512}'
Standart taqdim etiladigan model nomi glm-5.3-flash. Aniq sozlanmagan bo‘lsa, max_tokens kichik belgilangan qiymat bilan cheklanmaydi, balki qolgan kontekst hajmiga teng bo‘ladi.
Fikrlashni o‘chirish
GLM mulohazalari reasoning_content ichida qaytariladi. So‘rov uchun fikrlashni o‘chirish uchun chat shabloni parametrini yuboring:
curl -s http://localhost:30000/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"glm-5.3-flash","messages":[{"role":"user","content":"Reply with one sentence."}],"chat_template_kwargs":{"enable_thinking":false},"max_tokens":128}'
Javobni oqim ko‘rinishida olish
curl -N http://localhost:30000/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"glm-5.3-flash","messages":[{"role":"user","content":"Write a short explanation of mixture-of-experts models."}],"stream":true,"max_tokens":512}'
Yuqorida ko‘rsatilgan bb633b0b... dayjestidan foydalaning. Eski 1159044a... image to‘liq tezlikda generatsiya qilgan, ammo oqim hodisalarini taxminan yarim tezlikda yetkazib, oxirida yig‘ilib qolgan ma’lumotlarni birdan yuborgan.
Mavjud modellar ro‘yxatini ko‘rish
curl -s http://localhost:30000/v1/models
Ishlash statistikalarini tekshirish
curl -s http://localhost:30000/stats
Statistika endpointi ekspert keshi mos kelishi haqidagi ma’lumotlar va CPU darajasi hisoblagichlarini o‘z ichiga oladi. Qo‘shimcha endpointlar: /v1/completions, /server_info hamda SGLang shaklidagi /generate va /tokenize yo‘llari.
Joylashtirish faqat matn bilan ishlaydi. Checkpoint tarkibidagi ko‘rish minorasi yuklanmaydi.
OpenAI uslubidagi vositalardan foydalanish
Chat endpointi tools maydonini qabul qiladi. GLM ichki <tool_call> formatida ishlab chiqargan vosita ifodalari javobda OpenAI bilan mos tool_calls formatiga aylantiriladi. Shu sababli mijoz ilovalari odatiy vosita chaqirish siklidan foydalanishi mumkin: vosita ta’riflarini yuborish, yordamchining vosita chaqirig‘ini tekshirish, funksiyani bajarish va vosita natijasini boshqa xabar sifatida qayta yuborish.
Kontekst va server argumentlarini sozlash
Image nomidan keyin joylashtirilgan argumentlar server buyrug‘iga qo‘shiladi va oxirgi qiymat ustunlik qiladi. Masalan, 65,536 tokenli KV keshidan foydalanish uchun:
docker run -d \
--name glm53-64k \
--gpus '"device=0"' \
--ulimit memlock=-1 \
--shm-size 16g \
-p 30000:30000 \
-v /data/GLM-5.3-Flash-exl3-3.05bpw:/models \
ghcr.io/0xsero/glm53-flash-offload@sha256:bb633b0bcb85573ad40b6c408af5e1036ae062c593e42479f4e4d2ab521e551d \
-cs 65536
Kichikroq KV keshi ko‘proq ekspert keshi slotlari uchun joy qoldirishi mumkin. Nashr qilingan benchmark konfiguratsiyasida 131,072 tokenli KV keshi, sakkizta maksimal batch hajmi va 8,192 tokenli bo‘lak hajmi ishlatilgan.
Docker’siz o‘rnatish
Mahalliy o‘rnatish uchun maqsadli GPU uchun yig‘ilgan exllamav3 1.5.1 kerak. Loyiha klonidan kengaytmalar o‘rnatuvchisini ishga tushiring, so‘ng repository va model yo‘llari o‘rnatilgan holda taqdim etilgan entrypointni ishga tushiring:
scripts/install.sh
GLM53_ROOT=$PWD \
GLM53_MODEL_DIR=/path/to/model \
docker/entrypoint.sh
O‘rnatuvchi loyihaning maxsus kengaytmalarini yig‘adi. Docker eng takrorlanuvchan yo‘l bo‘lib qoladi, chunki u CUDA, PyTorch, Triton, SGLang, exllamav3, loyiha commitini va sinovdan o‘tgan server konfiguratsiyasini aniq belgilaydi.
Sifat va unumdorlikni tekshirish
Ma’lumotnoma panelini baholash
Repository klonidan standart kutubxonaga asoslangan, faqat benchmark mijozi bilan ishlang:
python3 bench/score_ref_panel.py \
--url http://127.0.0.1:30000 \
--panel reference/glm-5.3-flash-exl3-ref-panel.json \
--out score.json
Teacher-forced paneli tezkor va aniq rejimlarning ikkalasida ham top-1 moslik uchun 1.0000 va KL uchun 0 qiymatlarini qaytarishi kerak. Ushbu panel prefilling yoki teacher-forced yo‘lini baholaydi va tezkor rejimdagi autoregressiv dekodlash aniq ekanini tasdiqlamaydi.
Tezlik sinovini ishga tushirish
python3 bench/sweep.py \
--url http://127.0.0.1:30000 \
--card rtx-3090-24gb/glm-5.3-flash-offload \
--template glm \
--config "bb633b0b fast" \
--prefill 8192 32768 \
--conc 1 2 4 \
--reps 3 \
--dec-reps 2 \
--no-early-exit \
--out sweep.json
Striming yetkazilishini tekshirish
python3 bench/stream_rate.py --url http://127.0.0.1:30000
Muvaffaqiyatli natijada javobning taxminan yarmi oxirgi katta paketda kelishi o‘rniga, matn bir tekisda kelishi kerak.
Ilg‘or sozlash
CPU darajasini o‘lchamlash
Odatiy holatda GLM53_CT_CPUS=auto har bir fizik yadro uchun bitta mantiqiy CPU tanlaydi va operatsion tizim hamda GPU’ni boshqaradigan Python oqimi uchun dastlabki ikkita fizik yadroni bo‘sh qoldiradi. O‘lchangan 24 yadroli xostda bu 2 dan 23 gacha bo‘lgan CPU’lar va 22 ta ishchi oqimga olib keldi.
Aniq taqsimot uchun quyidagiga o‘xshash qiymatlarni belgilang:
-e GLM53_CT_CPUS=2-23 \
-e GLM53_CT_THREADS=22
CPU xarajat modeli 22 ta oqim bilan har bir ekspert uchun 0,104 millisekund sifatida o‘lchangan GLM53_CT_B qiymatidan foydalanadi. N ta ishchi oqim uchun README bu qiymatni 0.104 x 22 / N orqali baholashni tavsiya qiladi. Masalan, ikkita yadro bo‘sh qoldirilgan 16 yadroli xost 14 ta ishchi oqim va taxminan 0,16 qiymatidan foydalanadi.
Taxminan 12 tadan kam fizik yadro bo‘lsa, keshga tushmagan so‘rovlarning aksariyati PCIe yo‘liga qaytishi kutiladi va unumdorlik aniq rejimga yaqinlashadi. Bunday vaziyatda aniq rejim yaxshiroq tanlov bo‘lishi mumkin.
CPU darajasidagi xotira tartibini boshqarish
GLM53_CT_SWZ=1 CPU darajasini ekspertlarning bloklar bo‘yicha alohida nusxasidan foydalanishga majbur qiladi. Bu o‘lchangan tezkor konfiguratsiya bo‘lib, RAM sarfini taxminan 114,2 GB ga oshiradi. Uni 0 ga o‘rnatish CPU darajasiga pinned asosiy nusxani bevosita o‘qish imkonini beradi va xotira sarfini sezilarli kamaytiradi, biroq loyiha CPU ekspert yadrosi benchmarki taxminan 40% sekinlashishini bildiradi. Bu sozlama uchun to‘liq jarayon unumdorligi o‘lchanmagan.
Kesh zaxiralarini sozlash
GLM53_EC_RESERVE_GB ekspert keshi ajratilgandan keyin VRAM’ni bo‘sh qoldiradi. Standart qiymatlar tezkor rejimda 1,5 GB, aniq rejimda esa 1,0 GB. Uzoq prefill jarayonlarida xotira yetishmasa, tezkor rejim zaxirasini 1,5 GB holatida qoldiring.
GLM53_EC_ELASTIC_GB standart bo‘yicha 10 GB. Kesh xotirasining bu qismi prefill aktivatsiyalari va staging uchun bo‘shatilishi, keyin esa decode uchun qayta egallanishi mumkin. GLM53_EC_STAGE_GB har bir staging buferi uchun standart 2,6 GB qiymatiga ega; ustma-ust ishlash uchun ikkita buferdan foydalaniladi.
Kattaroq GPU’lardan foydalanish
Ekspert keshi model yuklangani va sozlangan zaxira ajratilgandan keyin mavjud VRAM asosida o‘z hajmini belgilaydi. Shu sababli 32 GB yoki 48 GB kartaga ko‘proq ekspert slotlari beriladi, bu esa keshga tushish darajasini oshirib, decode unumdorligini yaxshilashi kerak. README’da kattaroq kartalar natijalari keltirilmagan.
RTX 4090 tarkibidagi sm_86 build bilan ishlashi mumkin, ammo bu o‘lchanmagan. Blackwell uchun quyidagicha qayta build qilish talab etiladi:
TORCH_CUDA_ARCH_LIST="8.6;12.0"
Boshqa arxitekturada yangi Triton pin’i ham zarur bo‘lishi mumkin. Agar shunday pin yaratilsa, reference paneli top-1 1.0000 va KL 0 bo‘lib qolishini tekshiring.
Triton’ning aniq tanlovlarini himoyalash
Image KDA linear-attention prefill yadrosi tanlovlarini data/triton_pin_exact.json orqali belgilab qo‘yadi. Triton’ga boshqa konfiguratsiyalarni tanlashga ruxsat berish suzuvchi nuqta yaxlitlashini o‘zgartirishi mumkin. Reference’ga teng prefill xatti-harakati muhim bo‘lsa, GLM53_TRITON_PIN ni standart qiymatida qoldiring.
Offloading jarayoni qanday ishlaydi
- Yo‘naltirilgan ekspertlarni pinned xost xotirasiga yuklash. Har bir qatlam aniq o‘lchamdagi pinned arena oladi, exllamav3 ekspert ko‘rsatkichlari esa CUDA UVA aliaslariga murojaat qiladi.
- VRAM’da elastik CLOCK keshini to‘ldirish. Router tanlovlari takrorlanishlardan tozalanadi, keshdagi mosliklar belgilanadi va keshga kiritiladigan kesh-mos kelmasliklar uchun qurbonlar tanlanadi.
- Keshda yo‘q ekspertlarni PCIe orqali o‘qish. Exllamav3 yadrolari pinned xost ko‘rinishiga sinxron xost nusxalashsiz murojaat qila oladi.
- Uzoq prefill jarayonlarini staging qilish. Har bir qatlamdagi tanlovlar soni yetarlicha katta bo‘lsa, yo‘q ekspertlar oldingi qatlam hisoblanayotgan paytda bir qatlam oldindan staging buferiga nusxalanadi.
- Tezkor rejimda decode uchun tanlangan kesh-mos kelmasliklarni ajratish. Xarajat modeli iliqroq kesh-mos kelmasliklarni zero-copy GPU bajarilishiga, tanlangan sovuq kesh-mos kelmasliklarni esa CPU darajasiga yuboradi.
- CPU va GPU natijalarini birlashtirish. CPU o‘z ishini pinned mapped xotira orqali e’lon qiladi, GPU esa xost sinxronizatsiyasi o‘rniga qurilma tomonidagi flag’ni kutgach, hosil bo‘lgan FP32 qisman natijani qo‘shadi.
Foydalanish bo‘yicha ogohlantirishlar
- Decode natijasi standart exllamav3 bilan mos bo‘lishi kerak bo‘lsa,
GLM53_MODE=exactdan foydalaning. - Striming kechikishi muhim bo‘lsa, eski
sha256:1159044a...image’dan foydalanmang. Hujjatlarda ko‘rsatilgansha256:bb633b0b...digest’dan foydalaning. - Tezkor rejim hozirda xost RAM’da ekspertlarning ikkita nusxasini saqlaydi. Konteynerni ishga tushirishdan oldin yetarli xotira mavjudligini tekshiring.
- Sekinroq PCIe ulanishlarida o‘lchangan RTX 3090 unumdorligini kutmang. Decode tezligi kesh-mos kelmaslik trafigiga sezgir.
- Kontekst hajmi, kesh zaxirasi, parallellik yoki staging sozlamalarini o‘zgartirganda
/stats, tizim xotirasi va GPU xotirasini kuzating. - Server faqat matn bilan ishlaydi; bu deployment’da rasm kiritish qo‘llab-quvvatlanmaydi.
Xulosa
glm53-flash-offload pinned xost xotirasi, zero-copy PCIe o‘qishlari, elastik VRAM keshi, bosqichma-bosqich prefill uzatishlari va ixtiyoriy AVX2 CPU darajasini birlashtirib, noodatiy katta mixture-of-experts checkpoint’ini bitta 24 GB GPU’da amaliy qiladi. Pinned Docker image’dan boshlang, natija aniqligi uchun exact rejimini yoki unumdorlik uchun fast rejimini tanlang, so‘ng kesh yoki CPU sozlamalarini moslashtirishdan oldin o‘rnatmani kiritilgan sifat, tezlik va striming tekshiruvlari bilan tasdiqlang.
