یہ سرور لیس (serverless) افسانہ کہ "آپ صرف ان ملی سیکنڈز کے لیے ادائیگی کرتے ہیں جن میں آپ کا کوڈ چلتا ہے" تب ٹوٹ جاتا ہے جب آپ AWS Lambda پر ایک AI ایجنٹ چلانے کی کوشش کرتے ہیں۔ عملی طور پر، سب سے بڑے اخراجات Lambda-compute چارج نہیں بلکہ cold-start latency، ری ٹرائی لوپس (retry loops) اور ان لوپس سے پیدا ہونے والا ٹوکن استعمال (token usage) ہیں۔

عام سرور لیس تصور AI ایجنٹس کو کیوں گمراہ کرتا ہے

زیادہ تر ڈویلپرز Lambda فنکشن کو ایک خالص کمپیوٹ سینڈ باکس (compute sandbox) کے طور پر دیکھتے ہیں: ہینڈلر کو تیز رکھیں، میموری کا ایک مناسب سائز مقرر کریں، اور بل کو مستحکم دیکھیں۔ یہ سادہ HTTP اینڈ پوائنٹس کے لیے تو ٹھیک ہے، لیکن ایک ایسا ایجنٹ جو لینگویج ماڈل کو کال کرتا ہے، جواب کا جائزہ لیتا ہے، اور ممکنہ طور پر پورے چکر کو دوبارہ دہراتا ہے، وہ ایک واحد Lambda invocation کے ساتھ براہ راست مطابقت نہیں رکھتا۔ ایجنٹ کا اندرونی ورک فلو ماڈل کالز کی تعداد کو بڑھا دیتا ہے، اور ہر اضافی کال ٹوکن کی لاگت میں اضافہ کرتی ہے جو کمپیوٹ چارج سے کہیں زیادہ ہو سکتی ہے۔

Cold starts اصل میں چھپی ہوئی قیمت ہے

جب ایک Lambda کنٹینر پہلی بار فراہم (provision) کیا جاتا ہے تو اسے ڈیپلائمنٹ پیکیج کو ان پیک (unpack) کرنا پڑتا ہے۔ متعلقہ ایجنٹ Python لائبریریوں کا ایک بڑا سیٹ استعمال کرتا ہے، اس لیے امیج کا سائز کافی زیادہ ہو سکتا ہے۔ صرف ڈویلپمنٹ کے لیے استعمال ہونے والے ٹولز—جیسے کہ لوکل ٹیسٹنگ کے لیے استعمال ہونے والی براؤزر آٹومیشن لائبریری—کو نکال دینے سے امیج کا سائز کم ہو جاتا ہے، جس سے ان پیک کرنے کا وقت بھی کم ہو جاتا ہے۔ ایک ہلکا پیکیج اس بات کو یقینی بناتا ہے کہ فنکشن درخواست کو سنبھالنے کے لیے تیزی سے تیار ہو جائے، جس سے کنٹینر کے گرم (warm up) ہونے کے انتظار میں لگنے والا وقت کم ہو جاتا ہے۔

دوسرا اہم پہلو یہ ہے کہ انیشلائزیشن کوڈ (initialization code) کہاں موجود ہے۔ ایجنٹ کے گراف کو ماڈیول امپورٹ کے وقت تیار کرنے سے، بھاری کام ہر درخواست کے بجائے ہر کنٹینر اسٹارٹ پر صرف ایک بار ہوتا ہے۔ اس کے بعد Warm invocations اس کام کو مکمل طور پر چھوڑ دیتے ہیں۔ اس کا نقصان یہ ہے کہ cold start تھوڑا طویل ہو سکتا ہے، لیکن فائدہ یہ ہے کہ کنٹینر کے گرم ہونے کے بعد فی درخواست سیٹ اپ کا وقت تقریباً صفر ہو جاتا ہے۔

میموری لیٹنسی (latency) کو کنٹرول کرنے کا ذریعہ بھی ہے

