مرکزی مواد پر جائیں
اے آئی ٹیوٹوریلز

دو DGX Spark پر Qwen3.8 Flash Next 176B چلائیں

یہ ٹیوٹوریل دکھاتا ہے کہ ریپوزٹری کی سنگل فائل ترکیب استعمال کرتے ہوئے Qwen3.8-Flash-Next-NVFP4 کو دو NVIDIA DGX Spark نوڈز پر کیسے ڈاؤن لوڈ، پیچ اور سرور کیا جائے، جبکہ GB10 کی یونیفائیڈ میموری کی حدود اور ماڈل کی SM121 اسپارس اٹینشن کی ضروریات برقرار رہیں۔

دو DGX Spark پر Qwen3.8 Flash Next 176B چلائیں

جائزہ

یہ پروجیکٹ RadixArk/Qwen3.8-Flash-Next-NVFP4 کو SGLang کے ذریعے چلانے کے لیے ایک پروڈکشن پر مبنی تعیناتی نسخہ ہے۔ یہ ماڈل تقریباً 176 ارب پیرامیٹرز، 135 GB، اور NVFP4 کوانٹائزیشن پر مبنی mixture-of-experts ماڈل ہے۔

فراہم کردہ start.sh اسکرپٹ ماڈل کو دو NVIDIA DGX Spark سسٹمز میں TP=2 کے ساتھ ٹینسر متوازی کاری کے ذریعے تقسیم کرتا ہے۔ نوڈز براہِ راست منسلک ConnectX-7 200 Gb RoCEv2 لنک کے ذریعے مواصلت کرتے ہیں۔ چلنے کے بعد، ہیڈ نوڈ 0.0.0.0:8888 پر OpenAI سے ہم آہنگ API فراہم کرتا ہے۔

یہ نسخہ صرف لانچر نہیں ہے۔ یہ ویٹس ڈاؤن لوڈ اور ان کی تصدیق کرتا ہے، انہیں ورکر کے ساتھ ہم وقت ساز کرتا ہے، دونوں نوڈز پر پیچ شدہ کنٹینر امیج بناتا ہے، کلسٹر شروع کرتا ہے، اور API کے تیار ہونے کا انتظار کرتا ہے۔ اسے idempotent انداز میں ڈیزائن کیا گیا ہے، اس لیے دوبارہ چلانے پر یہ رکا ہوا ڈاؤن لوڈ جاری رکھ سکتا ہے، کیشز دوبارہ استعمال کر سکتا ہے، اور پرانے کنٹینرز کو تبدیل کر سکتا ہے۔

نسخہ کیا فراہم کرتا ہے

  • دو نوڈز پر ٹینسر متوازی سروسنگ: ایک DGX Spark رینک 0 اور SGLang راؤٹر چلاتا ہے، جبکہ دوسرا رینک 1 چلاتا ہے۔
  • OpenAI سے ہم آہنگ اینڈ پوائنٹس: API چیٹ، تکمیل، reasoning آؤٹ پٹ، ٹول کال پارسنگ، اور متن کے ساتھ تصویر کے ان پٹ کو سپورٹ کرتا ہے۔
  • طویل سیاق: ڈیفالٹ سیاق کی لمبائی 900000 ٹوکنز ہے، جو ماڈل کے مقامی 262,144 ٹوکن سیاق سے YaRN اسکیلنگ استعمال کرتی ہے۔
  • NEXTN قیاسی ڈیکوڈنگ: ڈیفالٹ قیاسی ترتیبات 3/1/4 ہیں، اور دونوں نوڈز پر CUDA-graph ڈیکوڈ فعال ہے۔
  • SM121 مطابقت: بلڈ Qwen Sparse Attention پاتھ کے لیے Triton fallback لاگو کرتا ہے، جو بصورتِ دیگر DGX Spark پر compile ہونے میں ناکام ہو جاتا ہے۔
  • آپریشنل کمانڈز: اسکرپٹ میں preflight چیکس، ڈاؤن لوڈ، لانچ، روکنا، اسٹیٹس، لاگز، اور smoke testing شامل ہیں۔

