Umumiy ma’lumot
Ushbu loyiha OpenAI’ga mos API orqali bitta NVIDIA DGX Spark qurilmasida Qwen3.8 Flash Next modeliga xizmat ko‘rsatadi. Unda TensorFold v0.3.6.3, MTP draft head’iga ega MLX 4-bit checkpoint’i hamda generatsiya qilinadigan matnni o‘zgartirmagan holda prompt qayta ishlashni tezlashtirish uchun mo‘ljallangan patch’lar to‘plami ishlatiladi.
Standart konfiguratsiya beshta bir vaqtdagi so‘rovni qo‘llab-quvvatlaydi, bunda har bir so‘rov modelning to‘liq 262,144 tokenlik kontekst oynasidan foydalanadi. Shuningdek, modelning o‘z vision tower’i CUDA’da yuklanadi, shu sababli chat xabarlari tasvir va videolarni o‘z ichiga olishi mumkin.
- API model ID:
Qwen3.8-Flash-Next - Standart endpoint:
http://<spark-address>:8888/v1 - Parallel oqimlar: 5
- Har bir oqim uchun kontekst: 262,144 token
- Umumiy KV pool: 1,310,720 token
- KV cache: sukut bo‘yicha int8
- Kiritish rejimlari: matn, tasvirlar va videolar
Asosiy imkoniyatlar
Uzun kontekstli parallel inferens
TensorFold har bir oqimga o‘zining to‘liq kontekst cache’ini ajratadi. Standart sozlamalarda beshta oqimning har biri 262,144 tokenlik prompt va javob oynasiga ega bo‘ladi. Natijada int8 KV pool taxminan 23.4 GiB xotira egallaydi.
OpenAI’ga mos xizmat ko‘rsatish
Server /v1/models va /v1/chat/completions kabi endpoint’larni taqdim etadi. OpenAI’ga mos mijozlar base URL’ni o‘zgartirish va Qwen3.8-Flash-Next model ID’sini tanlash orqali ulanishi mumkin.
Multimodal promptlar
Foydalanuvchi xabarlari OpenAI uslubidagi image_url va video_url kontent qismlarini o‘z ichiga olishi mumkin. Qo‘llab-quvvatlanadigan tasvir formatlari JPEG, PNG va WebP’ni o‘z ichiga oladi. Videolar MP4, WebM, MOV, MKV yoki FFmpeg dekodlay oladigan boshqa formatda bo‘lishi mumkin.
Patch’langan prompt qayta ishlashi
TensorFold tarkibidagi patch’lar SSD read-ahead, native threaded reads, sparse-attention bloklarini tanlashni yaxshilash, sozlanadigan prompt qismlari, copy drafts, jonli token hisoblagichlari va Flash Next vision qo‘llab-quvvatlashini qo‘shadi. Repository o‘lchovlariga ko‘ra, prompt qayta ishlash taqqoslangan patch’lanmagan versiyaga nisbatan taxminan 1.7 marta tezroq, sinovdan o‘tkazilgan matnli javoblar esa bayt darajasida bir xil qoladi.
Tizim talablari
Repository’ni klonlashdan oldin host tizimni tayyorlang:
- NVIDIA DGX Spark yoki 128 GB unified memory’ga ega boshqa GB10 tizimi.
- Standart konfiguratsiyani ishga tushirish uchun taxminan 115 GiB bo‘sh xotira.
- NVIDIA container runtime’iga ega Docker.
dockerguruhiga tegishli foydalanuvchi hisobi.- Yangi tizimda taxminan 160 GB bo‘sh disk maydoni.
- Ixtiyoriy: tezroq davom ettiriladigan yuklab olishlar uchun Hugging Face
hfCLI. - Ixtiyoriy:
~/.cache/huggingface/tokenichidagi Hugging Face tokeni yokiHF_TOKENmuhit o‘zgaruvchisi.
Standart deployment boshqa jarayonlar deyarli ishlamayotgan DGX Spark uchun mo‘ljallangan. Unified-memory tizimlarda xotirani tugatish odatiy allocation xatosi o‘rniga qurilmaning qotib qolishiga olib kelishi mumkin.
O‘rnatish va birinchi ishga tushirish
1. Repository’ni klonlang
git clone https://github.com/MiaAI-Lab/Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold.git
cd Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold2. Serverni ishga tushiring
./start.shBirinchi ishga tushirish to‘liq sozlashni bajaradi. Mavjud bo‘lsa, tayyor container image’ni yuklab oladi, taxminan 106 GiB hajmdagi checkpoint’ni yuklaydi, uni tekshiradi va GB10 uchun CUDA kernel’larini kompilyatsiya qiladi. Tayyor image taxminan 11 GB, checkpoint esa Hugging Face cache’ida qariyb 114 GB joy egallaydi.
Ishga tushirish vaqtida skript sozlash jarayoni, server loglari, weight yuklanishi va xotira hisob-kitoblarini ko‘rsatadi. Keyin smoke test’ni ishga tushiradi. Muvaffaqiyatli ishga tushirish Qwen3.8-Flash-Next modeli 8888-portda ishlayotganini bildiruvchi xabar bilan yakunlanadi.
README ma’lumotiga ko‘ra, keyingi ishga tushirishlar tugallangan sozlash ishlarini o‘tkazib yuboradi va weight’larni yuklash uchun taxminan 2.5 daqiqa vaqt oladi.
3. Ishga tushirmasdan tayyorlang
Agar hamma narsani oldindan yuklab olib, build qilmoqchi bo‘lsangiz, quyidagini bajaring:
scripts/prepare.shContainer image’ni boshidan qayta build qilish uchun:
scripts/prepare.sh --rebuildTayyorlash skripti Docker, NVIDIA runtime va disk maydonini tekshiradi. Keyin TensorFold image’ini oladi yoki build qiladi, checkpoint’ni Hugging Face cache’iga yuklaydi va modelni tensorfold info orqali tekshiradi.
API’dan asosiy foydalanish
Mavjud modelni tekshirish
curl -s http://<spark-address>:8888/v1/models<spark-address> o‘rniga DGX Spark host nomi yoki IP manzilini kiriting. Spark’ning o‘zidan chaqirganda 127.0.0.1 dan foydalanishingiz mumkin.
Chat completion so‘rovini yuborish
curl -s http://<spark-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "Qwen3.8-Flash-Next",
"messages": [
{
"role": "user",
"content": "Write a Python fibonacci function."
}
],
"max_tokens": 1000
}'Model sukut bo‘yicha javob berishdan oldin fikrlaydi va uning reasoning jarayoni javob tokenlari limitidan foydalanadi. Reasoning va yakuniy javobni sig‘dirish uchun max_tokens qiymatini yetarlicha katta qilib belgilang. Reasoning reasoning_content ichida qaytariladi, yakuniy javob esa content ichida bo‘ladi.
OpenAI’ga mos mijozni ulash
Mijozni quyidagi qiymatlar bilan sozlang:
- Base URL:
http://<spark-address>:8888/v1 - Model:
Qwen3.8-Flash-Next
API oqim uzatishni, tiplashtirilgan vosita chaqiruvlarini, mulohaza yuritish mazmunini, tasvir kiritilishini va video kiritilishini qo‘llab-quvvatlaydi. Massivlar kabi vosita parametrlari mos JSON turlaridan foydalanib qaytariladi.
Tasvirlarni yuborish
Odatiy holatda media ma’lumotlar URL sifatida taqdim etilishi kerak. Quyidagi shell misoli JPEG faylini kodlaydi va modeldan uni tasvirlashni so‘raydi:
IMG=$(base64 -w0 photo.jpg)
curl -s http://<spark-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "Qwen3.8-Flash-Next",
"messages": [{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,'"$IMG"'"
}
},
{
"type": "text",
"text": "What is in this picture?"
}
]
}],
"max_tokens": 2000
}'So‘rov ko‘pi bilan to‘rtta tasvirni o‘z ichiga olishi mumkin. Har bir tasvir hajmi 10 MB gacha, umumiy hajm esa 20 MB gacha bo‘lishi mumkin. Barcha tasvirlar birgalikda ko‘pi bilan 4 096 ta tokendan foydalanishi mumkin. "detail": "low" sozlamasi tasvirni 256 ta token bilan cheklaydi.
Videolarni yuborish
Videolar video_url mazmuniy qismidan foydalanadi:
{
"type": "video_url",
"video_url": {
"url": "data:video/mp4;base64,..."
}
}Har bir so‘rov ko‘pi bilan ikkita videoni o‘z ichiga olishi mumkin. Bitta video hajmi 64 MB gacha, so‘rovning umumiy hajmi 96 MB gacha va tasvirlar davomiyligi bir soatgacha bo‘lishi mumkin. Odatiy holatda server soniyasiga ikki kadrni, videoga taqsimlangan ko‘pi bilan 256 kadrgacha namunalaydi va har bir so‘rov uchun ko‘pi bilan 16 384 ta video tokeniga ruxsat beradi.
Tasvir va video promptlari prefiksni qayta ishlatish uchun saqlanmaydi. Oddiy matnli so‘rovlarga vision funksiyasini yoqish ta’sir qilmaydi.
Ommaviy HTTPS media URL manzillariga ruxsat berish
Odatiy holatda data URL manzillaridan foydalaniladi. Serverga ommaviy HTTPS tasvir va video URL manzillarini yuklashga ruxsat berish uchun uni quyidagi buyruq bilan qayta ishga tushiring:
VISION_URLS=1 ./start.sh restartMasofaviy yuklashni faqat joylashtirishingizning xavfsizlik va tarmoq siyosatiga mos kelganda yoqing.
Faqat matn rejimida ishga tushirish
Faqat matnli xizmatni taqdim etish uchun vision tower’ni o‘chiring:
VISION=0 ./start.sh restartFaqat matn rejimi 0.84 GiB hajmdagi vision tower’ni yuklamaydi va vision yoqilgan odatiy 2 048 qator o‘rniga 4 096 qatorli prompt qismlaridan foydalanadi.
Serverni boshqarish
Odatdagi amallar uchun repository’ning wrapper skriptlaridan foydalaning:
./start.sh restart
./stop.sh
docker logs -f qwen38-flash-next-tf
curl -s http://<spark-address>:8888/health./start.sh restartishlayotgan serverni almashtirishdan oldin sozlama va argumentlarni tekshiradi../stop.shkonteynerni to‘xtatadi va GPU xotirasini bo‘shatadi. Faol so‘rovlar to‘xtatiladi.docker logs -fTensorFold server jurnalini kuzatadi./healthbandlik holati va joriy tokenlar jami haqida ma’lumot beradi.
Agar server allaqachon ishlayotgan bo‘lsa, oddiy ./start.sh uni o‘z holida qoldiradi. systemd kabi jarayon menejeri uchun foreground rejimidan foydalaning:
FOREGROUND=1 ./start.shKontekst, parallellik va KV aniqligini sozlash
Odatiy qiymatlar scripts/config.sh faylida saqlanadi. Ularni muhit o‘zgaruvchilari bilan almashtiring yoki start.sh dan keyin TensorFold flaglarini bering.
Ko‘proq zaxira xotira uchun parallellikni kamaytirish
PARALLEL=4 ./start.sh restartTo‘rtta int8 oqimi 1 048 576 tokenli KV havzasini taqdim etadi va ishga tushirishning taxminiy bahosi 97.7 GiB deb ko‘rsatilgan.
Qisqaroq kontekst oynasidan foydalanish
./start.sh restart --context 131072Qo‘shimcha buyruq qatori argumentlari odatiy qiymatlardan keyin tensorfold serve ga uzatiladi, shuning uchun ular ustuvor hisoblanadi. Mavjud parametrlarni ko‘rish uchun ./start.sh --help buyrug‘ini ishga tushiring.
Boshqa KV kesh turini tanlash
KV_DTYPE bf16, int8 yoki int4 qiymatlarini qabul qiladi:
PARALLEL=6 KV_DTYPE=int4 ./start.sh restartREADME’da int4 chiqishlarni biroz o‘zgartirishi va sifat o‘lchovini taqdim etmasligi qayd etilgan. Loyihaning odatiy muvozanati kerak bo‘lsa, int8’dan foydalaning. Oqimlar sonidan ko‘ra to‘liq aniqlikdagi KV saqlash muhimroq bo‘lsa, bf16’dan foydalaning.
Ishga tushirish himoyasini tushunish
TensorFold o‘z byudjetini mavjud xotiradan RAM hajmining o‘ndan biriga teng xost zaxirasini ayirish orqali hisoblaydi. So‘ralgan konfiguratsiya sig‘masa, og‘irliklar yuklanishidan oldin ishga tushirish rad etiladi va xatoda sig‘ishi kerak bo‘lgan kontekst oynasi ko‘rsatiladi.
Fikrlash va namuna olishni boshqarish
Fikrlash rejimida namuna olishning odatiy qiymatlari: temperature 1.0, top-p 0.95 va top-k 20. So‘rovlar temperature, top_p, top_k va seed qiymatlarini almashtirishi mumkin. 0 qiymatli temperature ochko‘z dekodlashni yoqadi.
Bitta so‘rov uchun fikrlashni o‘chirish
{
"model": "Qwen3.8-Flash-Next",
"messages": [
{"role": "user", "content": "Answer in one sentence."}
],
"chat_template_kwargs": {
"enable_thinking": false
},
"max_tokens": 200
}Mulohaza yuritish darajasini belgilash
{
"chat_template_kwargs": {
"reasoning_effort": "low"
}
}Shablon "xhigh" qiymatini ham qabul qiladi. Mulohaza yuritish darajasi ko‘rsatilmasa, shablon o‘rtacha odatiy qiymatdan foydalanadi. OpenAI uslubidagi yuqori darajadagi reasoning_effort maydoni e’tiborsiz qoldiriladi, shuning uchun uni chat_template_kwargs ichiga joylashtiring.
Ilg‘or unumdorlik bo‘yicha maslahatlar
n-gram jadvallarini SSD’da saqlash
Odatiy PLE_ON_SSD=1 sozlamasi n-gram jadvallarining 29.8 GiB qismini yagona xotiraga joylashtirish o‘rniga SSD’da qoldiradi. Bu KV keshi uchun xotirani saqlab qoladi. Shu sababli odatiy konfiguratsiya uchun tezkor mahalliy xotira muhim.
Prompt qismlari hajmini ehtiyotkorlik bilan sozlash
Vision yoqilganida, TENSORFOLD_PREFILL_ROWS sukut bo‘yicha vision tower uchun joy qoldirish maqsadida 2048 qiymatiga o‘rnatiladi. Faqat matn rejimida sukut bo‘yicha qiymat 4096 ga teng. README ma’lumotlariga ko‘ra, 4 096 qator taxminan 3 000 tokenli promptlarda promptni qayta ishlash tezligini taxminan 2–5% ga oshirishi mumkin, biroq yana taxminan 0.94 GiB xotira talab qiladi.
TENSORFOLD_PREFILL_ROWS=4096 ./start.sh restartBu qiymatni faqat yetarli bo‘sh xotira mavjud bo‘lganda oshiring.
MTP va nusxa qoralamalarini boshqarish
Sukut bo‘yicha MTP konfiguratsiyasi har bir bosqichda ko‘pi bilan oltita qoralama hosil qiladi va qoralama ishonchliligi 60% dan pastga tushishidan oldin zanjirni to‘xtatadi. Nusxa qoralamasi optimallashtirishini TENSORFOLD_MTP_COPY=1 orqali yoqish mumkin va buning uchun kamida ikkita parallel oqim talab qilinadi. U avvalgi prompt matnidan iqtibos keltiradigan yoki uni tahrirlaydigan javoblarni yaxshilash uchun mo‘ljallangan.
So‘rov uchun ketma-ket reference dekodlashni talab qilish
Alohida so‘rov uchun qoralama hosil qilishni chetlab o‘tish va TensorFold’ning bir vaqtda bitta tokenni qayta ishlaydigan reference yo‘lidan foydalanish uchun quyidagini qo‘shing:
{
"draft": false
}Bu spekulyativ dekodlashni ketma-ket reference bilan taqqoslashda foydalidir.
Tayyorlashni majburlash yoki o‘tkazib yuborish
PREPARE=1 ./start.sh restart
PREPARE=0 ./start.sh restart
PULL=0 scripts/prepare.shPREPARE=1qayta ishga tushirishdan oldin tayyorlash tekshiruvini majburan bajaradi.PREPARE=0tayyorlash bosqichini o‘tkazib yuboradi.PULL=0oldindan tayyorlangan registry image’idan foydalanishga urinish o‘rniga image’ni mahalliy ravishda yaratadi.
patches/ ichidagi fayllarni o‘zgartirgandan so‘ng, ushbu patchlar TensorFold tarkibiga kiritilishi uchun image’ni qayta yarating.
Tekshirish va benchmarking
Repository ishga tushirilgan serverga murojaat qiluvchi yordamchi vositalarni o‘z ichiga oladi. Ularning API URL manzili sukut bo‘yicha http://127.0.0.1:8888 ga teng.
tools/bench.py local-test
tools/needle.py
tools/toolcheck.py
tools/visioncheck.pytools/bench.pybir nechta prompt o‘lchamlarini o‘lchaydi va qisqa dekodlash tekshiruvini bajaradi.tools/needle.pytaxminan 195 000 tokenli prompt ichida passphrase’ni yashiradi va uni topishni tekshiradi.tools/toolcheck.pymassiv qiymatli tool parametri JSON massivi sifatida qaytarilishini tekshiradi.tools/visioncheck.pyqizil doira va ko‘k kvadrat tasvirlangan generatsiya qilingan rasmni yuboradi, so‘ng ikkalasi ham tanilganini tekshiradi.
Boshqa qurilmadan tekshirish uchun API_URL ni o‘rnating:
API_URL=http://<spark-address>:8888 tools/bench.py remote-testKutilayotgan unumdorlik
Repository int8 KV keshlash, SSD asosidagi n-gram jadvallari va MTP qoralama hosil qilish yoqilgan bitta DGX Spark qurilmasida quyidagi dekodlash natijalarini bildiradi:
- Bitta so‘rov: sekundiga 62.4 token, birinchi tokengacha 152 ms vaqt.
- Ikki so‘rov: sekundiga jami 90.5 token.
- To‘rtta so‘rov: sekundiga jami 106.7 token.
- Beshta so‘rov: sekundiga jami 119.3 token yoki har bir so‘rov uchun sekundiga 27.0 token.
Qayd etilgan prefill tezligi 8 229 tokenli prompt uchun taxminan sekundiga 2 503 tokendan 131 110 tokenli prompt uchun sekundiga 2 200 tokengacha bo‘lgan oraliqda. Bu ko‘rsatkichlar loyiha o‘lchovlari bo‘lib, kafolat hisoblanmaydi; ular konfiguratsiya, prompt tuzilishi, media kiritmasi, saqlash tizimi va mavjud xotiraga qarab o‘zgarishi mumkin.
Xulosa
Ushbu repository Qwen3.8 Flash Next modelini bitta DGX Spark qurilmasida taqdim etish uchun zarur bo‘lgan model, TensorFold runtime’i, CUDA’ga xos sozlamalar, unumdorlik patchlari va operatsion skriptlarni birlashtiradi. Standart int8, besh oqimli konfiguratsiyadan boshlang, OpenAI bilan mos API orqali xizmatni tekshiring, so‘ng ish yuklamangiz va mavjud xotiraga qarab parallellik, kontekst hajmi, vision va KV aniqligini sozlang.
