بل میں اچانک اضافہ کیوں ہوا
جب ٹیم نے پہلی بار جنریٹیو AI شامل کی، تو انہوں نے ہر صارف کی درخواست کو تازہ ترین اور سب سے زیادہ قابل ماڈل کو بھیجا۔ جیسے جیسے ٹریفک بڑھا، فی درخواست لاگت بھی اسی رفتار سے بڑھتی گئی، اور CFO کے اسپریڈ شیٹ نے دکھایا کہ اخراجات صارفوں کے بڑھتے ہوئے گراف سے بھی زیادہ تیزی سے بڑھ رہے ہیں۔ عام فوری حل—"صرف ایک سستا ماڈل استعمال کریں"—پروڈکشن میں ناکام ہو جاتا ہے کیونکہ مختلف سوالات کے لیے مختلف سطح کی reasoning کی ضرورت ہوتی ہے۔ اصل حل یہ ہے کہ درخواست کیسے بھیجی جاتی ہے، نہ کہ یہ کہ ہمیشہ کون سا ماڈل استعمال کیا جائے۔
پیسے بچانے والا روٹنگ لیئر بنانا
انجینئر نے انفرنس سروس (inference service) کے ساتھ کسی بھی دوسرے پروڈکشن کمپوننٹ کی طرح سلوک کیا: ٹیرز (tiers) متعین کیے، SLAs سیٹ کیے، اور لیٹنسی بجٹ (latency budgets) نافذ کیے۔ اس کے نتیجے میں بننے والے آرکیٹیکچر کے چار اہم حصے ہیں جو مل کر 95% تک کمی لاتے ہیں۔
ٹیرڈ روٹنگ (Tiered routing)
ایک ہلکا پھلکا فرنٹ اینڈ ہر آنے والی درخواست کو اس کی مشکل کے لحاظ سے درجہ بندی کرتا ہے۔ تقریباً 95% سوالات "سستے" ٹیر میں جاتے ہیں جو ایک معمولی ماڈل پر چلتا ہے؛ صرف مشکل ترین 5% کو پریمیم ماڈل پر بھیجا جاتا ہے۔ درجہ بندی رولز پر مبنی ہو سکتی ہے (مثلاً لمبائی، مخصوص ڈومین کے کلیدی الفاظ کی موجودگی) یا تاریخی ڈیٹا سے سیکھی جا سکتی ہے۔ کم لاگت والے ٹیر کو ڈیفالٹ بنانے سے، چیٹ بوٹ کا ماہانہ خرچ $420 سے کم ہو کر $28 رہ گیا۔
ماڈل کا درست انتخاب (Model right-sizing)
کام کی پیچیدگی کے مطابق ماڈل کی صلاحیت کا انتخاب سب سے زیادہ بچت فراہم کرتا ہے:
- سادہ چیٹ – فلیگ شپ ماڈل کے بجائے ایک ہلکا پھلکا ماڈل استعمال کریں (97.5% بچت)۔
- کلاسیفیکیشن – درمیانے سائز کے ماڈل کو ایک سستے متبادل سے بدل دیں (98.3% بچت)۔
- خلاصہ نگاری (Summarization) – ٹاپ ٹیر ماڈل کو درمیانے درجے کے ماڈل سے بدل دیں (97.2% بچت)۔
ماڈلز کے اصل نام اہم نہیں ہیں؛ اصل اصول یہ ہے کہ سب سے زیادہ قابل ماڈل کو صرف ان چند سوالات کے لیے محفوظ رکھا جائے جنہیں واقعی اس کی ضرورت ہو۔
اسمارٹ کیشنگ (Smart caching)
ہر کیش ہٹ (cache hit) ایک نیٹ ورک کال اور API چارج کو ختم کر دیتی ہے۔ ایک ڈسٹریبیوٹڈ Redis کیش کامیاب جوابات کے ساتھ ساتھ "منفی" جوابات ("مجھے نہیں معلوم") کو بھی محفوظ کرتا ہے۔ جب وہی ناقابلِ جواب سوال دوبارہ آتا ہے، تو سسٹم ماڈل کو دوسری بار استعمال کرنے کے بجائے کیش شدہ "مجھے نہیں معلوم" جواب واپس کر دیتا ہے۔ ہزاروں درخواستوں کے دوران، صرف یہی عمل بل میں نمایاں کمی لاتا ہے۔
پرامپٹ کمپریشن (Prompt compression)
طویل پرامپٹس ٹوکن کے استعمال کو بڑھاتے ہیں، جس کا براہ راست اثر لاگت پر پڑتا ہے۔ ٹیم کلائنٹ سائیڈ پر یا پری پروسیسنگ مرحلے میں ایک سستا خلاصہ نگار (summarizer) چلاتی ہے، جو مہنگے ماڈل تک پہنچنے سے پہلے 2,000 ٹوکنز کے سیاق و سباق (context) کو تقریباً 400 ٹوکنز تک سکیڑ دیتا ہے۔ ٹوکنز میں یہ کمی تمام درخواستوں پر اثر انداز ہوتی ہے، جس سے صارف کے تجربے کو تبدیل کیے بغیر بڑی بچت حاصل ہوتی ہے۔
اسٹریٹجک بیچنگ (Strategic batching)
بیچنگ (Batching) متعدد آزاد درخواستوں کو ایک ہی API کال میں گروپ کرتی ہے۔ اس کا سادہ سا اصول یہ ہے: اگر صارف جواب کا انتظار کر رہا ہے، تو بیچنگ نہ کریں؛ اگر درخواست بیک گراؤنڈ میں چل رہی ہے (جیسے رات کی رپورٹس، شیڈول شدہ کام)، تو سب کچھ بیچ کر بھیجیں۔ صرف رات کے وقت کے بیچ جابز اخراجات میں مزید 10-20% کی کمی لاتے ہیں۔
آپٹیمائزیشن لوپ کی نگرانی
آپ اس چیز کو بہتر نہیں بنا سکتے جسے آپ ناپتے نہیں ہیں۔ انجینئر نے چار ہفتہ وار میٹرکس (metrics) مقرر کیے:
- ٹیر کے لحاظ سے فی درخواست لاگت۔
- ہر روٹنگ پاتھ کے لیے کیش ہٹ ریٹ۔
- سستے سے پریمیم ٹیرز تک ایسکلیشن ریٹ۔
- فی کسٹمر سیگمنٹ اخراجات۔
یہ اعداد و شمار تبدیلیوں (drift) کو ظاہر کرتے ہیں—مثلاً، بڑھتا ہوا ایسکلیشن ریٹ اس بات کا اشارہ ہو سکتا ہے کہ کلاسیفیکیشن لاجک بہت زیادہ سخت ہے یا سستے ماڈل کا معیار گر گیا ہے۔ ٹیم ہر ہفتے تھریش ہولڈز، ماڈل اسائنمنٹس، اور کیش پالیسیوں پر کام کرتی ہے، جس سے لاگت پر کنٹرول ایک بحران کے ردعمل کے بجائے ایک عادت بن جاتا ہے۔
خلاصہ
ایک منظم روٹنگ لیئر جو درخواستوں کی درجہ بندی کرتی ہے، ماڈلز کا درست انتخاب کرتی ہے، جارحانہ طور پر کیشنگ کرتی ہے، پرامپٹس کو کمپریس کرتی ہے اور بیک گراؤنڈ کاموں کو بیچ کرتی ہے، وہ بھروسہ مندی کو برقرار رکھتے ہوئے AI-API کے اخراجات میں 95% تک کمی کر سکتی ہے۔ انفرنس اسٹیک (inference stack) کے ساتھ ایک پروڈکشن سروس کی طرح سلوک کریں: ٹیرز متعین کریں، نتائج کو ناپیں، اور ہر ہفتے اس میں بہتری لائیں۔
