Asosiy kontentga o‘tish
AI qo‘llanmalari

DeepSeek-V4.1-Flash’ni vLLM va Pi yordamida ikkita DGX Spark’da ishga tushirish

Ushbu qo‘llanmada EXL3 kvantlangan DeepSeek-V4.1-Flash checkpointini ikkita NVIDIA DGX Spark tugunida joylashtirish, RoCE tensor parallelligini sozlash, OpenAI bilan mos API’ni tekshirish va modelni Pi kodlash agentiga ulash tushuntiriladi.

DeepSeek-V4.1-Flash’ni vLLM va Pi bilan ikkita DGX Spark’da ishga tushirish

Siz nimalarni yaratasiz

Ushbu loyiha DeepSeek-V4.1-Flash modelini vLLM yordamida ikkita NVIDIA DGX Spark tugunida ishga tushirish uchun skriptlarni taqdim etadi. Tensor parallelizmi tugunlar o‘rtasida QSFP/RoCE ulanishi orqali ishlaydi, bosh tugun esa 8000-portda OpenAI bilan mos API’ni taqdim etadi.

Joylashtirishda 0xSero/DeepSeek-V4.1-Flash-Spark checkpoint’idan foydalaniladi. Marshrutlanadigan backbone ekspertlari o‘rtacha 2.77 bit/og‘irlik ko‘rsatkichi bilan EXL3 trellis ma’lumotlari sifatida kodlangan. Attention, umumiy ekspertlar, routerlar, Engram jadvallari, draft qatlamlari, vision komponentlari, embedding’lar va chiqish qatlami yuqori oqimdagi checkpoint’dan o‘z holicha saqlanadi.

Joylashtirishdan so‘ng modeldan bevosita API orqali foydalanishingiz yoki uni kod yozish va vositalar yordamidagi ish jarayonlari uchun Pi kodlash agentiga ulashingiz mumkin.

Ishlash samaradorligi va imkoniyatlar

README’da tensor parallelizmi, RoCE, FP8 KV keshi, yetti tokenli DSpark spekulyativ dekodlash, diskka asoslangan Engram jadvallari va ikkita bir vaqtdagi ketma-ketlikdan foydalangan holda ikkita DGX Spark GB10 tugunida o‘lchangan natijalar keltirilgan.

  • 8k promptni oldindan to‘ldirish: taxminan sekundiga 2,050 token.
  • 32k promptni oldindan to‘ldirish: taxminan sekundiga 2,061 token.
  • Kodni dekodlash: bitta oqim uchun taxminan sekundiga 39–41 token.
  • Ikki oqimli kod dekodlashi: jami sekundiga 60 token.
  • Nasrni dekodlash: bitta oqim uchun taxminan sekundiga 29 token.
  • Har bir so‘rov uchun maksimal kontekst: 262,144 token.
  • KV kesh havzasi: 2,023,717 token.
  • Vision kiritishi, vosita chaqiruvlari va reasoning: smoke-test muvaffaqiyatli o‘tdi.
  • 175k tokenli kontekstni qayta chaqirish: hisobotdagi oltita laboratoriya tekshiruvining barchasidan o‘tdi.

Birinchi ishga tushirish taxminan 11–13 daqiqa davom etadi, chunki og‘irliklar va EXL3 banklari yuklanadi, kernel’lar kompilyatsiya qilinadi va CUDA grafikalari yozib olinadi.

Talablar

DGX OS ishlayotgan ikkita DGX Spark tuguni kerak bo‘ladi. Ulardan birini API’ni taqdim etuvchi bosh tugun, ikkinchisini esa ishchi tugun sifatida tanlang.

  • Tugunlarni ulovchi QSFP kabeli va yoqilgan RoCE.
  • Har bir tugunda rdma link orqali tekshirilgan kamida bitta ACTIVE holatidagi RDMA porti.
  • Har bir tugun uchun mos fabric tarmog‘ida IPv4 manzili, masalan 10.10.10.13 va 10.10.10.11.
  • Bosh tugundan ishchi tugunga uning fabric manzili orqali parolsiz SSH ulanishi.
  • Ikkala tugunda NVIDIA runtime o‘rnatilgan Docker.
  • Foydalanuvchingiz docker guruhiga a’zo bo‘lishi kerak.
  • Bosh tugunda taxminan 700 GB, ishchi tugunda esa 470 GB bo‘sh NVMe xotira.
  • Ikkala tugunda python3, rsync va curl.
  • Pi ishlaydigan kompyuterda Node.js va npm.

