এই প্রকল্পের কাজ
এই প্রকল্পটি GLM-5.3-Flash-কে দুটি NVIDIA DGX Spark সিস্টেমে TensorFold v0.5.0 ব্যবহার করে পরিবেশন করে। প্রতিটি Spark একটি ডিস্ট্রিবিউটেড র্যাঙ্ক চালায়, আর প্রথম Spark একটি OpenAI-সামঞ্জস্যপূর্ণ HTTP API-ও হোস্ট করে।
ডিফল্ট কনফিগারেশন চারটি সমসাময়িক অনুরোধ, প্রতি অনুরোধে সর্বোচ্চ 1,048,576 টোকেনের কনটেক্সট উইন্ডো, ছবি ও ভিডিও ইনপুট, টুল কলিং, স্ট্রাকচার্ড আউটপুট, টোকেনাইজেশন এন্ডপয়েন্ট এবং Prometheus মেট্রিক্স সমর্থন করে। দুটি সিস্টেমের মধ্যে যোগাযোগ একটি সরাসরি ConnectX-7 RoCE লিংক ব্যবহার করে।
ডিপ্লয়মেন্টে Mia-AiLab GLM-5.3-Flash EXL3 চেকপয়েন্ট ব্যবহার করা হয়। রাউটেড এক্সপার্টগুলো প্রতি ওজনে আনুমানিক চার বিটে সংরক্ষিত হয়, আর চেকপয়েন্টের অন্যান্য ওজন BF16। সম্পূর্ণ চেকপয়েন্টের আকার আনুমানিক 176 GB।
প্রধান বৈশিষ্ট্য
- OpenAI-সামঞ্জস্যপূর্ণ API: chat completions, completions, responses এবং model-listing এন্ডপয়েন্ট ব্যবহার করুন।
- দীর্ঘ কনটেক্সট: ডিফল্ট FP8 KV কনফিগারেশনে একটি পৃথক অনুরোধের জন্য সর্বোচ্চ 1,048,576টি প্রম্পট ও উত্তরের টোকেন।
- সমসাময়িক ইনফারেন্স: ডিফল্ট DFlash2 drafter ব্যবহার করে একসঙ্গে সর্বোচ্চ চারটি অনুরোধ ডিকোড করুন।
- শেয়ার করা ক্যাশ পুল: সমসাময়িক কথোপকথনগুলো একটি FP8 KV পুল থেকে ব্যবহার করে, যাতে উপলভ্য মেমরির ওপর নির্ভর করে আনুমানিক 2.1 থেকে 2.7 মিলিয়ন টোকেন থাকে।
- মাল্টিমোডাল অনুরোধ: JPEG, PNG, WebP, MP4, WebM, MOV, MKV এবং FFmpeg দিয়ে ডিকোড করা যায় এমন অন্যান্য ভিডিও ইনপুট জমা দিন।
- রিজনিং নিয়ন্ত্রণ: কম, বেশি বা সর্বোচ্চ রিজনিং প্রচেষ্টা নির্বাচন করুন, অথবা কোনো অনুরোধের জন্য চিন্তা করার প্রক্রিয়া নিষ্ক্রিয় করুন।
- এজেন্ট বৈশিষ্ট্য: xgrammar-এর মাধ্যমে টুল কলিং এবং স্কিমা-নিয়ন্ত্রিত স্ট্রাকচার্ড আউটপুট ব্যবহার করুন।
- অপারেশনাল এন্ডপয়েন্ট: স্বাস্থ্য পরীক্ষা করুন, ইনপুট টোকেনাইজ বা ডিটোকেনাইজ করুন এবং Prometheus মেট্রিক্স সংগ্রহ করুন।
- স্বয়ংক্রিয় ডিপ্লয়মেন্ট: একটি কমান্ডে উভয় মেশিন প্রস্তুত হয়, উভয় র্যাঙ্ক চালু হয়, স্মোক টেস্ট সম্পন্ন হয় এবং API ঠিকানা দেখানো হয়।
হার্ডওয়্যার ও সফটওয়্যার প্রয়োজনীয়তা
আপনার দুটি DGX Spark, অথবা দুটি GB10 সিস্টেম প্রয়োজন, প্রতিটিতে 128 GB ইউনিফায়েড মেমরি থাকতে হবে। সার্ভার চালু হওয়ার সময় প্রতিটি GPU-তে আনুমানিক 110 GiB খালি থাকতে হবে, তাই আগে অন্যান্য বড় GPU ওয়ার্কলোড বন্ধ করুন।
নেটওয়ার্কের প্রয়োজনীয়তা
QSFP কেবল দিয়ে ConnectX-7 পোর্টগুলো সংযুক্ত করুন এবং একই ব্যক্তিগত সাবনেটে প্রতিটি প্রান্তে একটি IPv4 ঠিকানা নির্ধারণ করুন। উদাহরণস্বরূপ, হেডে 192.0.2.1/24 এবং worker-এ 192.0.2.2/24 ব্যবহার করা যেতে পারে। ঠিকানাগুলো ping দিয়ে পৌঁছানো সম্ভব হতে হবে এবং একটি RoCE v2 GID উপলভ্য থাকতে হবে।
উভয় CX7 পোর্ট সংযুক্ত ও ঠিকানাযুক্ত থাকলে প্রকল্পটি উভয় রেল ব্যবহার করতে পারে। README-এর পরিমাপ অনুযায়ী, দুটি রেল ব্যবহার করলে একটি প্রম্পট চাঙ্কের all-gather আনুমানিক 1.8 গুণ দ্রুত হয়।
SSH ও সিস্টেমের প্রয়োজনীয়তা
- হেড Spark থেকে worker-এ কী-ভিত্তিক SSH অ্যাক্সেস।
- উভয় সিস্টেমে NVIDIA container runtime-সহ Docker।
- উভয় সিস্টেমে আপনার অ্যাকাউন্ট
dockerগ্রুপে থাকতে হবে। - উভয় সিস্টেমে
rsyncইনস্টল থাকতে হবে। - প্রতিটি Spark-এ আনুমানিক 205 GB ডিস্ক স্পেস।
- ঐচ্ছিকভাবে, হেডে Hugging Face
hfCLI এবং একটি Hugging Face টোকেন।
প্রয়োজন হলে একটি SSH কী তৈরি করুন, worker-এ কপি করুন এবং নন-ইন্টার্যাক্টিভ অ্যাক্সেস যাচাই করুন:
ssh-keygen -t ed25519
ssh-copy-id user@192.0.2.2
ssh -o BatchMode=yes user@192.0.2.2 trueDFlash2 drafter-এর লাইসেন্স CC BY-NC-ND 4.0 এবং এটি শুধুমাত্র অবাণিজ্যিক ব্যবহারের জন্য। DFlash2 ডাউনলোড বা ব্যবহার এড়াতে চাইলে প্রথম সেটআপের আগে চেকপয়েন্টের MTP drafter নির্বাচন করুন।
প্রকল্প ইনস্টল ও কনফিগার করুন
1. হেডে রিপোজিটরি ক্লোন করুন
git clone https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git
cd GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold
cp scripts/local.sh.example scripts/local.shWorker-এর নিজস্ব checkout প্রয়োজন নেই। সেটআপ স্ক্রিপ্টগুলো হেড থেকে প্রয়োজনীয় container image এবং model file স্থানান্তর করে।
2. Worker-এর ঠিকানা নির্ধারণ করুন
scripts/local.sh সম্পাদনা করে WORKER-এ worker-এর SSH target নির্ধারণ করুন:
WORKER=user@192.0.2.2ডিস্ট্রিবিউটেড র্যাঙ্কগুলো worker-এ পৌঁছানোর জন্য ব্যবহৃত রুটের মাধ্যমে যোগাযোগ করে। WORKER অন্য কোনো নেটওয়ার্কের ঠিকানা নির্দেশ করলে worker-এর ব্যক্তিগত CX7 ঠিকানায় FABRIC_PEER নির্ধারণ করুন:
WORKER=user@worker-hostname
FABRIC_PEER=192.0.2.23. প্রয়োজন হলে drafter নির্বাচন করুন
ডিফল্ট হলো DRAFTER=dflash2, যা সর্বোচ্চ চারটি সমসাময়িক অনুরোধের অনুমতি দেয় এবং আনুমানিক 5 থেকে 10 শতাংশ পরিমাপকৃত ডিকোড উন্নতি প্রদান করে। এর পরিবর্তে চেকপয়েন্টের MTP head ব্যবহার করতে প্রথম চালুর আগে এটি কনফিগার করুন:
DRAFTER=mtpMTP DFlash2-এর লাইসেন্স ও ডাউনলোড এড়ায়, তবে ডিফল্টভাবে একবারে একটি অনুরোধ পরিবেশন করে।
4. উভয় র্যাঙ্ক চালু করুন
./start.shপ্রথমবার চালানোর সময় স্ক্রিপ্টটি উভয় সিস্টেম পরীক্ষা করে, আনুমানিক 25 GB-এর container image সংগ্রহ বা তৈরি করে, হেডে চেকপয়েন্ট ও drafter ডাউনলোড করে, সেগুলো worker-এ কপি করে এবং ~/.cache/tensorfold-glm53-এ CUDA kernel কম্পাইল করে।
পরবর্তী চালুগুলোতে সাধারণত প্রতিটি Spark-এ আনুমানিক 80 GiB ওজন লোড করতে দুই থেকে ছয় মিনিট সময় লাগে। Launcher rank 0-এর লগ অনুসরণ করে, লোডিংয়ের অগ্রগতি দেখায়, একটি ডিস্ট্রিবিউটেড স্মোক টেস্ট চালায় এবং 8888 পোর্টে একটি সক্রিয় endpoint দেখায়।
API চালু না করে উভয় সিস্টেম প্রস্তুত করতে চালান:
scripts/prepare.shপরিষ্কারভাবে image পুনর্নির্মাণ করতে ব্যবহার করুন:
scripts/prepare.sh --rebuildআপনার প্রথম API অনুরোধ তৈরি করুন
ডিফল্ট মডেল শনাক্তকারী হলো GLM-5.3-Flash-EXL3, এবং বেস URL হলো http://<head-address>:8888/v1।
উপলভ্য মডেলের তালিকা দেখুন
curl -s http://<head-address>:8888/v1/modelsচ্যাট কমপ্লিশন পাঠান
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [
{"role": "user", "content": "Write a Python fibonacci function."}
],
"max_tokens": 2000
}'ডিফল্টভাবে মডেল উত্তর দেওয়ার আগে চিন্তা করে। যুক্তি reasoning_content-এ ফেরত আসে, আর চূড়ান্ত উত্তর থাকে content-এ। উভয় ধাপের জন্য পর্যাপ্ত আউটপুট টোকেন বরাদ্দ করুন। content খালি থাকলে সম্ভবত মডেল যুক্তি প্রদানের সময়ই আউটপুটের বরাদ্দ শেষ করে ফেলেছে।
যুক্তি ও স্যাম্পলিং নিয়ন্ত্রণ করুন
reasoning_effort-এর মান low, high, অথবা max নির্ধারণ করুন। চিন্তা না করে সরাসরি উত্তর পেতে none ব্যবহার করুন:
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"messages": [{"role": "user", "content": "Summarize TCP in two sentences."}],
"reasoning_effort": "low",
"temperature": 0,
"max_tokens": 1000
}'API temperature, top_p, top_k, min_p, এবং seed-ও গ্রহণ করে। স্পষ্টভাবে seed না দিলে স্যাম্পলার prompt থেকে তার key তৈরি করে, তাই অভিন্ন অনুরোধে একই উত্তর পাওয়া যায়।
ছবি ও ভিডিও পাঠান
ডিফল্টভাবে GLM vision tower rank 0-এ চলে। ব্যবহারকারীর মেসেজে OpenAI-ধাঁচের content part হিসেবে ছবি ও ভিডিও উপস্থাপন করা হয়।
স্থানীয় ছবি বিশ্লেষণ করুন
IMG=$(base64 -w0 photo.jpg)
curl -s http://<head-address>:8888/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "GLM-5.3-Flash-EXL3",
"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
}'ডিফল্টভাবে সার্ভার data URL-এর মাধ্যমে মিডিয়া গ্রহণ করে। সার্ভারকে পাবলিক HTTPS URL-ও আনতে দিতে VISION_URLS=1 সেট করুন।
সমর্থিত মিডিয়ার সীমা
- প্রতি অনুরোধে সর্বোচ্চ ৫০টি ছবি, প্রতিটি ছবির জন্য ১০ MB এবং মোট ছবির ডেটার জন্য ৬৪ MB সীমা।
- প্রতি অনুরোধে সর্বোচ্চ ৪টি ভিডিও, প্রতিটি ভিডিওর জন্য ৬৪ MB এবং মোট ভিডিও ডেটার জন্য ৯৬ MB সীমা।
- প্রতিটি ভিডিওতে সর্বোচ্চ এক ঘণ্টার ফুটেজ থাকতে পারে।
- অনুরোধের বডি সর্বোচ্চ ৯৬ MiB হতে পারে, ফলে base64-এনকোড করা মিডিয়ার জন্য প্রায় ৭০ MB থাকে।
- একটি ছবির জন্য সর্বোচ্চ ২,০৪৮ টোকেন বরাদ্দ হয়, আর একটি অনুরোধের সব ছবি ডিফল্ট ১৬,৩৮৪-টোকেন বাজেট ভাগ করে নেয়।
- ভিডিও স্যাম্পলিংয়ের ডিফল্ট হার প্রতি সেকেন্ডে দুইটি ফ্রেম এবং একটি ক্লিপজুড়ে সর্বোচ্চ ১২৮টি ফ্রেম।
ভিডিওর ক্ষেত্রে image content part-এর পরিবর্তে video_url part ব্যবহার করুন, যাতে data:video/mp4;base64,...-এর মতো একটি data URL থাকবে।
শুধু টেক্সট প্রয়োজন হলে VISION=0 সেট করুন। এতে vision tower লোড হবে না এবং rank 0-এ cache ব্যবহারের জন্য প্রায় ১.৮ GiB অতিরিক্ত মেমরি থাকবে।
সার্ভার পরিচালনা ও পর্যবেক্ষণ করুন
রিস্টার্ট ও বন্ধ করা
./start.sh restart
./stop.shস্থায়ী সেটিং পরিবর্তন করার পর রিস্টার্ট প্রয়োজন। সার্ভিস বন্ধ করলে উভয় মেশিনে GPU মেমরি মুক্ত হয়।
লগ দেখুন
docker logs -f glm53-flash-tf
ssh <worker> docker logs -f glm53-flash-tfপ্রথম কমান্ডটি head-এ rank 0-এর লগ অনুসরণ করে। দ্বিতীয়টি rank 1-এর লগ অনুসরণ করে এবং worker অপ্রত্যাশিতভাবে বন্ধ হয়ে গেলে বিশেষভাবে কার্যকর।
স্বাস্থ্য ও মেট্রিক পরীক্ষা করুন
curl -s http://<head-address>:8888/health
curl -s http://<head-address>:8888/metricsস্বাস্থ্য প্রতিক্রিয়ায় ব্যস্ততার অবস্থা, সক্রিয় stream এবং shared-pool-এর ক্ষমতা, যার মধ্যে pool_tokens ও pool_free_tokens রয়েছে, জানানো হয়। Metrics endpoint-এ Prometheus অনুরোধ, latency, time-to-first-token এবং স্বাস্থ্যসংক্রান্ত পরিসংখ্যান প্রকাশ করা হয়।
কনটেক্সট ও শেয়ার করা KV মেমরি বুঝুন
ডিফল্ট কনফিগারেশনে FP8 KV cache ব্যবহার করা হয় এবং প্রতিটি অনুরোধের সর্বোচ্চ window ১,০৪৮,৫৭৬ টোকেন। একটি নথিভুক্ত startup-এ চারটি অনুরোধ ২,৬৮৪,৯২৮ টোকেনের pool ভাগ করে নেয়, যদিও সঠিক ক্ষমতা খালি মেমরির ওপর নির্ভর করে।
একটি অনুরোধ সম্পূর্ণ window ব্যবহার করতে পারে, তবে সক্রিয় ও সংরক্ষিত সব conversation-কে সাধারণ pool-এর মধ্যে থাকতে হবে। উদাহরণস্বরূপ, দুটি conversation প্রত্যেকে প্রায় এক মিলিয়ন টোকেনে পৌঁছাতে পারে, আর অপেক্ষাকৃত ছোট সমসাময়িক conversation-গুলো অবশিষ্ট ক্ষমতা ভাগ করে নিতে পারে। কোনো অনুরোধ তখনই স্থাপন করা সম্ভব না হলে অন্য অনুরোধ শেষ হওয়া পর্যন্ত অপেক্ষা করে।
ফিট হওয়া সর্বাধিক window গণনা করতে CONTEXT=0 ব্যবহার করুন, তবে মনে রাখবেন এতে অন্য conversation-এর prompt state সংরক্ষণের জন্য কোনো মেমরি অবশিষ্ট থাকে না। নির্ভুল BF16 KV storage-এ পরিবর্তন করলে উপলভ্য window উল্লেখযোগ্যভাবে কমে যায়।
Unified-memory শেষ হয়ে গেলে Spark পরিষ্কার allocation failure দেখানোর বদলে স্থবির হয়ে যেতে পারে। মেমরির বিনিময়টি বুঝে না থাকলে ডিফল্ট reserve বজায় রাখুন, আর অন্য workload একই মেশিন ব্যবহার করলে
MEMORY_RESERVE_GIBবাড়ান।
উন্নত কনফিগারেশন
সেটিংস environment, scripts/local.sh, অথবা start.sh-এর পাশে থাকা .env ফাইলের মাধ্যমে সরবরাহ করা যায়। অগ্রাধিকারের ক্রম হলো environment, তারপর scripts/local.sh, এরপর .env, এবং সবশেষে repository defaults।
একবারের জন্য concurrency পরিবর্তন করুন
PARALLEL=2 ./start.sh restartPARALLEL DFlash2 সক্রিয় থাকলে এক থেকে চার পর্যন্ত সেট করা যায়। MTP ডিফল্টভাবে একবারে একটি অনুরোধ পরিচালনা করে।
কনটেক্সট উইন্ডো পরিবর্তন করুন
CONTEXT=524288 ./start.sh restartসম্পূর্ণ এক মিলিয়ন-টোকেন উইন্ডোর প্রয়োজন না থাকলে ছোট কনটেক্সট ক্যাশের ওপর চাপ কমাতে পারে।
ডিফল্ট আউটপুট সীমা বাড়ান
./start.sh restart --max-tokens 16384অতিরিক্ত কমান্ড-লাইন আর্গুমেন্টগুলো কনফিগার করা ডিফল্টের পরে tensorfold serve-এ পাঠানো হয়, তাই সেগুলো অগ্রাধিকার পায়। সমর্থিত আর্গুমেন্ট দেখতে ./start.sh --help চালান।
প্রস্তুতি জোরপূর্বক চালান বা এড়িয়ে যান
PREPARE=1 ./start.sh restart
PREPARE=0 ./start.sh restartপ্রথম কমান্ড সেটআপ পরীক্ষা ও প্রস্তুতি প্রক্রিয়া জোরপূর্বক চালায়। দ্বিতীয়টি তা এড়িয়ে যায়।
প্রম্পট পুনঃব্যবহার কার্যকরভাবে ব্যবহার করুন
SHARED_PREFIX=1 দিয়ে শেয়ার্ড-প্রিফিক্স পুনঃব্যবহার ডিফল্টভাবে সক্রিয় থাকে। পুনরাবৃত্ত সিস্টেম প্রম্পট এবং অভিন্নভাবে সংরক্ষিত প্রম্পটগুলো আবার প্রিফেচ করার বদলে ক্যাশ করা অবস্থা থেকে চালু হতে পারে। নথিভুক্ত পরিমাপে, পুনরাবৃত্ত 64K-টোকেন প্রম্পটের সময় 34 সেকেন্ড থেকে কমে 0.07 সেকেন্ডের নিচে নেমেছে, আর 7.9K-টোকেনের সিস্টেম প্রম্পট পুনঃব্যবহারে স্টার্টআপের সময় 4.24 সেকেন্ড থেকে কমে 0.13 সেকেন্ড হয়েছে।
ক্যাশ ও ওজনের নির্ভুলতা নির্বাচন করুন
KV=fp8ডিফল্ট এবং এটি সবচেয়ে বড় কনটেক্সট উইন্ডো সক্রিয় করে।KV=bf16নির্ভুল ক্যাশ স্টোরেজ ব্যবহার করে, তবে উপলভ্য উইন্ডো উল্লেখযোগ্যভাবে ছোট করে।- ঘন চেকপয়েন্ট উপাদানগুলোর জন্য
DENSE=q4ডিফল্ট। DENSE=fp8এবংDENSE=bf16বিকল্প হিসেবে উপলভ্য; এগুলোর মেমরি ব্যবহারের প্রভাব আলাদা।
অতিরিক্ত API সক্ষমতা
চ্যাট কমপ্লিশনের পাশাপাশি সার্ভারটি /v1/completions, /v1/responses, /v1/models, /tokenize, /detokenize, /health এবং /metrics প্রকাশ করে। টোকেনাইজেশন রুটগুলো /v1/-এর অধীনেও উপলভ্য। সার্ভারটি Anthropic-সামঞ্জস্যপূর্ণ /v1/messages এন্ডপয়েন্ট সরবরাহ করে না।
টুল কলিং tools এবং স্ট্রিম করা tool_calls সমর্থন করে; আর্গুমেন্টের ধরন প্রদত্ত স্কিমা অনুযায়ী নির্ধারিত হয়। স্ট্রাকচার্ড জেনারেশন json_object, json_schema, গাইডেড JSON, রেগুলার এক্সপ্রেশন, পছন্দসমূহ, গ্রামার এবং অন্যান্য স্ট্রাকচার্ড-আউটপুট ক্ষেত্র সমর্থন করে, যা রিজনিং শেষ হওয়ার পর xgrammar-এর মাধ্যমে প্রয়োগ করা হয়।
কোনো প্রম্পটের সঙ্গে max_tokens যোগ করে কনফিগার করা উইন্ডার সীমা অতিক্রম করলে API HTTP 400 এবং OpenAI-ধাঁচের context_length_exceeded ত্রুটি কোড ফেরত দেয়।
সাধারণ স্টার্টআপ সমস্যা সমাধান
- অপর্যাপ্ত মেমরি: স্টার্টআপে উপলভ্য GiB-এর সংখ্যা সীমিত দেখালে
docker psপরীক্ষা করুন এবং উভয় Sparks-এ চলমান অন্যান্য GPU ওয়ার্কলোড বন্ধ করুন। - RoCE ডিভাইস বা রুট নেই:
ip -4 addrদিয়ে CX7 ইন্টারফেসগুলোর IPv4 ঠিকানা আছে কি না নিশ্চিত করুন। SSH অন্য নেটওয়ার্ক ব্যবহার করলে কর্মীর CX7 ঠিকানা দিয়েFABRIC_PEERকনফিগার করুন। - ওয়ার্কার ক্যাশে লেখা যাচ্ছে না: আগের কোনো কনটেইনার সেটিকে root-এর মালিকানাধীন করে রেখে গেলে ওয়ার্কারের Hugging Face ক্যাশের মালিকানা ঠিক করুন।
- একটি র্যাঙ্ক বন্ধ হয়ে যায়: উভয় মেশিনের লগ পরীক্ষা করুন। যেকোনো এক পাশ ব্যর্থ হলে লঞ্চার সাধারণত বাকি র্যাঙ্কটিও বন্ধ করে দেয়।
- সেটআপ পরিবর্তিত হয়েছে: প্যাচ পরিবর্তন বা TensorFold, বেস ইমেজ কিংবা সংশ্লিষ্ট বিল্ড ইনপুট বদলানোর পর
scripts/prepare.sh --rebuildচালান।
পারফরম্যান্সের প্রত্যাশা
README-এর ডিফল্ট দুই-Spark পরিমাপে, গদ্য ডিকোডিং এক অনুরোধে প্রতি সেকেন্ডে 60.4 টোকেন থেকে চারটি সমসাময়িক অনুরোধে মোট প্রতি সেকেন্ডে 108.8 টোকেন পর্যন্ত হয়েছে। স্ট্রাকচার্ড জেনারেশনে মোট গতি প্রতি সেকেন্ডে 114.7 থেকে 227.9 টোকেন পর্যন্ত ছিল। 8,219-টোকেনের প্রম্পটে প্রিফিলের গতি ছিল প্রায় প্রতি সেকেন্ডে 1,952 টোকেন এবং 981,841-টোকেনের needle-in-a-haystack প্রম্পটে প্রতি সেকেন্ডে 1,015 টোকেন, যেখানে needle পাওয়া গিয়েছিল।
এই পরিসংখ্যানগুলো চারটি স্ট্রিম, FP8 KV ক্যাশ, চার-বিট ঘন ওজন, DFlash2 ও copy draft, ভিশন সক্রিয় এবং GPU ক্লক 2,200 MHz-এ সীমাবদ্ধ রেখে মাপা হয়েছে। প্রতিটি পরিবেশের নিশ্চয়তা হিসেবে নয়, বরং ওই কনফিগারেশনের রেফারেন্স ফলাফল হিসেবে এগুলো বিবেচনা করুন।
উপসংহার
এই ডিপ্লয়মেন্টটি জটিল দুই-নোড TensorFold কনফিগারেশনকে একটি ব্যবহারিক স্টার্টআপ ওয়ার্কফ্লো এবং OpenAI-সামঞ্জস্যপূর্ণ API-এর আড়ালে প্যাকেজ করে। CX7 লিংক, SSH অ্যাক্সেস, Docker রানটাইম, স্টোরেজ এবং ওয়ার্কারের ঠিকানা প্রস্তুত থাকলে ./start.sh প্রস্তুতি, ডিস্ট্রিবিউটেড লঞ্চ, যাচাই এবং সার্ভিং পরিচালনা করে। এরপর আপনি মানসম্মত API ক্লায়েন্ট ব্যবহার করে আপনার ওয়ার্কলোড অনুযায়ী সমসাময়িকতা, কনটেক্সট, রিজনিং, মাল্টিমোডাল সীমা এবং মেমরি ব্যবহারের আচরণ সামঞ্জস্য করতে পারবেন।