README کے مطابق آزمائے گئے دو نوڈز کے کلسٹر پر ایک decode stream کے لیے 64.4 ٹوکن فی سیکنڈ اور دو streams کے ساتھ مجموعی طور پر 116.8 ٹوکن فی سیکنڈ حاصل ہوئے۔ چار streams پر مجموعی تھروپٹ 114.1 ٹوکن فی سیکنڈ تھا۔

SM121 کرنل پیچ کیوں ضروری ہے

Qwen4Exp architecture توجہ کو Qwen Sparse Attention backend کے ذریعے روٹ کرتا ہے۔ اس کا flash-attention resolver پہلے classic FA2 کو ترجیح دیتا ہے، اور بصورتِ دیگر flash-attn-4 CuTe DSL interface استعمال کرتا ہے۔ DGX Spark کے SM121 architecture پر یہ fallback MLIR layout-congruence error کے ساتھ compilation کے دوران ناکام ہو جاتا ہے۔

ریپوزٹری اس boot blocker کو ایک derivative SGLang image بنا کر حل کرتی ہے، جس میں SM121 سے ہم آہنگ Triton attention fallback شامل ہے۔

تیار کردہ .patch/ build context میں qsa_fa_fallback.py شامل ہے، جو FlashDecoding طرز کا variable-length kernel ہے اور ماڈل کے QSA call contract کے مطابق بنایا گیا ہے۔ یہ grouped-query attention، 256 تک head dimensions، اور online softmax کو سپورٹ کرتا ہے۔ یہ ڈیوائس پر cu_seqlens بھی پڑھتا ہے، جس سے backend کی sequence table کو دوبارہ لکھنے پر CUDA-graph replay درست رہتا ہے۔

Docker build کے دوران نسخہ qwen_sparse_attn_backend.py میں پیچ لگاتا ہے تاکہ جب is_sm100_supported() false ہو تو Triton fallback منتخب کیا جائے۔ اس لیے supported B100 اور B200 datacenter GPUs پر standard path برقرار رہتا ہے۔

ضروری ہارڈویئر اور سافٹ ویئر

کلسٹر ہارڈویئر

  • دو NVIDIA DGX Spark سسٹمز، جن میں GB10 GPUs، SM121 architecture، اور ہر ایک میں 128 GB unified memory ہو۔
  • دونوں مشینوں کے درمیان ConnectX-7 ports براہِ راست منسلک ہوں، بغیر کسی switch کے۔
  • دونوں نوڈز پر متعلقہ RoCE interfaces فعال ہوں، مثلاً ایک نوڈ پر rocep1s0f1/enp1s0f1np1 اور دوسرے پر rocep1s0f0/enp1s0f0np0۔
  • تقریباً 135 GB checkpoint، کنٹینر images، caches، اور عارضی build data کے لیے کافی storage۔

ہیڈ نوڈ کا سافٹ ویئر

  • Docker۔
  • Hugging Face کا hf CLI۔
  • اگر checkpoint تک رسائی کے لیے authentication درکار ہو تو shell environment میں Hugging Face token۔
  • ہیڈ نوڈ سے ورکر تک passwordless SSH access۔

ہیڈ نوڈ پر Hugging Face CLI انسٹال کرنے کے لیے:

pip install hf

ڈیفالٹ طور پر ورکر تک spark2 نامی SSH alias کے ذریعے رسائی کی جاتی ہے۔ ورکر login کا ڈیفالٹ نام وہی username ہے جو ہیڈ نوڈ پر start.sh چلانے کے لیے استعمال ہوتا ہے۔ ان مفروضوں کو .env میں تبدیل کیا جا سکتا ہے۔

دو نوڈز کا کلسٹر ترتیب دیں

ہیڈ نوڈ پر repository clone کریں، اس کی directory میں جائیں، اور اپنی مقامی configuration file بنائیں:

