
Umumiy ma’lumot
2x DGX Spark uchun GLM-5.3 Flash EXL3 — GLM-5.3 Flash modelining ikki NVIDIA GB10 tizimida 4 bpw EXL3/TR3 kvantlashini taqdim etish uchun mo‘ljallangan deployment retsepti va vLLM overlay’idir. U 8888-portda OpenAI bilan mos API ochadi va modelni GLM-5.3-Flash-EXL3 identifikatori ostida taqdim etadi.
Retsept tensor parallelizmidan foydalanadi: har bir mashinada bittadan rank ishlaydi. Unda EXL3 marshrutlangan ekspertlari, native sm_121a yadrolari, fp8 sparse-MLA KV keshi, CUDA grafiklari va yettita draft token bilan DFlash2 spekulyativ dekodlashi birlashtirilgan.
Standart ravishda ishlatiladigan checkpoint — Mia-AiLab/GLM-5.3-Flash-EXL3-TR3-4bpw. Bu ko‘rsatilgan Brandon Music snapshot’ining ommaviy, baytma-bayt bir xil nusxasidir. U 120 ta shard bo‘ylab taxminan 164 GiB ma’lumotni o‘z ichiga oladi. Model repository’sining o‘z litsenziyasi mavjud, serving skriptlari va overlay esa MIT litsenziyasi ostida.
Nima uchun overlay zarur
Standart ARM64 GLM-5.3 vLLM image’i ushbu checkpoint’ni yuklay oladi, biroq birinchi forward pass vaqtida ishlamay qoladi, chunki GLM-5.3 Flash NoPE MLA’dan foydalanadi, mavjud SM12x sparse-MLA backend’i esa boshqa packed geometriyani kutadi. Overlay 512 o‘lchamli NoPE latent’ni FLASHINFER_MLA_SPARSE_SM120 talab qiladigan geometriyaga to‘ldiradi, bunda QK dot product o‘zgarmaydi.
Shuningdek, u ishlaydigan EXL3 kvantlash usulini ro‘yxatdan o‘tkazadi. Bu marshrutlangan ekspertlarni BF16’ga yoyish o‘rniga ularni packed trellis, SUH, SVH va MCG ko‘rinishida saqlaydi. Fused path yoqilganda, har bir qatlamda bitta exllamav3_ext.exl3_moe launch ishlatiladi.
Overlay qo‘shimcha ravishda DFlash2 uchun GLM’ga xos integratsiyani taqdim etadi. U EAGLE3 yordamchi hidden-state yozib olishni, target MLA KV slot’larini ulashadigan draft sliding-window attention’ni va spekulyativ draft blokidagi no-causal attention’ni o‘z ichiga oladi.
Asosiy imkoniyatlar
- OpenAI bilan mos xizmat: vLLM head node’da
/v1/chat/completionsva tegishli endpoint’larni taqdim etadi. - Ikki tugunli tensor parallelizmi: deployment’da
--nnodes 2va--tensor-parallel-size 2ishlatiladi. - Ixcham EXL3 og‘irliklar: 4 bpw checkpoint’ni yuklab olish hajmi taxminan 164 GiB, ko‘rsatilgan sifat panelida esa 176 GB deb qayd etilgan.
- DFlash2 spekulyativ dekodlashi: standart draft modeli
incoai/GLM-5.3-Flash-DFlash2,k=7bilan ishlaydi. - Uzun kontekst: standart maksimal model uzunligi 900,000 token bo‘lib, hujjatlashtirilgan xotira konfiguratsiyasida 982,612 token sifatida qayd etilgan fp8 MLA pool tomonidan ta’minlanadi.
- Multimodal qo‘llab-quvvatlash: rasm va video kiritish yoqilgan; har bir prompt uchun standart limit to‘rtta rasm va bitta videoni tashkil etadi.
- Tool va reasoning parsing: launcher avtomatik tool tanlash hamda GLM bilan mos tool-call va reasoning parser’larini yoqadi.
- Prefix caching: tegishli hash’lar keshda saqlanib turganida, block’ga mos prefix’lardan qayta foydalanish mumkin.
- Refusal-direction ablation’ining ixtiyoriy rejimi:
ABLIT=1yuklash vaqtida tanlangan native BF16 output-projection og‘irliklariga xotirada tahrir kiritadi.
Uskuna va dasturiy ta’minot talablari
Ushbu retsept hujjatlashtirilgan CX7 fabric orqali ulangan ikkita NVIDIA GB10 DGX Spark sinfidagi tizim uchun maxsus ishlab chiqilgan. Bu umumiy maqsadli bitta GPU deployment’i emas.
- Dastlabki sozlash uchun har bir node’da taxminan 180 GiB bo‘sh xotiraga ega ikkita NVIDIA GB10 tizimi.
- Ikkala tizimda ham
sudotalab qilmaydigan Docker. - Head node’dan worker’ga parolsiz SSH ulanishi.
- Head node’da o‘rnatilgan
hfyokihuggingface-cli,curlvarsync. - Ikkala mashinada to‘g‘ri CX7 tarmoq interfeyslari va RDMA qurilmalari.
- 120 shard’li checkpoint hamda taxminan 2.3 GiB hajmdagi DFlash2 modelini sig‘dira oladigan Hugging Face kesh joylashuvi.
Physical kabel ulanishi farq qilmasa, repository’dagi CX7 interfeysi va HCA sozlamalarini o‘zgartirmang. README’da NCCL
10.0.0.xloopback alias’laridan foydalana olmasligi va fabric pin’lari noto‘g‘ri bo‘lsa,ncclCommInitRankvaqtida osilib qolishi mumkinligi haqida ogohlantirilgan.
Deployment’ni o‘rnatish va sozlash
1. Repository’ni klonlash
git clone https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks.git
cd GLM-5.3-Flash-EXL3-2x-DGX-Sparks2. Muhit faylini yaratish
cp .env.example .envAgar mashinalar retseptdagi standart manzillar yoki account nomlaridan foydalanmasa, .env faylini tahrirlang. Eng muhim sozlamalar:
- Head node va vLLM master uchun
HEAD_IP=10.0.0.1. - Ikkinchi Spark uchun
WORKER_IP=10.0.0.2. - Tugunlardagi SSH account’lari farq qilsa,
WORKER_USER. - Worker’ning home katalogi yoki Hugging Face kesh joylashuvi farq qilsa,
WORKER_HOME. - API tinglovchisi uchun
PORT=8888.
Launcher .env mavjud bo‘lmasa, uni avtomatik ravishda .env.example asosida yaratadi. Buyruqdan oldin bevosita berilgan qiymatlar fayldagi qiymatlardan ustun turadi.
3. Og‘irliklarni ixtiyoriy ravishda oldindan joylashtirish
./download.shBu buyruq EXL3 checkpoint’i va DFlash2 modelini head node’ning Hugging Face keshiga yuklab oladi. U Docker’ni ishga tushirmaydi, worker’ga ulanmaydi va fayllarni sinxronlashtirmaydi. Undan taxminan 164 GiB hajmdagi modelni worker tayyor bo‘lishidan oldin yuklab olishni yakunlash uchun foydalaning.
Keshdagi fayllarni aniq yangilash uchun quyidagini ishga tushiring:
REFRESH_WEIGHTS=1 ./download.shOrtiqcha yangilashdan saqlaning. download.sh va start.sh skriptlarining ikkalasi ham allaqachon to‘liq yuklangan repozitoriylarni o‘tkazib yuboradi.
4. Ikkala rank va API'ni ishga tushirish
./start.shIshga tushirish skripti quyidagi ketma-ketlikni bajaradi:
- Ikkala tugunda Docker, SSH va mavjud disk maydonini tekshiradi.
- Head tugunida ommaviy
ghcr.io/miaai-lab/glm-5.3-flash-2x-dgx-sparks:exl3obrazini yuklab oladi. - Digest o‘zgargan bo‘lsa, konteyner obrazini worker tuguniga uzatadi.
- Yetishmayotgan model fayllarini head tugunidagi Hugging Face keshiga yuklab oladi.
- Keshni
rsyncyordamida worker tuguniga sinxronlaydi. - Worker tugunida 1-rankni headless rejimda ishga tushiradi.
- Head tugunida 0-rank va OpenAI bilan mos API'ni ishga tushiradi.
- Modelni yuklash va qizdirish tugaguncha health endpoint'ini tekshiradi.
Tayyorlikning standart kutish vaqti 3 600 soniyani tashkil etadi, chunki og‘irliklarni yuklash va CUDA graflarini yozib olish ancha vaqt olishi mumkin.
5. Holat va jurnallarni tekshirish
./start.sh status
./start.sh logs
./start.sh logs workerIkkala konteynerni quyidagicha to‘xtating:
./start.sh stopShuningdek, ./stop.sh dan foydalanishingiz mumkin.
Oddiy chat so‘rovini yuborish
Head tugunida asosiy API URL manzili http://127.0.0.1:8888/v1. Hujjatlarda ko‘rsatilgan LAN manzillaridan foydalanib, boshqa mashinalar http://10.0.0.1:8888/v1 manziliga murojaat qilishi mumkin.
curl -s http://127.0.0.1:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [
{"role": "user", "content": "Explain tensor parallelism briefly."}
],
"chat_template_kwargs": {
"enable_thinking": false
}
}'So‘rovdagi model qiymati xizmat ko‘rsatilayotgan nomga mos kelishi kerak; standart nom GLM-5.3-Flash-EXL3. Fikrlash sukut bo‘yicha yoqilgan. Uni o‘chirish uchun yuqoridagi kabi JSON so‘rovining yuqori darajasiga chat_template_kwargs ni joylashtiring.
Xom HTTP orqali ichma-ich joylashgan literal
extra_bodyobyektini yubormang. OpenAI Python SDK'sidaextra_bodySDK opsiyasi bo‘lib, uning tarkibi yuqori darajadagi so‘rovga qo‘shiladi.
Checkpoint'ning generatsiya konfiguratsiyasi temperature=1.0 va top_p=0.95 qiymatlarini berishi mumkin. Boshqacha xatti-harakat kerak bo‘lsa, tanlash parametrlarini har bir so‘rovda belgilang.
Standart ish vaqti muhitini tushunish
Joylashtirish standartlari ataylab muvofiqlashtirilgan. Bitta komponentni o‘zgartirish yadrolar kombinatsiyasini yaroqsiz holga keltirishi yoki spekulyativ qabul qilish darajasini pasaytirishi mumkin.
- Og‘irliklar:
Mia-AiLab/GLM-5.3-Flash-EXL3-TR3-4bpw; mirror mavjud bo‘lmasa yoki to‘liq bo‘lmasa, Brandon Music repozitoriyasiga o‘tiladi. - Parallellik: multiprocessing executor yordamida ikkita tugun va tensor-parallel o‘lchami ikki.
- Kvantlash:
exl3; packed routed expertlar hamda zich, umumiy expert, attention, embedding va chiqish kallagi og‘irliklari native formatda. - Maqsadli KV keshi:
fp8, ichkarida packedfp8_ds_mlasifatida ifodalanadi. - Spekulyatsiya: DFlash2, yettita spekulyativ token va draft tensor parallelligi birga o‘rnatilgan.
- Draft KV keshi: avtomatik tanlanadi; natijada maqsadli modelning MLA layout'i o‘rniga zich draft modeli uchun BF16 ishlatiladi.
- Attention: maqsadli model uchun sparse MLA, DFlash2 draft attention uchun esa avtomatik tanlanadigan
FLASH_ATTN. - Kontekst:
MAX_MODEL_LEN=900000. - Bir vaqtdagi so‘rovlar:
MAX_NUM_SEQS=4. - Prefill:
MAX_NUM_BATCHED_TOKENS=1024. - Xotiradan foydalanish:
GPU_MEM_UTIL=0.87.
Spekulyativ dekodlash rejimlarini almashtirish
DFlash2 standart rejim bo‘lib, incoai/GLM-5.3-Flash-DFlash2 dan foydalanadi. Ikki spekulyativ token bilan checkpoint'ning MTP yo‘liga qaytish uchun quyidagicha qayta ishga tushiring:
SPEC_METHOD=mtp ./start.sh restartMuhit SPEC_METHOD=none ni ham qo‘llab-quvvatlaydi. DFlash2 uchun draft tensor parallelligining standart qiymati birga teng; bu kichik draft modelini 0-rankda ushlab turadi va har bir draft bosqichida CX7 orqali aloqa qilish zaruratini yo‘q qiladi.
DFlash2 uchun TRITON_ATTN ni majburan yoqmang. README o‘lchovlariga ko‘ra, bu backend draft bloki ichida attention'ni causal holatga keltirgan va keyingi spekulyativ pozitsiyalarda qabul qilish darajasining keskin pasayishiga sabab bo‘lgan. Draft attention'ni belgilanmagan holda qoldiring, shunda SM121 FLASH_ATTN ni tanlaydi.
KV keshi va uzun kontekst konfiguratsiyasi
Maqsadli KV keshi fp8 bo‘lib qolishi kerak. Ushbu arxitekturada sparse-MLA yadrosi packed fp8_ds_mla ni qabul qiladi; BF16 mos keluvchi sparse yadroga ega emas, NVFP4 KV yadrolari esa sparse MLA emas, zich MHA uchun qo‘llanadi.
DFlash2, vision qo‘llab-quvvatlashi, 0.87 xotira foydalanish koeffitsiyenti va 900 000 maksimal model uzunligi bilan README fp8 MLA uchun taxminan 15.67 GiB ishlatadigan 982 612 tokenlik pool haqida xabar beradi. Bu bitta to‘liq 900 000 tokenlik so‘rov sig‘imining taxminan 1.09 baravarini ta’minlaydi. Hujjatlarda ko‘rsatilgan sozlamada native bir million tokenlik konfiguratsiya hali ham ajratilmaydi.
Ataylab ish vaqti o‘zgarishini sinamayotgan bo‘lsangiz, quyidagi sozlamalarni saqlang:
KV_CACHE_DTYPE=fp8
GPU_MEM_UTIL=0.87
MAX_MODEL_LEN=900000
MAX_NUM_BATCHED_TOKENS=1024
SKIP_MM_PROFILING=1
LIMIT_MM={"image":4,"video":1}SKIP_MM_PROFILING=1 muhim, chunki maksimal hajmdagi rasm va video dummy kiritmalarini profillash yagona xotirani tugatishi mumkin. README shuningdek, batch tokenlar limitini 8 192 gacha oshirish uzun kontekstli ishlash vaqtida GB10 indexer top-k yo‘lida ortiqcha yuklanishga olib kelishini ogohlantiradi.
Prefiks keshi qanday ishlaydi
Prefiks keshlash yoqilgan, ammo OpenAI API holatni saqlamaydi. Mijoz har bir navbatda to‘liq suhbat tarixini qayta yuborishi kerak. vLLM yuborilgan prefiksni xeshlaydi va ular hali mavjud bo‘lsa, keshlangan bloklardan qayta foydalanishi mumkin.
- Hujjatlashtirilgan MLA kesh menejeri bo‘yicha hit sifatida faqat blokka mos tokenlar hisoblanadi.
MAX_NUM_SEQS=4bir vaqtning o‘zida to‘rtta generatsiyaga ruxsat beradi; u to‘rtta doimiy chat sessiyasini band qilmaydi.- Faol bo‘lmagan suhbatlar keshda qolishi kafolatlanmaydi.
- Bir suhbatning aktivatsiyalari boshqa suhbat bilan aralashtirilmaydi.
- Boshqa ish yuklamasi uning prefiksini chiqarib yuborsa, eski chat uchun yangi prefill talab qilinishi mumkin.
README dagi jonli test 7,760 tokenli davomiy so‘rovdan 3,584 tokenni qayta ishlatdi, ya’ni promptning taxminan 46 foizi. Prefiks keshlashni doimiy sessiya xotirasi emas, balki imkoniyatga bog‘liq tezlashtirish sifatida ko‘ring.
Decode unumdorligini o‘lchash
Repoda oqimli decode va izchillik tekshiruvlari uchun tests/bench_decode.py mavjud. Strukturaviy sanash testini quyidagicha ishga tushiring:
python3 tests/bench_decode.py \
--phase structured \
--structured \
--runs 5 \
--max-tokens 400 \
--skip-coherence \
--out /tmp/glm53-structured.jsonNasriy xesh-xarita tushuntirishi testini quyidagicha ishga tushiring:
python3 tests/bench_decode.py \
--phase prose \
--runs 5 \
--max-tokens 400 \
--skip-coherence \
--out /tmp/glm53-prose.jsonREADME da hujjatlashtirilgan, qizdirilgan va bo‘sh KV protokoli sharoitida strukturaviy ish yuklamasi bitta parallellikda sekundiga 62.9 token, ikkita parallellikda agregat sekundiga 103.3 token va to‘rtta parallellikda agregat sekundiga 146.5 token tezlikka erishdi. Unumdorlik spekulyativ qabul qilishga kuchli bog‘liq: laboratoriya medianasi strukturaviy chiqish uchun sekundiga 61.7 token, nasr uchun esa 26.9 token bo‘ldi. Taxminan 60,000–100,000 ta keshlangan tokenli aralash yoki uzun kontekst testlarida sekundiga 24–27 token qayd etilgan.
Bu raqamlar README dagi muayyan ikki-GB10 konfiguratsiyasi, prompt turlari, nol harorat konfiguratsiyasi, o‘chirilgan fikrlash, DFlash2 k=7 va 400 tokenli generatsiyalarni ifodalaydi. Ularni universal o‘tkazuvchanlik kafolati sifatida talqin qilmaslik kerak.
Refuz yo‘nalishini ixtiyoriy ablyatsiya qilish
Repo EXL3 chekpointini qayta yozmasdan yoki qayta kvantlamasdan, og‘irliklarni yuklash vaqtida refuz yo‘nalishi ablyatsiyasini qo‘llashi mumkin. Uni quyidagicha yoqing:
ABLIT=1 ./start.sh restart
./start.sh logs | grep ablitStandart retsept 15–45-qatlamlardagi har bir mahalliy BF16 self_attn.o_proj ni tahrirlaydi. 0–14-qatlamlar xavfsizlik tayanchlari sifatida o‘zgartirilmaydi. Standart masshtab ABLIT_ALPHA=3.0; uni 1.0 ga o‘rnatish berilgan yo‘nalish bo‘ylab komponentni olib tashlaydigan oddiy proyeksiyani qo‘llaydi.
Foydali boshqaruvlar:
ABLIT=0yoki qiymat belgilanmagan bo‘lsa, standart og‘irliklar o‘zgarishsiz qoldiriladi.ABLIT_DIRECTION=dealigne’lon qilingan standart yo‘nalishdan foydalanadi.ABLIT_LAYERS=15-45tahrirlanadigan, ikkala chegara ham kiradigan diapazonni belgilaydi.ABLIT_ALPHA=3.0proyeksiya masshtabini belgilaydi.ABLIT_INCLUDE_MTP=1MTP ishlatilganda chekpointdagi MTP blokini ham kiritadi.
README dagi KLD sifat natijalari ablyatsiyasiz o‘lchangan. Uni yoqish refuz xatti-harakatini o‘zgartiradi va izchillik yoki spekulyativ qabul qilishga ta’sir qilishi mumkin, chunki DFlash2 draft modeli o‘zgarmaydi, nishon chiqishlari esa o‘zgaradi. Agar izchillik yomonlashsa, README avval ABLIT_ALPHA ni pasaytirishni tavsiya qiladi.
Ilg‘or ishga tushirish jarayonlari
Ikkala mashinada ham image va model keshi mavjud bo‘lgach, takroriy uzatish ishlarini o‘tkazib yuborishingiz mumkin:
SKIP_DOWNLOAD=1 SKIP_SYNC=1 ./start.shMahalliy konteyner image’ini saqlab qolish va barcha pull, yuklab olish hamda sinxronlashlarni o‘tkazib yuborish uchun:
SKIP_PULL=1 SKIP_DOWNLOAD=1 SKIP_SYNC=1 ./start.sh restartOmmaviy image’dan foydalanish o‘rniga joriy repodan overlay’ni qayta qurish uchun:
BUILD=1 SKIP_DOWNLOAD=1 SKIP_SYNC=1 ./start.sh restartDockerfile’ni to‘g‘ridan-to‘g‘ri ham qurishingiz mumkin:
docker build -t glm53-flash-sm121:local .Ishga tushirish skripti odatda image’ni worker’ga yuborishdan oldin GPU overlay o‘z-o‘zini tekshirishini bajaradi. SKIP_OVERLAY_VERIFY=1 ni faqat ushbu tekshiruvni ataylab chetlab o‘tmoqchi bo‘lsangiz o‘rnating.
Muhim konfiguratsiya ogohlantirishlari
--moe-backend marlinparametrini bermang. Bu joylashtirish EXL3 og‘irliklari va o‘zining packed expert usulidan foydalanadi.- Nishon KV keshini NVFP4 yoki BF16 ga o‘rnatmang.
KV_CACHE_DTYPE=fp8holatida qoldiring. - Spekulyativ draft attention’ni
TRITON_ATTNga mahkamlamang. - Image’ni eski
glm53-flash-sm121:v8NVFP4/Ray joylashtirishiga almashtirmang. - Tensor parallelligi, tugunlar soni, CX7 pinlari yoki
USE_HOST_NCCLni o‘zboshimchalik bilan o‘zgartirmang. Ular ikki tugunli retseptning ajralmas qismidir. - Hugging Face chekpoint keshini o‘chirmang yoki qayta kvantlamang, agar to‘liq modelni qayta yuklab olishni mo‘ljallamagan bo‘lsangiz.
- Birlashtirilgan xotira ishlatilishini hisobga olmasdan multimodal profiling himoyalarini o‘chirmang.
ABLIT_DIRECTIONni yashirin o‘lchami tekshirilmagan boshqa chekpoint vektoriga yo‘naltirmang.
Muammolarni bartaraf etish
Xizmat hech qachon sog‘lom holatga o‘tmaydi
Ikkala logni ./start.sh logs va ./start.sh logs worker yordamida tekshiring. Parolsiz SSH, mavjud disk maydoni, Docker ruxsatlari, keshning to‘liqligi va CX7 interfeys nomlarini tekshiring. Dastlabki og‘irlik yuklanishi va grafikni olish sekin kechadi, shuning uchun loglardagi jarayonni ko‘rib chiqmaguningizcha standart tayyorlik taymauti tugashiga yo‘l qo‘ymang.
Rank ishga tushirilishi vaqtida NCCL osilib qoladi
HEAD_CX7_IF, WORKER_CX7_IF, HEAD_CX7_IB va WORKER_CX7_IB ni tekshiring. Hujjatlarda ko‘rsatilgan standart qiymatlar laboratoriyadagi jismoniy portlarga bog‘langan va kabellash tizimingiz boshqacha bo‘lsa, ularni moslashtirish kerak bo‘lishi mumkin.
Worker GHCR’ga kira olmayapti
Worker’ga GHCR’ga to‘g‘ridan-to‘g‘ri kirish talab etilmaydi. Head ommaviy image’ni yuklab olib, uni SSH orqali uzatadi. Agar head anonim so‘rovlar chekloviga duch kelsa, GHCR_USER va GHCR_TOKEN ni sozlang.
Speculative decoding kutilmaganda sekin ishlayapti
SPEC_METHOD=dflash, DFLASH_TOKENS=7 ekanini va draft attention TRITON_ATTN ga majburan o‘rnatilmaganini tasdiqlang. Shuningdek, speculative ishlash tezligi chiqish turiga qarab farq qilishini unutmang: yuqori darajada tuzilgan ketma-ketliklarda qabul qilish darajasi cheklanmagan nasriy matnga qaraganda ancha yuqori bo‘lishi mumkin.
Xulosa
Ushbu loyiha bir juft NVIDIA GB10 tizimini ixcham EXL3 weight’lari, fp8 sparse-MLA keshlash va DFlash2 speculative decoding yordamida ikki rank’li, OpenAI bilan mos GLM-5.3 Flash serveriga aylantiradi. Eng tezkor yo‘l — taqdim etilgan network, KV, attention va quantization standart qiymatlarini saqlab qolish, ./start.sh orqali ishga tushirish hamda deployment’ni health endpoint’i, chat API, loglar va qo‘shilgan decode benchmark’lari orqali tekshirish.
