
সারসংক্ষেপ
এই প্রকল্পটি RadixArk/Qwen3.8-Flash-Next-NVFP4-কে SGLang ব্যবহার করে পরিবেশনের জন্য একটি প্রোডাকশন-উপযোগী ডিপ্লয়মেন্ট রেসিপি। মডেলটি প্রায় 176-বিলিয়ন প্যারামিটারের, 135 GB আকারের, NVFP4-কোয়ান্টাইজড mixture-of-experts মডেল।
সরবরাহ করা start.sh স্ক্রিপ্টটি TP=2 টেনসর প্যারালেলিজম ব্যবহার করে মডেলটিকে দুটি NVIDIA DGX Spark সিস্টেমে বিতরণ করে। নোড দুটি সরাসরি সংযুক্ত ConnectX-7 200 Gb RoCEv2 লিংকের মাধ্যমে যোগাযোগ করে। চালু হলে হেড নোডটি 0.0.0.0:8888-এ একটি OpenAI-সামঞ্জস্যপূর্ণ API প্রকাশ করে।
এই রেসিপি শুধু একটি লঞ্চার নয়। এটি ওয়েট ডাউনলোড ও যাচাই করে, ওয়ার্কারে সেগুলো সিঙ্ক্রোনাইজ করে, উভয় নোডে একটি প্যাচ করা কনটেইনার ইমেজ তৈরি করে, ক্লাস্টার চালু করে এবং API প্রস্তুত হওয়া পর্যন্ত অপেক্ষা করে। এটি idempotent হিসেবে ডিজাইন করা, তাই পুনরায় চালালে বাধাগ্রস্ত ডাউনলোড চালিয়ে যেতে, ক্যাশ পুনর্ব্যবহার করতে এবং পুরোনো কনটেইনার প্রতিস্থাপন করতে পারে।
রেসিপিটি যা সরবরাহ করে
- দুই-নোড টেনসর প্যারালেল সার্ভিং: একটি DGX Spark-এ rank 0 এবং SGLang রাউটার চলে, আর দ্বিতীয়টিতে rank 1 চলে।
- OpenAI-সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট: API চ্যাট, কমপ্লিশন, reasoning আউটপুট, tool-call পার্সিং এবং টেক্সটের সঙ্গে ছবি ইনপুট সমর্থন করে।
- দীর্ঘ কনটেক্সট: ডিফল্ট কনটেক্সট দৈর্ঘ্য
900000টোকেন, যা মডেলের 262,144-টোকেন নেটিভ কনটেক্সট থেকে YaRN স্কেলিং ব্যবহার করে। - NEXTN স্পেকুলেটিভ ডিকোডিং: ডিফল্ট স্পেকুলেটিভ সেটিংস
3/1/4, উভয় নোডেই CUDA-graph ডিকোড চালু থাকে। - SM121 সামঞ্জস্য: বিল্ডে Qwen Sparse Attention পাথের জন্য একটি Triton fallback প্রয়োগ করা হয়েছে, যা অন্যথায় DGX Spark-এ কম্পাইল হতে ব্যর্থ হয়।
- অপারেশনাল কমান্ড: স্ক্রিপ্টে preflight পরীক্ষা, ডাউনলোড, লঞ্চ, বন্ধ করা, স্ট্যাটাস, লগ এবং smoke test অন্তর্ভুক্ত রয়েছে।
README অনুযায়ী, পরীক্ষিত দুই-নোড ক্লাস্টারে একটি decode stream-এর জন্য প্রতি সেকেন্ডে 64.4 টোকেন এবং দুটি stream-এ সম্মিলিতভাবে প্রতি সেকেন্ডে 116.8 টোকেন পাওয়া গেছে। চারটি stream-এ সম্মিলিত throughput ছিল প্রতি সেকেন্ডে 114.1 টোকেন।
SM121 কার্নেল প্যাচ কেন প্রয়োজন
Qwen4Exp আর্কিটেকচারটি Qwen Sparse Attention backend-এর মাধ্যমে attention পরিচালনা করে। এর flash-attention resolver প্রথমে প্রচলিত FA2 ব্যবহার করতে চায় এবং তা না হলে flash-attn-4 CuTe DSL ইন্টারফেস ব্যবহার করে। DGX Spark-এর SM121 আর্কিটেকচারে এই fallback কম্পাইলের সময় MLIR layout-congruence ত্রুটিতে ব্যর্থ হয়।
রিপোজিটরিটি SM121-সামঞ্জস্যপূর্ণ Triton attention fallback-সহ একটি derivative SGLang image তৈরি করে এই boot blocker সমাধান করে।
উৎপন্ন .patch/ build context-এ qsa_fa_fallback.py রয়েছে, যা মডেলের QSA call contract-এর জন্য তৈরি FlashDecoding-ধাঁচের variable-length kernel। এটি grouped-query attention, 256 পর্যন্ত head dimension এবং online softmax সমর্থন করে। এটি ডিভাইসে cu_seqlens-ও পড়ে, ফলে backend তার sequence table পুনর্লিখলেও CUDA-graph replay কার্যকর থাকে।
Docker build চলাকালে রেসিপিটি qwen_sparse_attn_backend.py প্যাচ করে, যাতে is_sm100_supported() false হলে Triton fallback নির্বাচন করা হয়। তাই সমর্থিত B100 এবং B200 datacenter GPU-তে стандарт পাথ অক্ষত থাকে।
প্রয়োজনীয় হার্ডওয়্যার ও সফটওয়্যার
ক্লাস্টার হার্ডওয়্যার
- GB10 GPU, SM121 আর্কিটেকচার এবং প্রতিটিতে 128 GB unified memory-সহ দুটি NVIDIA DGX Spark সিস্টেম।
- কোনো সুইচ ছাড়াই দুই মেশিনের মধ্যে সরাসরি সংযুক্ত ConnectX-7 পোর্ট।
- উভয় নোডে সক্রিয় সংশ্লিষ্ট RoCE ইন্টারফেস, যেমন একটি নোডে
rocep1s0f1/enp1s0f1np1এবং অন্যটিতেrocep1s0f0/enp1s0f0np0। - প্রায় 135 GB checkpoint, কনটেইনার ইমেজ, ক্যাশ এবং অস্থায়ী build data সংরক্ষণের জন্য পর্যাপ্ত স্টোরেজ।
হেড-নোড সফটওয়্যার
- Docker।
- Hugging Face
hfCLI। - Checkpoint অ্যাক্সেসে authentication প্রয়োজন হলে shell environment-এ একটি Hugging Face token।
- হেড নোড থেকে ওয়ার্কারে passwordless SSH অ্যাক্সেস।
হেড নোডে নিচের কমান্ড দিয়ে Hugging Face CLI ইনস্টল করুন:
pip install hfডিফল্টভাবে, spark2 নামের একটি SSH alias-এর মাধ্যমে ওয়ার্কারকে চিহ্নিত করা হয়। ওয়ার্কার লগইন ডিফল্টভাবে হেড নোডে start.sh চালাতে ব্যবহৃত একই username ব্যবহার করে। এই অনুমানগুলো .env-এ পরিবর্তন করা যায়।
দুই-নোড ক্লাস্টার কনফিগার করুন
হেড নোডে রিপোজিটরি clone করুন, তার ডিরেক্টরিতে প্রবেশ করুন এবং আপনার স্থানীয় configuration file তৈরি করুন:
git clone <this-repo>
cd <this-repo>
cp .env.example .env.env সম্পাদনা করে অন্তত head RoCE IP, worker RoCE IP এবং SSH destination নিশ্চিত করুন। ডিফল্টগুলো নিম্নলিখিত private fabric address প্রত্যাশা করে:
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 variable-গুলোর অগ্রাধিকার .env-এর মানের চেয়ে বেশি।
প্রত্যাশিত টপোলজি
ক্লায়েন্টরা 8888 পোর্টে হেড নোডের API-তে সংযুক্ত হয়। হেড নোডে rank 0, SGLang server এবং router চলে। rank 1 ওয়ার্কারে চলে। NCCL traffic দুই সিস্টেমের মধ্যকার সরাসরি ConnectX-7 RoCEv2 সংযোগে নির্দিষ্ট করা থাকে।
রেসিপিটি NCCL_NET=IB ব্যবহার করে, InfiniBand-সামঞ্জস্যপূর্ণ RoCE transport চালু করে এবং এই সেটআপের জন্য NVLS ও CUMEM নিষ্ক্রিয় করে। এটি staged host NCCL 2.30.7 build-ও preload করতে পারে। USE_HOST_NCCL=1-এর মাধ্যমে এই আচরণ ডিফল্টভাবে চালু থাকে।
পরিবেশ যাচাই করুন
মডেল ডাউনলোড করার আগে বিল্ট-ইন প্রিফ্লাইট চালান:
./start.sh doctordoctor কমান্ডটি fabric, GPU, RAM, ডিস্কের ধারণক্ষমতা, SSH সংযোগ, পোর্ট এবং deployment-এর সীমাবদ্ধতা পরীক্ষা করে। বড় ডাউনলোড ও image build শুরু করার আগে রিপোর্ট করা নেটওয়ার্ক, authentication, storage বা resource-সংক্রান্ত সমস্যাগুলো সমাধান করুন।
মডেল ডাউনলোড ও সিঙ্ক্রোনাইজ করুন
হেড নোডে checkpoint ডাউনলোড করুন, সেটি যাচাই করুন এবং worker-এ সিঙ্ক্রোনাইজ করুন:
./start.sh downloadডিফল্ট DOWNLOAD_MODE=rsync হেড নোডকে ফাইলগুলো ডাউনলোড করে worker-এ কপি করতে বাধ্য করে। অপারেশনটি পুনরায় চালানো যায়। প্রতিটি মেশিনকে Hugging Face থেকে স্বাধীনভাবে ডাউনলোড করাতে চাইলে সেট করুন:
DOWNLOAD_MODE=directGB10-এ SGLang-এর --load-format dummy অপশন দিয়ে এই মডেল পরীক্ষা করবেন না। repository-এর crash analysis অনুযায়ী, dummy initializer সাময়িকভাবে fp8 parameter-গুলোকে fp16-এ রূপান্তর করে। ফলে মডেলের 51.2 GB fp8 PLE n-gram table সাময়িকভাবে 150 GB-এর বেশি মেমরির চাহিদা তৈরি করতে পারে এবং প্রায় 121.7 GB ব্যবহারযোগ্য unified DRAM থাকা সিস্টেম সম্পূর্ণভাবে freeze করে দিতে পারে।
Patched Image তৈরি করে Serving শুরু করুন
দুই-নোডের deployment চালু করুন:
./start.sh serveএই কমান্ডটি preflight চালায়, weights ও image উপলভ্য আছে কি না নিশ্চিত করে, উভয় নোডে SM121-patched image তৈরি করে, TP2 cluster চালু করে এবং API প্রস্তুত হওয়া পর্যন্ত অপেক্ষা করে। তৈরি হওয়া local image-এর নাম qwen38-flashnext-dspark:local।
প্রাথমিক boot হতে প্রায় দশ মিনিট সময় লাগে, কারণ এতে 135 GB weights লোড করা, JIT compilation এবং CUDA-graph capture অন্তর্ভুক্ত রয়েছে। স্ক্রিপ্টটি ডিফল্টভাবে সর্বোচ্চ WAIT_TIMEOUT_MIN=90 পর্যন্ত অপেক্ষা করে।
প্রথম রান সম্পূর্ণ স্বয়ংক্রিয়ভাবে চালাতে ব্যবহার করুন:
./start.shকোনো subcommand না দিলে স্ক্রিপ্টটি ক্রমানুসারে doctor, download এবং serve চালায়।
একটি সাধারণ Chat Request পাঠান
সার্ভার প্রস্তুত হলে, এর OpenAI-compatible chat endpoint-এ কল করুন:
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 করা হয়। একটি request-এর জন্য 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-এর মাধ্যমে image input সমর্থিত। README নিশ্চিত করে যে সম্মিলিত text ও image input কাজ করছে, যদিও এতে সম্পূর্ণ image request-এর উদাহরণ দেওয়া হয়নি।
একটি OpenAI-Compatible Client সংযুক্ত করুন
Custom OpenAI endpoint সমর্থনকারী application-গুলো নিম্নলিখিত base URL ব্যবহার করতে পারে:
http://127.0.0.1:8888/v1মডেল identifier হলো:
Qwen3.8-Flash-Next-NVFP4Local endpoint request authenticate না করলেও client-এর API key field প্রয়োজন হলে repository-এর উদাহরণে dummy ব্যবহার করা হয়েছে এবং authentication header নিষ্ক্রিয় করা হয়েছে। প্রাসঙ্গিক model capability ও compatibility setting-গুলোর মধ্যে রয়েছে:
- Reasoning সক্রিয়।
- Text ও image input।
900000-token context window।- Sample client configuration-এ সর্বোচ্চ
32768output token। - Output-token field হিসেবে
max_tokens। - Sample compatibility configuration-এ developer-role সমর্থিত নয়।
- Reasoning-effort parameter সমর্থিত নয়।
সার্ভার পরিচালনা করুন
একটি launcher-ই প্রধান administrative command-গুলো সরবরাহ করে:
./start.sh servepreflight check চালায়, image ও weights উপস্থিত আছে কি না নিশ্চিত করে, TP2 চালু করে এবং readiness-এর জন্য অপেক্ষা করে।./start.sh downloadসার্ভার চালু না করে weights ডাউনলোড, যাচাই ও সিঙ্ক্রোনাইজ করে।./start.sh stopউভয় container সরিয়ে দেয় এবং log follower-গুলো বন্ধ করে।./start.sh statusউভয় নোডের container status জানায়।./start.sh logs [N]head ও worker log থেকে শেষ Nটি line দেখায়।./start.sh smokeচলমান API-তে একটি দ্রুত greedy completion পাঠায়।./start.sh doctorসম্পূর্ণ environment ও recipe preflight পুনরায় চালায়।
Startup সমস্যা নির্ণয়ের সময় .serve.log, .sglang.log এবং .sglang-worker.log পরীক্ষা করুন। প্রথমটি launcher output রেকর্ড করে, আর পরের দুটি head ও worker container log ধারণ করে।
GB10 Memory Budget বুঝুন
প্রতিটি DGX Spark CUDA allocation, pinned host memory, Docker এবং operating system-এর মধ্যে ভাগ করা একটি unified physical memory pool প্রকাশ করে। তাই recipe-টি host ও GPU memory-কে স্বাধীন resource হিসেবে বিবেচনা না করে একটি রক্ষণশীল static memory fraction ব্যবহার করে।
প্রতি-নোডের রিপোর্ট করা layout-এ NVFP4 expert, dense, MTP এবং vision weights-এর জন্য প্রায় 62.5 GB; fp8 PLE table-এর জন্য প্রায় 11 GB pinned host memory; প্রায় 956,800 token ধারণকারী 9 GB bf16 KV cache; Mamba/GDN state-এর জন্য প্রায় 3.6 GB; এবং CUDA graph ও NCCL বা cuBLAS workspace-এর জন্য প্রায় 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 logits ওয়ার্কস্পেস তৈরি করে, যার আকার chunk × history-এর সঙ্গে বৃদ্ধি পায়। 4096 chunk size এবং 300,000-token history-তে, সংশ্লিষ্ট gather ও top-k কপিগুলো বিবেচনা করলে এই সাময়িক মেমরি ব্যবহারের জন্য প্রায় 8 থেকে 10 GB প্রয়োজন হতে পারে।
প্রদত্ত মানগুলো ইচ্ছাকৃতভাবে রক্ষণশীল:
MEM_FRACTION_STATIC=0.82
CHUNKED_PREFILL_SIZE=1024
MAMBA_FULL_MEMORY_RATIO=0.3900,000-token context-এর জন্য peak সাময়িক মেমরি এবং উপলব্ধ unified-memory বাজেট প্রোফাইল না করে CHUNKED_PREFILL_SIZE 1024-এর বেশি বাড়াবেন না। রিপোজিটরির প্রতিবেদনে বলা হয়েছে, MEM_FRACTION_STATIC=0.85-এর সঙ্গে 4096 chunk size ব্যবহার করাই মেশিনগুলোকে আটকে দেওয়ার জন্য যথেষ্ট ছিল।
অ্যালোকেটর নিয়ে পরীক্ষা এড়িয়ে চলুন
রেসিপিতে স্পষ্টভাবে PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True সেট না করার পরামর্শ দেওয়া হয়েছে। এই কনফিগারেশনটি ডিপ্লয়মেন্টের জন্য পরীক্ষিত নয় এবং লেখকদের ব্যবহৃত পরিচিতভাবে কার্যকর DGX Spark রেসিপিগুলোতেও ছিল না।
গুরুত্বপূর্ণ টিউনেবল সমন্বয় করুন
.env-এ টিউনেবল সেট করুন অথবা শেলে এক্সপোর্ট করুন। শেলের মান অগ্রাধিকার পায়। যেসব সেটিংয়ে সমন্বয়ের প্রয়োজন হওয়ার সম্ভাবনা সবচেয়ে বেশি:
PORT: ডিফল্ট8888এবং API-কে সব ইন্টারফেসে বাইন্ড করে।CONTEXT_LENGTH: ডিফল্ট900000।MAX_RUNNING_REQUESTS: ডিফল্ট16, যদিও ডিফল্ট অনুপাতে Mamba কনফিগারেশন ব্যবহারিক concurrency-কে 14টি স্লটে সীমাবদ্ধ করে।SPEC_STEPS,SPEC_TOPK, এবংSPEC_DRAFT: NEXTN speculative decoding-এর জন্য যথাক্রমে3,1, এবং4।KERNEL_PATCH: ডিফল্ট1, যাতে SM121 fallback image তৈরি ও ব্যবহার করা হয়।IMAGE: নির্দিষ্ট image সরাসরি ব্যবহার করে এবং patching এড়িয়ে যায়।CPUSET: GB10-এর বড় CPU core-গুলোর জন্য ডিফল্ট5-9,15-19। Pinning নিষ্ক্রিয় করতে এটিকে খালি মানে সেট করুন।EXTRA_ARGS: শেষে অতিরিক্ত SGLang argument যোগ করে, ফলে শেষের মান কার্যকর হয়।
থিংকিং এবং টুল-কল লুপ সামলান
একটি পরিচিত SGLang সমস্যা এমন সেশনকে প্রভাবিত করতে পারে, যেখানে ডিফল্ট thinking, OpenAI tools এবং qwen3_coder tool-call parser একসঙ্গে ব্যবহৃত হয়। সার্ভার বারবার token ID 0 পাঠাতে পারে, যা এই tokenizer ! হিসেবে দেখায়, যতক্ষণ না max_tokens সীমায় পৌঁছায়।
পছন্দনীয় workaround হলো যেসব request-এ tools পাঠানো হয়, শুধু সেগুলোর জন্য thinking নিষ্ক্রিয় করা:
"chat_template_kwargs": {"enable_thinking": false}Tool parser ব্যবহারের সময় সার্ভারজুড়ে thinking নিষ্ক্রিয় করতে deployment বন্ধ করুন এবং override সহ পুনরায় চালু করুন:
./start.sh stop
EXTRA_ARGS='--tool-call-parser qwen3_coder --default-chat-template-kwargs {"enable_thinking":false}' ./start.sh serve.env-এ EXTRA_ARGS আগে থেকেই কনফিগার করা থাকলে, বিদ্যমান সেটিংয়ে অপশনগুলো একত্র করুন। Tools প্রদানকারী একই request-এ thinking আবার সক্রিয় করবেন না। Parser ছাড়া thinking কাজ করতে পারে, তবে tool call-গুলো কাঠামোবদ্ধ message.tool_calls-এর পরিবর্তে সাধারণ content-এর মধ্যে <tool_call> XML হিসেবে প্রদর্শিত হবে। Workaround ব্যবহার করার সময় agent temperature 0.7 বা তার নিচে রাখার পরামর্শও README-তে দেওয়া হয়েছে।
উন্নত নির্ভরযোগ্যতা ও কর্মক্ষমতার টিপস
থ্রুপুটের জন্য speculative decoding ব্যবহার করুন
পরিমাপ করা সেটআপে NEXTN speculative decoding-ই থ্রুপুটের প্রধান চালিকাশক্তি। ডিফল্ট 3/1/4 chain-এ প্রতিটি decode step একবার forward pass-এ চারটি draft token যাচাই করে। পরীক্ষিত cluster-এ দুটি stream-এ aggregate প্রায় 117 token প্রতি সেকেন্ডে সর্বোচ্চ হয়েছিল, এরপর আরও stream অবশিষ্ট মেমরির জন্য প্রতিযোগিতা করায় গতি স্থির হয়ে যায়।
প্রয়োজন হলে determinism বেছে নিন
ডিফল্ট কনফিগারেশনে greedy decoding bit-reproducible নয়। কাছাকাছি-সমতার token-গুলো run ভেদে মাঝে মাঝে পরিবর্তিত হতে পারে, সম্ভবত SM121-এ NVFP4 MoE GEMM-এ floating-point reduction-এর ভিন্নতার কারণে। ধীর হলেও deterministic আচরণের জন্য পুনরায় চালু করুন:
EXTRA_ARGS="--moe-runner-backend triton" ./start.sh serveTileLang warning সঠিকভাবে ব্যাখ্যা করুন
JIT compilation-এর সময় TileLang জানাতে পারে যে Logits(bx, position) একাধিক thread দ্বারা লেখা হচ্ছে। রিপোজিটরি এটিকে false positive হিসেবে চিহ্নিত করেছে, কারণ গণনা করা position-গুলো পরস্পর বিচ্ছিন্ন, যদিও group runtime value হলে checker এই বৈশিষ্ট্য প্রমাণ করতে পারে না। প্রয়োজন হলে PassKey.TL_DISABLE_DATA_RACE_CHECK দিয়ে এটি নীরব করা যায়।
বাহ্যিক অ্যাক্সেস সুরক্ষিত করুন
API 0.0.0.0-এ bind করে, ফলে অনুমোদিত যেকোনো interface-এর মাধ্যমে এটি অ্যাক্সেসযোগ্য হয়। README-তে LAN বা Tailscale client থেকে অ্যাক্সেসের কথা বলা হয়েছে, তবে কোনো authentication layer যোগ করা হয়নি। Endpoint-টি সাধারণভাবে অ্যাক্সেসযোগ্য হওয়া উচিত না হলে উপযুক্ত host firewall, private-network অথবা proxy control প্রয়োগ করুন।
উপসংহার
এই রিপোজিটরিটি একটি কঠিন দুই-নোড স্থাপনাকে পুনরাবৃত্তিযোগ্য ওয়ার্কফ্লোতে রূপান্তর করে। এর প্রধান অবদান হলো SM121-সামঞ্জস্যপূর্ণ Qwen Sparse Attention ফলব্যাক, সতর্কতার সঙ্গে সীমাবদ্ধ GB10 ইউনিফায়েড-মেমরি সেটিংস, সরাসরি RoCEv2 টেনসর প্যারালেলিজম এবং একটি একক idempotent অপারেশনস স্ক্রিপ্টের সমন্বয়।
সরবরাহ করা ডিফল্ট দিয়ে শুরু করুন, স্থাপনার আগে ./start.sh doctor চালান এবং dummy weights, নিষ্ক্রিয় PLE offloading, অতিরিক্ত বড় prefill chunk ও পরীক্ষামূলক allocator সেটিংস এড়িয়ে চলুন। ক্লাস্টার প্রস্তুত হলে, অ্যাপ্লিকেশনগুলো পরিচিত OpenAI-সামঞ্জস্যপূর্ণ chat ও completion ইন্টারফেসের মাধ্যমে স্থানীয় সার্ভার ব্যবহার করতে পারবে।