git clone <this-repo>
cd <this-repo>
cp .env.example .env

.env میں کم از کم head RoCE IP، worker RoCE IP، اور SSH destination کی تصدیق کریں۔ ڈیفالٹ درج ذیل private fabric addresses کی توقع کرتے ہیں:

HEAD_CX7_IP=10.0.22.1
WORKER_CX7_IP=10.0.22.2
WORKER_HOST=spark2

اگر ورکر مختلف account استعمال کرتا ہے تو WORKER_USER سیٹ کریں۔ SSH destination پر مکمل اختیار کے لیے WORKER_SSH کو user@host جیسی قدر پر سیٹ کریں۔ Shell environment variables کو .env کی قدروں پر ترجیح حاصل ہے۔

متوقع topology

Clients پورٹ 8888 پر ہیڈ نوڈ کی API سے منسلک ہوتے ہیں۔ ہیڈ رینک 0، SGLang server، اور router چلاتا ہے۔ رینک 1 ورکر پر چلتا ہے۔ NCCL traffic دونوں سسٹمز کے درمیان براہِ راست ConnectX-7 RoCEv2 connection پر مقید ہے۔

نسخہ NCCL_NET=IB استعمال کرتا ہے، InfiniBand سے ہم آہنگ RoCE transport فعال کرتا ہے، اور اس setup کے لیے NVLS اور CUMEM کو غیر فعال کرتا ہے۔ یہ staged host NCCL 2.30.7 build کو preload بھی کر سکتا ہے۔ یہ رویہ USE_HOST_NCCL=1 کے ذریعے ڈیفالٹ طور پر فعال ہے۔

ماحول کی توثیق کریں

ماڈل ڈاؤن لوڈ کرنے سے پہلے بلٹ اِن پری فلائٹ چلائیں:

./start.sh doctor

doctor کمانڈ فیبرک، GPUs، RAM، ڈسک کی گنجائش، SSH کنیکٹیویٹی، پورٹس اور تعیناتی کی پابندیوں کو چیک کرتی ہے۔ بڑی ڈاؤن لوڈ اور امیج بلڈ شروع کرنے سے پہلے رپورٹ کیے گئے نیٹ ورک، توثیق، اسٹوریج یا وسائل سے متعلق مسائل درست کریں۔

ماڈل ڈاؤن لوڈ اور ہم وقت ساز کریں

چیک پوائنٹ کو ہیڈ نوڈ پر ڈاؤن لوڈ کریں، اس کی تصدیق کریں، پھر اسے ورکر سے ہم وقت ساز کریں:

./start.sh download

پہلے سے طے شدہ DOWNLOAD_MODE=rsync کے تحت ہیڈ فائلیں ڈاؤن لوڈ کرتا ہے اور پھر انہیں ورکر پر کاپی کرتا ہے۔ یہ عمل دوبارہ جاری رکھا جا سکتا ہے۔ اگر آپ چاہتے ہیں کہ ہر مشین Hugging Face سے آزادانہ طور پر فائلیں حاصل کرے، تو یہ سیٹ کریں:

DOWNLOAD_MODE=direct

GB10 پر اس ماڈل کو SGLang کے --load-format dummy آپشن کے ساتھ ٹیسٹ نہ کریں۔ ریپوزٹری کے کریش تجزیے کے مطابق، dummy initializer عارضی طور پر fp8 پیرامیٹرز کو fp16 میں تبدیل کرتا ہے۔ نتیجتاً ماڈل کی 51.2 GB fp8 PLE n-gram table عارضی طور پر 150 GB سے زیادہ میموری طلب کر سکتی ہے اور تقریباً 121.7 GB قابلِ استعمال متحدہ DRAM والے سسٹم کو مکمل طور پر منجمد کر سکتی ہے۔

پیچ شدہ امیج بنائیں اور سروس شروع کریں

دو نوڈز والی تعیناتی اس کمانڈ سے شروع کریں:

./start.sh serve