Repository’ni klonlash va ishchi tugunni belgilash

Quyidagi buyruqlarni bosh tugunda bajaring. SSH maqsadini ishchi tugunning fabric manziliga almashtiring.

git clone https://github.com/0xSero/DeepSeek-V4.1-Flash-Two-Sparks
cd DeepSeek-V4.1-Flash-Two-Sparks
export WORKER=user@10.10.10.11

Skriptlar ikkinchi Spark’ga ulanish uchun WORKER o‘zgaruvchisidan foydalanadi. Davom etishdan oldin SSH kaliti orqali autentifikatsiya ishlashiga ishonch hosil qiling.

Checkpoint’ni yuklab olish va tarqatish

Taxminan 462 GB hajmdagi checkpoint’ni bosh tugundagi standart model katalogiga yuklab oling:

scripts/download.sh

Yuklab olish skripti Engram bo‘laklarini ham qayta yig‘adi. Hugging Face alohida fayllarni 50 GB bilan cheklagani sababli, ikkita asl bo‘lak .partNN fayllari sifatida saqlanadi. Skript ularni qayta yig‘adi, oltita asl bo‘lakni sha256-manifest.txt bilan tekshiradi va bo‘lak fayllarini o‘chiradi. Agar bu bo‘laklarni saqlab qolmoqchi bo‘lsangiz, KEEP_PARTS=1 ni o‘rnating.

Tayyor modelni fabric orqali ishchi tugunga nusxalang:

scripts/copy-to-peer.sh

Muqobil ravishda, scripts/download.sh skriptini ishchi tugunda ham bevosita ishga tushirishingiz mumkin. Standart model yo‘li ~/models/DeepSeek-V4.1-Flash-Spark. Agar ishchi tugun boshqa yo‘ldan foydalansa, ishga tushirishdan oldin WORKER_MODEL_DIR ni sozlang.

Serving image’ni yuklab olish

Loyiha EXL3 mixture-of-experts yo‘li va B12X Spark kernel’larini o‘z ichiga olgan vLLM image’idan foydalanadi. Qotirilgan image’ni ikkala tugunga yuklab oling:

docker pull ghcr.io/0xsero/deepseek-v4.1-flash-spark@sha256:5668e35e5ee021da4b9ce88a1964caf0e082e8ca01d81d1d64b6213a55c6add5

Agar image hali mavjud bo‘lmasa, ishga tushirish skripti uni avtomatik yuklab oladi, shuning uchun bu bosqichni ishga tushirish vaqtida ham bajarish mumkin.

Ikkala tensor-parallel rank’ni ishga tushirish

Ikki tugunli serverni bosh tugundan ishga tushiring:

scripts/launch.sh

Launcher faol fabric interfeyslarini aniqlaydi, ~/.dsv41-two-sparks/api_key manzilida API kalitini yaratadi, ikkala tugunda xotira himoyachilarini ishga tushiradi, ishchi tugunda 1-rank’ni va bosh tugunda 0-rank’ni ishga tushiradi. U API mavjud bo‘lguncha kutadi va ishga tushirish uchun 45 daqiqagacha vaqt beradi.

Joylashtirishni tekshirish yoki boshqarish uchun shu skriptdan foydalaning:

scripts/launch.sh status
scripts/launch.sh logs r0
scripts/launch.sh logs r1
scripts/launch.sh stop

Server bosh tugunda lokal ravishda http://127.0.0.1:8000 manzilida tinglaydi. Mijozlar bosh tugunning ulanish mumkin bo‘lgan manzilidan foydalanishi mumkin, rank’lar o‘rtasidagi trafik esa QSFP/RoCE fabric’idan o‘tishi kerak.

Smoke-testlarni ishga tushirish

Matn generatsiyasi, vosita chaqiruvlari va vision kiritishini quyidagi buyruq bilan tekshiring:

python3 scripts/smoke.py http://127.0.0.1:8000

Har bir tekshiruv PASS yoki FAIL natijasini ko‘rsatadi. Ixtiyoriy benchmark’ni ham ishga tushirishingiz mumkin:

