
Flare কী?
Flare হলো NVIDIA SM120 এবং SM121 GPU-এর জন্য বিশেষভাবে তৈরি একটি স্থানীয় ইনফারেন্স সার্ভার। এটি দীর্ঘ কথোপকথন, কোডিং এজেন্ট এবং বারবার টুল ব্যবহারের প্রয়োজন হয় এমন কাজের জন্য তৈরি। এর প্রধান লক্ষ্য হলো টেক্সট জেনারেশনকে সাড়া-প্রদানে সক্ষম রেখে ওয়ার্কস্টেশন ও কমপ্যাক্ট সিস্টেমের রিসোর্স দক্ষতার সঙ্গে ব্যবহার করা।

বিস্তৃত সামঞ্জস্যকে অগ্রাধিকার দেওয়া সার্ভিং প্ল্যাটফর্মগুলোর বিপরীতে, Flare নির্বাচিত মডেল, হার্ডওয়্যার, কার্নেল এবং ডিপ্লয়মেন্ট প্যাটার্নকে কেন্দ্র করে একটি নির্দিষ্ট চুক্তি ব্যবহার করে। এই সীমিত পরিসরের কারণে মডেল প্রস্তুতি, মেমরি ব্যবস্থাপনা, শিডিউলিং এবং এক্সিকিউশনকে সমন্বিতভাবে নকশা করা যায়।
আপনার স্থানীয় কাজের ধরন যদি Flare-এর সমর্থিত মডেল রেসিপি, নির্ধারিত সক্ষমতা এবং NVIDIA হার্ডওয়্যারের প্রয়োজনীয়তার সঙ্গে মিলে যায়, তাহলেই Flare সবচেয়ে উপযোগী।
আর্কিটেকচার কীভাবে কাজ করে
Flare মডেল প্রস্তুতি ও রানটাইম সার্ভিংকে দুটি প্রধান কম্পোনেন্টে ভাগ করে: Ignition এবং Helios।
Ignition: বিল্ড-টাইম মডেল প্রস্তুতি
Ignition স্ট্যান্ডার্ড Python মেশিন-লার্নিং ইকোসিস্টেমে কাজ করে। এটি PyTorch, Transformers এবং FlashInfer/b12x ব্যবহার করে মডেল লোড করে, কার্নেল টিউন করে, ফরওয়ার্ড পাস কম্পাইল করে এবং CUDA গ্রাফ ক্যাপচার করে।
এর ফল হলো একটি প্রস্তুত রানটাইম প্যাকেজ। সার্ভিং শুরু হওয়ার আগেই কম্পাইলেশন ও CUDA গ্রাফ ক্যাপচার সম্পন্ন হয়, তাই প্রোডাকশন রানটাইমকে এই প্রস্তুতির ধাপগুলো সম্পাদন করতে হয় না।
Helios: Rust-ভিত্তিক সার্ভিং
Helios হলো Rust রানটাইম, যা Ignition দ্বারা তৈরি প্যাকেজ সার্ভ করে। এটি Python ছাড়াই চলে এবং শিডিউলিং, ক্যাশ সংরক্ষণ, রিকোয়েস্ট পরিচালনা ও রানটাইম রিসোর্সের স্পষ্ট মালিকানার দায়িত্বে থাকে।
মডেল রেসিপি
-> Ignition প্রস্তুতি
-> কার্নেল টিউনিং ও ফরওয়ার্ড কম্পাইলেশন
-> CUDA গ্রাফ ক্যাপচার
-> রানটাইম প্যাকেজ
-> Helios সার্ভিংএই বিভাজন মডেল ডেভেলপমেন্টকে পরিচিত Python টুলগুলোর সঙ্গে যুক্ত রাখে এবং একই সঙ্গে সার্ভিং রানটাইমকে ছোট ও কেন্দ্রীভূত রাখে।
প্রধান বৈশিষ্ট্য
- কেন্দ্রীভূত NVIDIA সমর্থন: Flare বিস্তৃত অ্যাক্সেলারেটরের পরিবর্তে NVIDIA SM120 এবং SM121 GPU-এর জন্য তৈরি।
- বিল্ড-টাইমে Python: মডেল প্রস্তুতিতে PyTorch, Transformers এবং FlashInfer/b12x ব্যবহার করা হয়।
- রানটাইমে Rust: Helios Python ছাড়াই প্রস্তুত প্যাকেজ সার্ভ করে।
- সার্ভিংয়ের আগেই অপ্টিমাইজেশন: রিকোয়েস্ট সার্ভ করার আগেই কার্নেল টিউনিং, ফরওয়ার্ড কম্পাইলেশন এবং CUDA গ্রাফ ক্যাপচার সম্পন্ন হয়।
- স্পষ্ট মেমরি পরিকল্পনা: বাফার ও এক্সিকিউশন সক্ষমতা আগেই পরিকল্পনা করা হয়।
- সম্পূর্ণ কথোপকথনের অবস্থা: সঠিকভাবে পুনঃব্যবহার, শাখা তৈরি ও পুনরায় শুরু করার জন্য Flare পুনরাবৃত্ত স্টেট এবং KV ক্যাশকে একটি সমন্বিত কথোপকথন স্টেট হিসেবে বিবেচনা করে।
- রেসিপি-নির্ভর মডেল সমর্থন: মডেল রেসিপি মডেলের কম্পিউটেশন নির্ধারণ করে এবং প্রয়োজন অনুযায়ী লেআউট বা এক্সিকিউশনকে বিশেষায়িত করে।
- স্থানীয় কাজকেন্দ্রিকতা: সিস্টেমটি স্থানীয় মেশিনে দীর্ঘ সেশন, কোডিং এজেন্ট এবং বারবার টুল ব্যবহারের জন্য তৈরি।
পূর্বশর্ত ও সেটআপ
Flare ব্যবহারের আগে নিশ্চিত করুন যে আপনার পরিবেশ এর ইচ্ছাকৃতভাবে সীমিত পরিসরের সঙ্গে সামঞ্জস্যপূর্ণ।
- GPU আর্কিটেকচার যাচাই করুন। Flare NVIDIA SM120 এবং SM121 GPU লক্ষ্য করে। README-তে অন্য GPU আর্কিটেকচারের সমর্থনের দাবি করা হয়নি।
- সমর্থিত মডেল রেসিপি নির্বাচন করুন। Flare সর্বজনীন মডেল সামঞ্জস্যের প্রতিশ্রুতি দেয় না। মডেলটিকে অবশ্যই কোনো উপলব্ধ রেসিপি ও তার প্রত্যাশিত ডেটাফ্লোর সঙ্গে মানানসই হতে হবে।
- রানটাইম সক্ষমতা পরিকল্পনা করুন। প্রত্যাশিত কথোপকথন ও রিকোয়েস্টের জন্য প্রয়োজনীয় বাফার এবং এক্সিকিউশন সক্ষমতা নির্ধারণ করুন।
- Python বিল্ড পরিবেশ প্রস্তুত করুন। মডেল প্রস্তুতির সময় Ignition PyTorch, Transformers এবং FlashInfer/b12x-এর ওপর নির্ভর করে।
- মডেল প্যাকেজ প্রস্তুত করুন। মডেল লোড, কার্নেল টিউন, ফরওয়ার্ড এক্সিকিউশন কম্পাইল এবং CUDA গ্রাফ ক্যাপচার করতে Ignition ব্যবহার করুন।
- Helios দিয়ে সার্ভ করুন। প্রস্তুতি সম্পন্ন হলে ফলস্বরূপ রানটাইম প্যাকেজটি Rust সার্ভিং রানটাইমে দিন।
README-তে নির্দিষ্ট ইনস্টলেশন কমান্ড, নির্ভরতার সংস্করণ বা লঞ্চ ফ্ল্যাগ দেওয়া নেই। প্রামাণ্য পদ্ধতির জন্য রিপোজিটরির মডেল প্রস্তুতি ও সার্ভিং গাইড অনুসরণ করুন। কনফিগারেশনের বিস্তারিত জানতে CLI গাইড ব্যবহার করুন।
মৌলিক ব্যবহারের ধাপ
Flare-এর মৌলিক কর্মপ্রবাহ হলো প্রথমে প্রস্তুতি এবং পরে সার্ভিং। README-তে নির্দিষ্ট কমান্ড সংজ্ঞায়িত করা হয়নি, তাই নিচের উদাহরণটি ধারণাগত, কার্যকর CLI সিনট্যাক্স নয়।
ধাপ ১: সামঞ্জস্যপূর্ণ মডেল নির্বাচন করুন
Flare রেসিপিতে অন্তর্ভুক্ত কোনো মডেল দিয়ে শুরু করুন। রেসিপিগুলো মডেল কম্পিউটেশনের দায়িত্ব নেয় এবং ডেটাফ্লো উপযুক্ত হলে ক্যানোনিক্যাল মডেল ইমপ্লিমেন্টেশন পুনঃব্যবহার করতে পারে। ভিন্ন লেআউট বা এক্সিকিউশন আচরণ প্রয়োজন হলে রেসিপি সেই অংশগুলোকে বিশেষায়িত করে।
ধাপ ২: প্রয়োজনীয় সক্ষমতা নির্ধারণ করুন
প্রস্তুত প্যাকেজটি যে কাজের চাপ সমর্থন করবে, তার পরিমাণ অনুমান করুন। কথোপকথনের দৈর্ঘ্য, সমান্তরাল এক্সিকিউশনের প্রয়োজন, ক্যাশ ব্যবহার, পুনরাবৃত্ত স্টেট এবং বারবার টুল ব্যবহারের বিষয়গুলো বিবেচনা করুন। Flare আশা করে যে সার্ভিংয়ের আগে গুরুত্বপূর্ণ বাফার ও সক্ষমতাগুলো পরিকল্পনা করা হবে।
ধাপ ৩: রানটাইম প্যাকেজ তৈরি করুন
Ignition-এর মাধ্যমে প্রস্তুতি প্রক্রিয়া চালান। এই পর্যায়ে Flare ব্যয়বহুল সেটআপের কাজ সম্পন্ন করতে Python ইকোসিস্টেম ব্যবহার করে।
ইনপুট:
সমর্থিত মডেল রেসিপি
মডেল প্যারামিটার
পরিকল্পিত এক্সিকিউশন সক্ষমতা
Ignition যা সম্পাদন করে:
মডেল লোড
কার্নেল টিউনিং
ফরওয়ার্ড কম্পাইলেশন
CUDA গ্রাফ ক্যাপচার
আউটপুট:
প্রস্তুত রানটাইম প্যাকেজধাপ ৪: Helios চালু করুন
প্রস্তুত প্যাকেজ পরিবেশন করার জন্য Helios কনফিগার করুন। পরিবেশনকারী রানটাইমে Python-এর প্রয়োজন ছাড়াই Helios অনুরোধ প্রক্রিয়াকরণ, সময়সূচি নির্ধারণ এবং ক্যাশ সংরক্ষণ পরিচালনা করে। প্রকৃত কনফিগারেশন অপশন ও চালু করার ইন্টারফেসের জন্য CLI ডকুমেন্টেশন দেখুন।
ধাপ ৫: নির্ধারিত ওয়ার্কলোড পরীক্ষা করুন
বাস্তবসম্মত দীর্ঘ কথোপকথন, কোডিং-এজেন্ট সেশন এবং টুল ব্যবহারের ধরণ দিয়ে Flare পরীক্ষা করুন। একটি সংক্ষিপ্ত কৃত্রিম প্রম্পট Flare যে ওয়ার্কলোডের জন্য তৈরি, তার মতো একই স্টেট-ব্যবস্থাপনা, মেমরি-ট্রাফিক বা সময়সূচি-সংক্রান্ত আচরণ প্রকাশ নাও করতে পারে।
কথোপকথনের স্টেট বোঝা
Flare কথোপকথনের স্টেটকে শুধু একটি KV ক্যাশ হিসেবে বিবেচনা করে না। কোনো মডেল রিকারেন্ট স্টেটও ব্যবহার করলে, সেই স্টেটকে ক্যাশের সঙ্গে সিঙ্ক্রোনাইজড রাখতে হবে। Flare এই উপাদানগুলোকে একসঙ্গে পরিচালনা করে, যাতে পুনঃব্যবহার, শাখায়ন এবং পুনরায় চালুর মতো কার্যক্রম সম্পূর্ণ কথোপকথন সঠিকভাবে সংরক্ষণ করে।
এই নকশাটি এজেন্টদের জন্য বিশেষভাবে গুরুত্বপূর্ণ। কোনো টুলের ফলাফলের জন্য একটি এজেন্ট বিরতি নিতে পারে, বিকল্প মূল্যায়নের সময় শাখা তৈরি করতে পারে, অথবা আগের সেশন পুনরায় চালু করতে পারে। মডেলের স্টেটের শুধু একটি অংশ সংরক্ষণ করলে ধারাবাহিকতার আচরণ ভুল হতে পারে।
উন্নত পরামর্শ
প্রয়োজনীয় প্রকৃত সক্ষমতার জন্য প্রস্তুতি নিন
এক্সিকিউশন ক্যাপাসিটি ও বাফার আগে থেকেই পরিকল্পনা করা হয়, তাই প্রস্তুতির পছন্দ সরাসরি নির্ধারণ করে কী পরিবেশন করা যাবে। ধরে নেবেন না যে প্রতিটি কনটেক্সট দৈর্ঘ্য, সমসাময়িকতার মাত্রা বা মডেল কনফিগারেশনের জন্য একটি প্যাকেজ উপযুক্ত। প্রকল্পের ডকুমেন্টেশনে থাকা সক্ষমতার নিয়ম অনুসরণ করুন।
পরিবেশন পথের বাইরে কম্পাইলেশন রাখুন
প্রোডাকশন পরিবেশন শুরু করার আগে Ignition-কে কার্নেল টিউনিং, ফরওয়ার্ড কম্পাইলেশন এবং CUDA গ্রাফ ক্যাপচার শেষ করতে দিন। এই পৃথকীকরণ Flare-এর নকশার একটি মূল অংশ, ঐচ্ছিক অপ্টিমাইজেশন নয়।
স্টেটকে একটি পারমাণবিক একক হিসেবে বিবেচনা করুন
কথোপকথন পুনঃব্যবহার, শাখায়ন বা পুনরায় চালু করার ব্যবস্থা বাস্তবায়নের সময় Flare-পরিচালিত সম্পূর্ণ স্টেট সংরক্ষণ করুন। KV ক্যাশই সবসময় মডেলের একমাত্র স্থায়ী স্টেট, এমন ধারণার ওপর ভিত্তি করে ইন্টিগ্রেশন তৈরি করা এড়িয়ে চলুন।
মডেল সীমানা হিসেবে রেসিপি ব্যবহার করুন
মডেল-নির্দিষ্ট কম্পিউটেশন মডেল রেসিপিতে রাখুন এবং সময়সূচি, অনুরোধ পরিচালনা ও ক্যাশ সংরক্ষণ রানটাইমের ওপর ছেড়ে দিন। এটি Flare-এর দায়িত্ব পৃথকীকরণের নীতি অনুসরণ করে এবং শেয়ার করা রানটাইমকে তার মূল কাজে কেন্দ্রীভূত রাখতে সহায়তা করে।
আপনার প্রকৃত ওয়ার্কলোডের বিপরীতে বেঞ্চমার্ক করুন
Rust স্পষ্ট রিসোর্স মালিকানা প্রদান করে, তবে শুধু বাস্তবায়নের ভাষা বেশি ইনফারেন্স কর্মক্ষমতার নিশ্চয়তা দেয় না। GPU কম্পিউটেশন, মেমরি ট্রাফিক, সময়সূচি, মডেলের কাঠামো এবং ওয়ার্কলোডের ধরন এখনও গুরুত্বপূর্ণ।
আরও বিস্তৃত মডেল, হার্ডওয়্যার বা ডিপ্লয়মেন্ট কাভারেজের জন্য Flare-এর সঙ্গে vLLM তুলনা করুন। উভয় সিস্টেমই CUDA গ্রাফ ব্যবহার করতে পারে, তবে তাদের পরিসর ও নকশাগত সমঝোতা ভিন্ন। আপনি যে নির্দিষ্ট মডেল, কথোপকথনের ধরণ, সক্ষমতা এবং মেশিন ডিপ্লয় করতে চান, ঠিক সেগুলো দিয়েই বেঞ্চমার্ক করুন।
নকশার ডকুমেন্টেশন পড়ুন
রানটাইম, মডেল রেসিপি, স্টেট ব্যবস্থাপনা এবং সময়সূচির সীমানা কেন এভাবে গঠিত, তার গভীরতর ব্যাখ্যার জন্য রিপোজিটরির কোর ডিজাইন ডকুমেন্টেশন দেখুন।
উপসংহার
Flare NVIDIA SM120 এবং SM121 GPU-তে নির্বাচিত মডেলগুলোর জন্য একটি বিশেষায়িত স্থানীয় ইনফারেন্স পথ প্রদান করে। পরিচিত Python টুল ব্যবহার করে Ignition অপ্টিমাইজ করা রানটাইম প্যাকেজ প্রস্তুত করে, আর Helios একটি компакт Rust রানটাইমের মাধ্যমে সেগুলো পরিবেশন করে। দীর্ঘ কথোপকথন, কোডিং এজেন্ট, বারবার টুল ব্যবহার এবং মেমরি ও কথোপকথনের স্টেটের সুস্পষ্ট ব্যবস্থাপনা-সমৃদ্ধ পরিকল্পিত স্থানীয় ওয়ার্কলোডের জন্য এটি সবচেয়ে উপযোগী।