یہ کمانڈ پری فلائٹ چلاتی ہے، تصدیق کرتی ہے کہ وزن اور امیجز دستیاب ہیں، دونوں نوڈز پر SM121-patched امیج بناتی ہے، TP2 کلسٹر شروع کرتی ہے، اور API کے تیار ہونے تک انتظار کرتی ہے۔ تیار کردہ مقامی امیج کا نام qwen38-flashnext-dspark:local ہے۔

ابتدائی بوٹ میں تقریباً دس منٹ لگتے ہیں، کیونکہ اس میں 135 GB وزن لوڈ کرنا، JIT compilation اور CUDA-graph capture شامل ہیں۔ اسکرپٹ پہلے سے طے شدہ طور پر WAIT_TIMEOUT_MIN=90 تک انتظار کی اجازت دیتی ہے۔

پہلی بار مکمل خودکار اجرا کے لیے یہ استعمال کریں:

./start.sh

کسی subcommand کے بغیر اسکرپٹ ترتیب وار doctor، download اور serve چلاتی ہے۔

بنیادی چیٹ درخواست بھیجیں

سرور تیار ہونے کے بعد اس کے OpenAI-compatible چیٹ اینڈ پوائنٹ کو کال کریں:

curl http://127.0.0.1:8888/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "Qwen3.8-Flash-Next-NVFP4",
    "messages": [
      {
        "role": "user",
        "content": "Explain RoCEv2 in one paragraph."
      }
    ]
  }'

Reasoning پہلے سے فعال ہے، اور reasoning content الگ سے stream کیا جاتا ہے۔ کسی ایک درخواست کے لیے thinking غیر فعال کرنے کے لیے JSON body میں chat_template_kwargs شامل کریں:

{
  "model": "Qwen3.8-Flash-Next-NVFP4",
  "messages": [
    {"role": "user", "content": "Summarize tensor parallelism."}
  ],
  "chat_template_kwargs": {
    "enable_thinking": false
  }
}

معیاری OpenAI-compatible image_url content part کے ذریعے تصویری ان پٹ معاونت یافتہ ہے۔ README تصدیق کرتی ہے کہ مشترکہ متنی اور تصویری ان پٹ کام کر رہا ہے، اگرچہ اس میں مکمل تصویری درخواست کی مثال فراہم نہیں کی گئی۔

OpenAI-Compatible کلائنٹ سے جڑیں

وہ ایپلی کیشنز جو حسبِ ضرورت OpenAI endpoints کو سپورٹ کرتی ہیں، درج ذیل base URL استعمال کر سکتی ہیں:

http://127.0.0.1:8888/v1

ماڈل identifier یہ ہے:

Qwen3.8-Flash-Next-NVFP4

اگر کلائنٹ کو API key field درکار ہو، حالانکہ مقامی endpoint درخواستوں کی توثیق نہیں کرتا، تو ریپوزٹری کی مثال dummy استعمال کرتی ہے اور authentication header غیر فعال کرتی ہے۔ متعلقہ ماڈل صلاحیتوں اور compatibility settings میں شامل ہیں:

  • Reasoning فعال ہے۔
  • متنی اور تصویری ان پٹ۔
  • 900000 ٹوکن کی context window۔
  • نمونہ کلائنٹ configuration میں زیادہ سے زیادہ 32768 output tokens۔
  • آؤٹ پٹ ٹوکن کے لیے max_tokens field۔
  • نمونہ compatibility configuration میں developer-role کی معاونت نہیں۔
  • reasoning-effort parameter کی معاونت نہیں۔

سرور چلائیں