python3 scripts/bench.py --out bench.json --conc 1 2

Benchmark chiqish cheklovlarisiz prefill, decode va uzun kontekst tezligini qamrab oladi.

OpenAI bilan mos endpointdan foydalanish

Server quyidagi API ma'lumotlarini taqdim etadi:

  • Asosiy URL: http://<head-ip>:8000/v1
  • Model nomi: deepseek-v4.1-flash
  • Autentifikatsiya: ~/.dsv41-two-sparks/api_key faylidagi bearer token

Masalan, kalitni head tugunidan quyidagicha oling:

ssh <head> cat ~/.dsv41-two-sparks/api_key

Shundan so'ng asosiy URL, model nomi va bearer kalitni sozlash orqali endpointdan OpenAI bilan mos istalgan mijozda foydalanishingiz mumkin.

Pi'ni modelga ulash

Node.js va npm o'rnatilgan mashinada Pi provayderini o'rnating va ro'yxatdan o'tkazing. Buyruq API asosiy URL'ini yakuniy model yo'lisiz qabul qiladi:

pi/install.sh http://<head-ip>:8000/v1

Pi'ni ishga tushiradigan shell'da API kalitini o'rnating:

export DSV41_API_KEY=$(ssh <head> cat ~/.dsv41-two-sparks/api_key)
pi --model dsv41-sparks/deepseek-v4.1-flash

O'rnatuvchi Pi hali PATH ichida bo'lmasa, uni o'rnatadi, so'ng Pi model konfiguratsiyasida faqat dsv41-sparks provayderini qo'shadi yoki almashtiradi. Avval vaqt belgisi qo'yilgan zaxira nusxa yaratiladi, boshqa provayderlar esa o'zgartirilmaydi.

Agar enabledModels ro'yxatidan foydalansangiz, o'rnatuvchi xizmat ko'rsatilayotgan modelni unga qo'shadi. Bu modelni Pi'ning ishga tushirish modeli qilish uchun SET_DEFAULT=1 ni o'rnating.

O'rnatilgan kengaytma ushbu provayder uchun Pi'ning chiqish tokenlari cheklovini olib tashlaydi va javoblarning tabiiy yakunlanishiga imkon beradi. U DSV41_API_KEY ni so'rov vaqtida o'qiydi va kalitni Pi konfiguratsiyasiga yozmaydi.

Standart konfiguratsiyani tushunish

scripts/launch.sh o'lchangan xizmat ko'rsatish konfiguratsiyasini takrorlaydi. Muhim sozlamalar:

  • KV_BYTES=2700000000 bilan FP8 KV keshi.
  • Maksimal kontekst uzunligi: 262144 token.
  • Bir vaqtning o'zida ikkitagacha ketma-ketlik.
  • Maksimal paketlangan tokenlar soni 2048 qilib belgilangan.
  • Yettita qoralama token va moslashuvchan tekshiruvga ega DSpark spekulyativ dekodlashi.
  • Diskka asoslangan Engram jadvallari.
  • B12X attention, linear va MoE yadrolari.
  • ST_EXL3_PREFILL=st bilan EXL3 yo'naltirilgan ekspertlari.
  • FULL_DECODE_ONLY CUDA grafikalari.
  • B12X RoCE one-shot all-reduce va qolgan taqsimlangan amallar uchun RoCE orqali NCCL.
  • Multimodal prompt uchun bitta rasm.
  • deepseek_v41 reasoning va tool-call parserlari.

Ko'pgina sozlamalarni muhit o'zgaruvchilari orqali almashtirish mumkin. Model katalogi MODEL_DIR, worker model katalogi WORKER_MODEL_DIR, doimiy runtime ma'lumotlari esa STATE_DIR orqali boshqariladi. Standart state katalogi: ~/.dsv41-two-sparks.

Launcher modelni /model manziliga faqat o'qish rejimida ulaydi. U EXL3 taqsimlash rejasini state katalogiga ko'chiradi va uning bank yo'llarini ulangan EXL3 kataloglariga qayta yozadi.

Trafikni to'g'ri tarmoqda saqlash