Lambda پر آپ جتنی میموری مختص کرتے ہیں، وہ اس حصے کا تعین بھی کرتی ہے جو فنکشن کو CPU کے طور پر ملتا ہے۔ فنکشن کو 1 GB میموری دینے سے اسے ایک مکمل ورچوئل CPU کور مل جاتا ہے۔ اضافی CPU لائبریریوں کے امپورٹ اور ایجنٹ گراف کی تخلیق کو تیز کرتا ہے، جس سے cold-start اور warm-up latency دونوں کم ہو جاتی ہیں۔

لوپ کی لاگت: ری ٹرائیز ٹوکن کے اخراجات کو بڑھا دیتے ہیں

ایجنٹ ایک worker-evaluator لوپ پر عمل کرتا ہے۔ ورکر (worker) ایک جواب تیار کرتا ہے، ایویلیوایٹر (evaluator) اس کا جائزہ لیتا ہے، اور اگر ایویلیوایٹر کوئی غلطی بتاتا ہے تو ٹاسک واپس ورکر کو بھیج دیا جاتا ہے۔ یہ لوپ ہار ماننے سے پہلے پانچ بار تک دہرایا جا سکتا ہے۔ اس کا مطلب ہے کہ ایک واحد بیرونی درخواست درج ذیل چیزوں کا باعث بن سکتی ہے:

  • ورکر ماڈل کو پانچ تک کالز
  • ایویلیوایٹر ماڈل کو پانچ تک کالز
  • ایجنٹ کی جانب سے کیے جانے والے ٹول کالز کی کوئی بھی تعداد

Lambda کا بل قابلِ پیش گوئی رہتا ہے کیونکہ AWS ایگزیکیوشن کے ملی سیکنڈ کے حساب سے چارج کرتا ہے، لیکن ٹوکن کا بل اس بات پر منحصر ہے کہ کتنے ری ٹرائیز کی ضرورت ہے، اور یہ بہت زیادہ اوپر نیچے ہو سکتا ہے۔

ٹائم آؤٹ کا جال: API Gateway بمقابلہ Lambda

API Gateway اس HTTP درخواست پر 29 سیکنڈ کا سخت ٹائم آؤٹ (timeout) عائد کرتا ہے جس کا وہ سامنا کرتا ہے۔ ایک پانچ مرحلوں والا ایجنٹ لوپ آسانی سے اس حد سے تجاوز کر سکتا ہے، چاہے بنیادی Lambda فنکشن پانچ منٹ کے ایگزیکیوشن ونڈو کے لیے کنفیگر کیا گیا ہو۔ Lambda Function URLs کے ذریعے API Gateway کو نظر انداز کرنے سے 29 سیکنڈ کی حد ختم ہو جاتی ہے، جس سے فنکشن کو بغیر کسی رکاوٹ کے اپنا لوپ مکمل کرنے کی اجازت ملتی ہے۔

ڈویلپرز کو کس چیز کے لیے بجٹ بنانا چاہیے

سبق سادہ ہے: سرور لیس AI ایجنٹ کے لیے بجٹ بنانے کے لیے صرف Lambda runtime کے ملی سیکنڈز کو جمع کرنا کافی نہیں ہے۔ آپ کو درج ذیل عوامل کو مدنظر رکھنا ہوگا:

  • ڈیپلائمنٹ پیکیج کا سائز اور اس کے نتیجے میں ہونے والی cold-start latency
  • میموری سیٹنگ جو CPU اور اس طرح امپورٹ کی رفتار کا تعین کرتی ہے
  • worker-evaluator لوپ میں ری ٹرائیز کی متوقع تعداد، جو براہ راست ٹوکن کے استعمال کو بڑھاتی ہے
  • وقت سے پہلے ٹائم آؤٹ سے بچنے کے لیے فرنٹ اینڈ کا انتخاب (API Gateway بمقابلہ Function URL)

ان میں سے کسی بھی متغیر (variable) کو نظر انداز کرنے سے آپ کو ایسا بل مل سکتا ہے جو آپ کے تخمینے سے بالکل مختلف ہو۔