একটি প্রোডাকশন-গ্রেড ইনফারেন্স সার্ভিস তৈরির টিম DigitalOcean Inference-এ ৪৮ ঘণ্টার জন্য ছয়টি ল্যাঙ্গুয়েজ মডেল চালিয়েছিল। প্রতি মাসে মাত্র $০.২০ খরচে চলা "tiny" মডেলটি দামী বিকল্পগুলোকে ছাড়িয়ে গেছে। এটি তাদের droplets-এর ৮ জিবি মেমরি লিমিটের মধ্যেই ছিল এবং সেই ক্র্যাশগুলো এড়িয়ে গেছে যা 70 B ভ্যারিয়েন্টকে অচল করে দিয়েছিল, ফলে খুব সামান্য খরচে ব্যবহারযোগ্য ল্যাটেন্সি এবং নির্ভুলতা প্রদান করেছে।
কেন এই পরীক্ষাটি গুরুত্বপূর্ণ
এন্টারপ্রাইজগুলো যখন লার্জ ল্যাঙ্গুয়েজ মডেলকে (LLMs) API হিসেবে প্রকাশ করে, তখন তারা প্রায়শই ধরে নেয় যে বড় এবং দামী মডেলগুলোই সেরা অভিজ্ঞতা নিশ্চিত করবে। বাস্তবে, প্রোডাকশন এনভায়রনমেন্টকে মেমরি, কনকারেন্সি এবং আপটাইম গ্যারান্টি সামলাতে হয়। একটি মডেল কাগজে-কলমে ভালো মনে হলেও, সেটি যখন আউট-অফ-মেমরি (OOM) কিলস ঘটায় বা কোল্ড স্টার্টের সময় সার্ভিসকে স্থবির করে দেয়, তখন তা বোঝা হয়ে দাঁড়াতে পারে। এই হাতে-কলমে করা পরীক্ষাটি দেখায় যে, সীমিত হার্ডওয়্যারে একটি সস্তা মডেলই একমাত্র কার্যকর বিকল্প হতে পারে।
ছয়টি প্রতিদ্বন্দ্বী
| মডেল | মাসিক খরচ | গড় ল্যাটেন্সি | নির্ভুলতা* | র্যাম ব্যবহার / ক্র্যাশ |
|---|---|---|---|---|
| mistral-tiny | $0.20 | 120 ms | 88 % | 1.2 GB |
| mistral-small | $0.80 | 180 ms | 91 % | 2.4 GB |
| mistral-medium | $2.50 | 250 ms | 93 % | 4.1 GB |
| mistral-large | $5.00 | 300 ms | 94 % | 6.8 GB |
| llama-70b | $8.00 | 450 ms | 95 % | CRASH |
| mixtral-8x7b | $10.00 | 500 ms | 96 % | CRASH |
*নির্ভুলতা টিমের অভ্যন্তরীণ বেঞ্চমার্ক সুইটের ওপর মডেলের পারফরম্যান্স প্রতিফলিত করে।
"tiny" মডেলটির মাসিক খরচ ছিল এক ডলারের চার ভাগের এক ভাগেরও কম এবং এটি ৮ জিবি মেমরি সীমার মধ্যেই ছিল। দুটি সবচেয়ে বড় মডেল—llama-70b এবং mixtral-8x7b—সেই সীমা অতিক্রম করেছিল এবং বারবার হোস্ট ক্র্যাশ করিয়েছিল, যার ফলে উচ্চ নির্ভুলতা স্কোর থাকা সত্ত্বেও সেগুলো ব্যবহার অযোগ্য হয়ে পড়েছিল।
বড় মডেলগুলোকে ডুবিয়ে দেওয়া সমস্যাগুলো
- হার্ড-কোডেড এন্ডপয়েন্ট (Hard-coded endpoints) – মূল আর্কিটেকচার প্রতিটি রিকোয়েস্ট একটি মাত্র মডেলে পাঠাত। যখন সেই মডেলটি ব্যর্থ হতো, পুরো API বন্ধ হয়ে যেত।
- মেমরি ক্যাপ নেই (No memory caps) – বড় মডেলগুলো সমস্ত উপলব্ধ RAM দখল করে নিত, যা কোনো সতর্কতা ছাড়াই OOM কিলস ঘটাত।
- কোল্ড-স্টার্ট ল্যাটেন্সি (Cold-start latency) – একটি নতুন মডেলে প্রথমবার রিকোয়েস্ট পাঠাতে কয়েক সেকেন্ড সময় লাগত, যা রেসপন্সিভনেস কমিয়ে দিত।
- আনবাউন্ডেড কনকারেন্সি (Unbounded concurrency) – একসাথে অনেক রিকোয়েস্ট আসার ফলে মেমরি এবং CPU saturate হয়ে যেত, যার ফলে সিস্টেমগত ব্যর্থতা ঘটত।
বাস্তবসম্মত লোডের অধীনে সার্ভিসটি যদি অনলাইন থাকতে না পারে, তবে র-পারফরম্যান্স সংখ্যাগুলোর কোনো মূল্য নেই।
ডায়নামিক রাউটিং সমাধান
ইঞ্জিনিয়াররা তিনটি নীতির ভিত্তিতে রিকোয়েস্ট পাথটি নতুন করে লিখেছিলেন:
- রানটাইম মডেল সিলেকশন (Runtime model selection) – রাউটারটি একটি স্ট্যাটিক এন্ডপয়েন্ট ব্যবহার করার পরিবর্তে প্রতিটি রিকোয়েস্টের জন্য একটি মডেল বেছে নেয়।
- হার্ডওয়্যার অ্যাওয়ারনেস (Hardware awareness) – প্রতিটি রিকোয়েস্ট একটি মেমরি বাজেট পায়; রাউটার শুধুমাত্র সেই মডেলগুলোতে রিকোয়েস্ট পাঠায় যা অবশিষ্ট RAM-এর মধ্যে এঁটে যায়।
- ফলব্যাক চেইন (Fallback chains) – যদি নির্বাচিত মডেলটি ব্যর্থ হয় বা টাইম-আউট হয়, রাউটার স্বয়ংক্রিয়ভাবে পরবর্তী সেরা মডেলটি দিয়ে আবার চেষ্টা করে।
সংশোধিত আর্কিটেকচারে চারটি সুনির্দিষ্ট সুরক্ষা ব্যবস্থা যুক্ত করা হয়েছে:
- বাউন্ডেড কনকারেন্সি (Bounded concurrency) – একটি সেমাফোর (semaphore) সমান্তরাল ইনফারেন্সের সংখ্যা সীমিত করে, যা মেমরি শেষ হওয়া রোধ করে।
- ফেইল-ফাস্ট টাইম-আউট (Fail-fast timeouts) – প্রতিটি রিকোয়েস্টের জন্য কঠোর টাইমার সেট করা হয়েছে যা ধীরগতির মডেলগুলোকে পুরো প্রক্রিয়াটি ব্লক করার আগেই বাতিল করে দেয়।
- মেমরি বাফার (Memory buffers) – সিস্টেমটি droplets-এর RAM-এর ২০% অতিরিক্ত জায়গা (headroom) সংরক্ষণ করে রাখে, যা OS ওভারহেড এবং হঠাৎ স্পাইকের জন্য জায়গা নিশ্চিত করে।
- প্রি-ওয়ার্মিং (Pre-warming) – স্টার্টআপের সময় প্রতিটি মডেলে ডামি রিকোয়েস্ট পাঠানো হয়, যা প্রাথমিক কোল্ড-স্টার্টের সমস্যা দূর করে।
এই পদক্ষেপগুলো একটি ভঙ্গুর পাইপলাইনকে একটি স্থিতিস্থাপক সার্ভিসে রূপান্তরিত করেছে যা নির্ভুলতা খুব বেশি বিসর্জন না দিয়ে সাধারণ ৮ জিবি droplets-এ ট্রাফিক বজায় রাখতে পারে।
পরবর্তীতে যা লক্ষ্য রাখা উচিত
- হার্ডওয়্যার স্কেলিং (Hardware scaling) – ক্লাউড প্রোভাইডাররা যখন কম দামে বড় মেমরি ড্রপলেটস অফার করবে, তখন বড় মডেলগুলোর ব্রেক-ইভেন পয়েন্ট পরিবর্তিত হতে পারে।
- মডেল কমপ্রেশন (Model compression) – কোয়ান্টাইজেশন (Quantization) বা নলেজ ডিস্টিলেশন (knowledge distillation) উচ্চ-নির্ভুলতা সম্পন্ন মডেলগুলোর RAM ব্যবহারের পরিমাণ কমিয়ে দিতে পারে, ফলে সেগুলো ছোট মেশিনে চালানো সম্ভব হবে।
- অ্যাডাপ্টিভ রাউটিং (Adaptive routing) – ভবিষ্যতের রাউটারগুলো রিয়েল-টাইমে শিখতে পারবে কোন মডেলটি একটি নির্দিষ্ট কুয়েরির জন্য সেরা ভারসাম্য প্রদান করে, যা নির্ভুলতা এবং খরচের ভারসাম্যকে আরও স্বয়ংক্রিয় করবে।
সারকথা হলো: প্রোডাকশনে, চাপের মুখে যে মডেলটি সচল থাকে, সেটি কাগজে-কলমে সেরা দেখায় এমন মডেলের চেয়ে বেশি ভ্যালু প্রদান করে। শুধুমাত্র নির্ভুলতার ওপর ভিত্তি করে নয়, বরং আপনার ডেপ্লয়মেন্টের সীমাবদ্ধতা বা কনস্ট্রেইন্টসের ওপর ভিত্তি করে একটি মডেল বেছে নিন।