واحد launcher بنیادی انتظامی کمانڈز فراہم کرتا ہے:

  • ./start.sh serve پری فلائٹ چیکس انجام دیتی ہے، امیجز اور وزن کی موجودگی یقینی بناتی ہے، TP2 شروع کرتی ہے، اور readiness تک انتظار کرتی ہے۔
  • ./start.sh download سرور شروع کیے بغیر وزن ڈاؤن لوڈ، verify اور synchronize کرتی ہے۔
  • ./start.sh stop دونوں containers کو ہٹاتی ہے اور log followers ختم کرتی ہے۔
  • ./start.sh status دونوں نوڈز پر container status رپورٹ کرتی ہے۔
  • ./start.sh logs [N] ہیڈ اور ورکر logs کی آخری N لائنیں دکھاتی ہے۔
  • ./start.sh smoke چلتی ہوئی API کو فوری greedy completion بھیجتی ہے۔
  • ./start.sh doctor مکمل environment اور recipe preflight دوبارہ چلاتی ہے۔

اسٹارٹ اپ مسائل کی تشخیص کرتے وقت .serve.log، .sglang.log اور .sglang-worker.log کا جائزہ لیں۔ پہلی فائل launcher output ریکارڈ کرتی ہے، جبکہ آخری دو میں ہیڈ اور ورکر container logs شامل ہوتے ہیں۔

GB10 میموری بجٹ سمجھیں

ہر DGX Spark ایک متحدہ physical memory pool فراہم کرتا ہے جسے CUDA allocations، pinned host memory، Docker اور operating system مشترکہ طور پر استعمال کرتے ہیں۔ اسی لیے recipe، host اور GPU memory کو الگ الگ وسائل سمجھنے کے بجائے ایک محتاط static memory fraction استعمال کرتی ہے۔

رپورٹ کردہ فی نوڈ layout میں تقریباً 62.5 GB NVFP4 expert، dense، MTP اور vision weights کے لیے؛ fp8 PLE table کے لیے تقریباً 11 GB pinned host memory؛ تقریباً 956,800 tokens رکھنے والا 9 GB bf16 KV cache؛ Mamba/GDN state کے لیے تقریباً 3.6 GB؛ اور CUDA graphs اور NCCL یا cuBLAS workspaces کے لیے تقریباً 8 GB شامل ہیں۔

نتیجتاً CUDA کو نظر آنے والی الاٹمنٹ تقریباً 95.6 GB ہے، جس میں اضافی کام کے لیے تقریباً 17.5 GB دستیاب ہے۔ پن کی گئی PLE ٹیبل nvidia-smi میں فی پراسیس ڈیوائس الاٹمنٹ کے طور پر نظر نہیں آتی، لیکن یہ پھر بھی اسی فزیکل DRAM کو استعمال کرتی ہے۔ حقیقی گنجائش کا جائزہ لیتے وقت SGLang کی available_gpu_mem لاگ ویلیو یا free -h کے available کالم کی نگرانی کریں۔

PLE آف لوڈنگ فعال رکھیں

GB10 پر --no-ple-offload-embedding شامل نہ کریں۔ SGLang کا خودکار اصول PLE ایمبیڈنگ ٹیبل کو CPU پر آف لوڈ رکھتا ہے۔ اسے اووررائیڈ کرنے سے فی رینک تقریباً 26 GB پن کی گئی ہوسٹ میموری GPU سائیڈ پر رکھی جا سکتی ہے اور مشین اوورکمیٹ ہو سکتی ہے۔

عارضی پری فل ہیڈ روم برقرار رکھیں

QSA انڈیکسر ایک fp32 لاجٹس ورک اسپیس بناتا ہے، جس کا حجم chunk × history کے ساتھ بڑھتا ہے۔ 4096 کے chunk سائز اور 300,000 ٹوکن کی ہسٹری پر، متعلقہ gather اور top-k کاپیوں کو شمار کرنے کے بعد اس عارضی ورک اسپیس کے لیے تقریباً 8 سے 10 GB درکار ہو سکتے ہیں۔

فراہم کردہ قدریں دانستہ طور پر محتاط رکھی گئی ہیں:

MEM_FRACTION_STATIC=0.82
CHUNKED_PREFILL_SIZE=1024
MAMBA_FULL_MEMORY_RATIO=0.3