vLLM, NCCL va Gloo jarayonlari Wi-Fi, Ethernet yoki Tailscale interfeyslariga emas, QSFP/RoCE manzillariga ulanishi kerak. Launcher odatda faol RoCE portlarini aniqlaydi va quyidagiga o'xshash o'zgaruvchilarni o'rnatadi:

  • VLLM_HOST_IP
  • NCCL_SOCKET_IFNAME
  • GLOO_SOCKET_IFNAME
  • NCCL_IB_HCA

Avtomatik aniqlash noto'g'ri interfeysni tanlasa, HEAD_IP, WORKER_IP, HEAD_IFNAME, WORKER_IFNAME, HEAD_HCAS yoki WORKER_HCAS ni aniq o'rnating. To'g'ri manzillar va RDMA qurilmalarini aniqlash uchun ip -br a va rdma link buyruqlaridan foydalaning.

Xotirani xavfsiz boshqarish

DGX Spark CPU va GPU o'rtasida 128 GB xotira havzasini bo'lishadi. Mavjud xotira nolga tushsa, host konteynerni to'g'ri yakunlash o'rniga javob bermay qolishi mumkin. Launcher ikkala tugunda ham scripts/memguard.sh ni ishga tushirib, mavjud xotira sozlangan chegaradan pastga tushganda dsv41-r* konteynerlarini to'xtatadi.

Xotira himoyasi jurnalini quyidagi manzilda tekshiring:

~/.dsv41-two-sparks/memguard.log

Standart konfiguratsiyada barqaror holatdagi mavjud xotira taxminan 2–3 GiB sifatida ko'rsatiladi. Himoya ishga tushsa, MEMGUARD_GIB ni oshirishdan oldin KV_BYTES yoki GPU_UTIL ni kamaytiring.

Keng tarqalgan muammolarni bartaraf etish

Ishga tushish sekin

Birinchi ishga tushirish og'irliklar yuklanishi, EXL3 banklari tayyorlanishi, B12X yadrolari kompilyatsiya qilinishi va CUDA grafikalari yozib olinishi davomida taxminan 12 daqiqa olishi mumkin. Yadro keshlari STATE_DIR/cache ichida saqlanadi, shuning uchun keyingi ishga tushirishlar tezroq bo'lishi mumkin.

Engram fayllari yo'q

Agar ishga tushirishda model-00005-of-00006.safetensors kabi fayl yo'qligi haqida xabar berilsa, Engram shardlari qayta birlashtirilmagan bo'lishi mumkin. scripts/download.sh ni yana ishga tushiring. U tugallanmagan ishni davom ettiradi va bajarilgan bosqichlarni o'tkazib yuboradi.

Fabric aniqlash noto'g'ri interfeysni tanlaydi

Manzillarni ip -br a, RDMA holatini esa rdma link orqali tekshiring. Keyin yuqorida ko'rsatilgan head va worker interfeysi, IP hamda HCA o'zgaruvchilarini aniq kiriting.

Yuklab olish sekin

Agar Spark internetga faqat Wi-Fi orqali chiqsa, checkpoint'ni uplinki eng yaxshi bo'lgan tugunda yuklab oling va fabric orqali scripts/copy-to-peer.sh dan foydalaning.

Pi modelni ko'ra olmayapti

DSV41_API_KEY Pi'ni ishga tushiradigan ayni shell'da export qilinganiga ishonch hosil qiling. Modellar ro'yxatini qayta yuklash uchun Pi ichida /model buyrug'ini bajaring.

Pi print rejimida cheksiz kutmoqda

Standart kiritish terminal bo‘lmaganda, pi -p stdin’dan ham o‘qiydi. Skriptlarda stdin’ni /dev/null manzilidan yo‘naltiring:

pi -p < /dev/null

Xulosa

Ushbu repozitoriy DeepSeek-V4.1-Flash’ni ikkita DGX Spark’da ishga tushirish uchun zarur bo‘lgan model, xizmat ko‘rsatish imiji, taqsimlangan ishga tushirish skriptlari, xotirani himoyalash, tekshirish vositalari va Pi integratsiyasini jamlaydi. RoCE tarmog‘ini tayyorlang, checkpoint’ni ikkala tugunga yuklab olib tekshiring, ikkita rank’ni ishga tushiring, smoke-testlarni bajaring, so‘ng mos mijozlar yoki Pi’ni bosh tugunning OpenAI bilan mos endpoint’iga yo‘naltiring.