900,000 ٹوکن کے context کے لیے پروفائلنگ کے ذریعے دستیاب unified-memory بجٹ کے مقابل peak عارضی میموری کی جانچ کیے بغیر CHUNKED_PREFILL_SIZE کو 1024 سے زیادہ نہ کریں۔ ریپوزٹری کے مطابق MEM_FRACTION_STATIC=0.85 کے ساتھ 4096 کا chunk سائز مشینوں کو ناکارہ بنانے کے لیے کافی تھا۔

الوکٹر کے تجربات سے گریز کریں

ترکیب میں واضح طور پر PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True سیٹ کرنے سے منع کیا گیا ہے۔ یہ کنفیگریشن اس تعیناتی کے لیے غیر ثابت شدہ ہے اور مصنفین کی استعمال کردہ معروف طور پر درست DGX Spark ترکیبات میں موجود نہیں تھی۔

اہم ٹیون ایبلز کو ایڈجسٹ کریں

ٹیون ایبلز .env میں سیٹ کریں یا شیل میں انہیں export کریں۔ شیل کی قدریں ترجیح رکھتی ہیں۔ جن ترتیبات میں ایڈجسٹمنٹ کی ضرورت کا سب سے زیادہ امکان ہے، وہ یہ ہیں:

  • PORT: پہلے سے 8888 پر سیٹ ہے اور API کو تمام انٹرفیسز سے bind کرتا ہے۔
  • CONTEXT_LENGTH: پہلے سے 900000 پر سیٹ ہے۔
  • MAX_RUNNING_REQUESTS: پہلے سے 16 پر سیٹ ہے، اگرچہ Mamba کنفیگریشن پہلے سے طے شدہ ratio پر عملی concurrency کو 14 slots تک محدود کرتی ہے۔
  • SPEC_STEPS، SPEC_TOPK، اور SPEC_DRAFT: NEXTN speculative decoding کے لیے بالترتیب 3، 1، اور 4 پر سیٹ ہیں۔
  • KERNEL_PATCH: پہلے سے 1 پر سیٹ ہے تاکہ SM121 fallback image بنائی اور استعمال کی جا سکے۔
  • IMAGE: متعین image براہِ راست استعمال کرتا ہے اور patching چھوڑ دیتا ہے۔
  • CPUSET: GB10 کے بڑے CPU cores کے لیے پہلے سے 5-9,15-19 پر سیٹ ہے۔ pinning غیر فعال کرنے کے لیے اسے خالی value پر سیٹ کریں۔
  • EXTRA_ARGS: آخر میں اضافی SGLang arguments شامل کرتا ہے، جس سے آخری value کے مؤثر ہونے والے overrides کی اجازت ملتی ہے۔

تھنکنگ اور ٹول کال لوپس سنبھالیں

SGLang کا ایک معروف مسئلہ ان سیشنز کو متاثر کر سکتا ہے جو default thinking کو OpenAI tools اور qwen3_coder tool-call parser کے ساتھ ملاتے ہیں۔ سرور بار بار token ID 0 خارج کر سکتا ہے، جسے یہ tokenizer ! کے طور پر دکھاتا ہے، یہاں تک کہ max_tokens تک پہنچ جائے۔

ترجیحی workaround یہ ہے کہ صرف ان requests کے لیے thinking غیر فعال کریں جو tools بھیجتی ہیں:

"chat_template_kwargs": {"enable_thinking": false}

tool parser استعمال کرتے ہوئے سرور کی سطح پر thinking غیر فعال کرنے کے لیے تعیناتی روکیں اور override کے ساتھ دوبارہ شروع کریں:

./start.sh stop
EXTRA_ARGS='--tool-call-parser qwen3_coder --default-chat-template-kwargs {"enable_thinking":false}' ./start.sh serve

اگر EXTRA_ARGS پہلے ہی .env میں کنفیگر ہے تو options کو اسی موجودہ setting میں ضم کریں۔ ایسی request میں دوبارہ thinking فعال نہ کریں جو tools فراہم کرتی ہو۔ parser کے بغیر thinking کام کر سکتی ہے، لیکن tool calls structured message.tool_calls کے بجائے عام content میں <tool_call> XML کے طور پر ظاہر ہوں گی۔ README یہ بھی مشورہ دیتا ہے کہ workaround استعمال کرتے وقت agent temperature کو 0.7 یا اس سے کم رکھا جائے۔

اعلیٰ درجے کی قابلِ اعتماد کارکردگی اور رفتار کی تجاویز

تھروپٹ کے لیے speculative decoding استعمال کریں

NEXTN speculative decoding آزمائشی setup میں تھروپٹ کا بنیادی محرک ہے۔ پہلے سے طے شدہ 3/1/4 chain کے ساتھ ہر decode step ایک forward pass میں چار draft tokens کی تصدیق کرتا ہے۔ آزمائے گئے cluster نے دو streams کے ساتھ تقریباً 117 مجموعی tokens فی سیکنڈ کی بلند ترین رفتار حاصل کی، پھر مزید streams کی وجہ سے باقی memory پر مقابلہ بڑھنے کے ساتھ رفتار plateau ہو گئی۔

ضرورت کے وقت determinism منتخب کریں

default configuration میں greedy decoding bit-reproducible نہیں ہے۔ قریب قریب برابر tokens کبھی کبھار runs کے درمیان تبدیل ہو سکتے ہیں، غالباً SM121 پر floating-point reduction variance کی وجہ سے، جو NVFP4 MoE GEMMs میں پیدا ہوتی ہے۔ سست مگر deterministic رویے کے لیے اسے دوبارہ شروع کریں:

EXTRA_ARGS="--moe-runner-backend triton" ./start.sh serve

TileLang warning کی درست تشریح کریں

JIT compilation کے دوران TileLang رپورٹ کر سکتا ہے کہ Logits(bx, position) متعدد threads کے ذریعے لکھا جا رہا ہے۔ ریپوزٹری اسے false positive قرار دیتی ہے، کیونکہ calculated positions الگ الگ ہیں، اگرچہ جب group runtime value ہو تو checker اس خاصیت کو ثابت نہیں کر سکتا۔ ضرورت پڑنے پر اسے PassKey.TL_DISABLE_DATA_RACE_CHECK کے ذریعے خاموش کیا جا سکتا ہے۔

بیرونی رسائی کو محفوظ بنائیں

API 0.0.0.0 سے bind ہوتی ہے، جس سے یہ ہر مجاز انٹرفیس کے ذریعے قابلِ رسائی ہو جاتی ہے۔ README LAN یا Tailscale clients سے رسائی بیان کرتا ہے، لیکن authentication layer شامل نہیں کرتا۔ جب endpoint کو عمومی طور پر قابلِ رسائی نہیں ہونا چاہیے تو مناسب host firewall، private-network، یا proxy controls نافذ کریں۔

نتیجہ

یہ ریپوزٹری دو نوڈز کی مشکل تعیناتی کو ایک قابلِ تکرار ورک فلو میں تبدیل کرتی ہے۔ اس کی بنیادی خصوصیت SM121 سے مطابقت رکھنے والے Qwen Sparse Attention فال بیک، احتیاط سے محدود کردہ GB10 یونیفائیڈ میموری سیٹنگز، براہِ راست RoCEv2 ٹینسر پیئرل ازم، اور ایک واحد idempotent آپریشنز اسکرپٹ کا امتزاج ہے۔

فراہم کردہ ڈیفالٹس سے آغاز کریں، تعیناتی سے پہلے ./start.sh doctor چلائیں، اور ڈمی ویٹس، غیر فعال PLE آف لوڈنگ، حد سے بڑے prefill چنکس، اور تجرباتی allocator سیٹنگز سے گریز کریں۔ کلسٹر تیار ہونے کے بعد، ایپلیکیشنز مانوس OpenAI-compatible چیٹ اور completion انٹرفیسز کے ذریعے مقامی سرور استعمال کر سکتی ہیں۔