সার্ভারলেস সংক্রান্ত সেই ধারণা যে “আপনি কেবল আপনার কোড চলার মিলিসেকেন্ডের জন্য অর্থ প্রদান করবেন”, তা ভুল প্রমাণিত হয় যখন আপনি AWS Lambda-তে একটি AI এজেন্ট চালানোর চেষ্টা করেন। বাস্তবে, সবচেয়ে বড় খরচটি Lambda-কম্পিউট চার্জ নয়, বরং কোল্ড-স্টার্ট ল্যাটেন্সি (cold-start latency), রিট্রাই লুপ (retry loops) এবং সেই লুপগুলো থেকে উৎপন্ন টোকেন ব্যবহার (token usage)।
কেন সাধারণ সার্ভারলেস ধারণাটি AI এজেন্টদের ক্ষেত্রে বিভ্রান্তিকর
অধিকাংশ ডেভেলপার একটি Lambda ফাংশনকে একটি বিশুদ্ধ কম্পিউট স্যান্ডবক্স (compute sandbox) হিসেবে বিবেচনা করেন: হ্যান্ডলারটি দ্রুত রাখা, একটি মাঝারি মেমরি সাইজ সেট করা এবং বিল স্থিতিশীল রাখা। এটি সাধারণ HTTP এন্ডপয়েন্টের জন্য কাজ করে, কিন্তু একটি এজেন্ট যা একটি ল্যাঙ্গুয়েজ মডেলকে কল করে, রেসপন্স মূল্যায়ন করে এবং সম্ভবত পুরো চক্রটি পুনরায় চেষ্টা (retry) করে, তা একটি একক Lambda ইনভোকেশন (invocation)-এর সাথে সরাসরি মেলে না। এজেন্টের অভ্যন্তরীণ ওয়ার্কফ্লো মডেল কলের সংখ্যা বহুগুণ বাড়িয়ে দেয়, এবং প্রতিটি অতিরিক্ত কল টোকেন খরচ বাড়িয়ে দেয় যা কম্পিউট চার্জকে ছাড়িয়ে যেতে পারে।
কোল্ড স্টার্ট হলো একটি লুকানো খরচ
যখন একটি Lambda কন্টেইনার প্রথমবার প্রোভিশন করা হয়, তখন এটিকে ডেপ্লয়মেন্ট প্যাকেজটি আনপ্যাক করতে হয়। সংশ্লিষ্ট এজেন্টটি অনেক বড় পাইথন (Python) লাইব্রেরি ব্যবহার করে, তাই ইমেজটি বেশ বড় হতে পারে। শুধুমাত্র ডেভেলপমেন্টের জন্য ব্যবহৃত টুলগুলো—যেমন লোকাল টেস্টিংয়ের জন্য ব্যবহৃত কোনো ব্রাউজার অটোমেশন লাইব্রেরি—বাদ দিলে ইমেজের আকার কমে যায়, যা আনপ্যাক করার সময় কমিয়ে দেয়। একটি স্লিমার প্যাকেজ মানে ফাংশনটি দ্রুত রিকোয়েস্ট হ্যান্ডেল করার জন্য প্রস্তুত হয়, ফলে কন্টেইনার ওয়ার্ম আপ (warm up) হওয়ার জন্য অপেক্ষার সময় কমে যায়।
দ্বিতীয় একটি বিষয় হলো ইনিশিয়ালাইজেশন কোডটি কোথায় রাখা হচ্ছে। মডিউল ইমপোর্ট করার সময় এজেন্টের গ্রাফ (graph) তৈরি করার মাধ্যমে, ভারী কাজগুলো প্রতিটি রিকোয়েস্টের পরিবর্তে প্রতিবার কন্টেইনার স্টার্ট হওয়ার সময় একবারই সম্পন্ন হয়। এরপর ওয়ার্ম ইনভোকেশনগুলো (warm invocations) সেই কাজগুলো পুরোপুরি এড়িয়ে যেতে পারে। এর বিনিময়ে কোল্ড স্টার্ট কিছুটা দীর্ঘ হতে পারে, কিন্তু কন্টেইনার ওয়ার্ম হওয়ার পর প্রতি রিকোয়েস্টে সেটআপ টাইম প্রায় শূন্যের কাছাকাছি হয়ে যায়।
মেমরি ল্যাটেন্সি নিয়ন্ত্রণের মাধ্যম হিসেবেও কাজ করে
Lambda-তে আপনি যে পরিমাণ মেমরি বরাদ্দ করেন, তা ফাংশনটি কতটুকু CPU পাবে তাও নির্ধারণ করে। ফাংশনটিকে 1 GB মেমরি বরাদ্দ করলে এটি একটি পূর্ণ ভার্চুয়াল CPU কোর পায়। অতিরিক্ত CPU লাইব্রেরি ইমপোর্ট করা এবং এজেন্টের গ্রাফ তৈরির প্রক্রিয়াকে ত্বরান্বিত করে, যা কোল্ড-স্টার্ট এবং ওয়ার্ম-আপ ল্যাটেন্সি উভয়ই কমিয়ে দেয়।
লুপের খরচ: রিট্রাই টোকেন খরচ বহুগুণ বাড়িয়ে দেয়
এজেন্টটি একটি ওয়ার্কার-ইভালুয়েটর (worker-evaluator) লুপ অনুসরণ করে। ওয়ার্কার একটি রেসপন্স তৈরি করে, ইভালুয়েটর সেটি পরীক্ষা করে এবং যদি ইভালুয়েটর কোনো ত্রুটি শনাক্ত করে, তবে কাজটি পুনরায় ওয়ার্কারের কাছে পাঠানো হয়। হাল ছেড়ে দেওয়ার আগে লুপটি পাঁচবার পর্যন্ত পুনরাবৃত্তি হতে পারে। এর মানে হলো একটি একক এক্সটার্নাল রিকোয়েস্ট নিচের বিষয়গুলো ট্রিগার করতে পারে:
- ওয়ার্কার মডেলে সর্বোচ্চ পাঁচটি কল
- ইভালুয়েটর মডেলে সর্বোচ্চ পাঁচটি কল
- এজেন্ট যে পরিমাণ টুল কল করার সিদ্ধান্ত নেয় তার যেকোনো সংখ্যা
Lambda বিল অনুমানযোগ্য থাকে কারণ AWS এক্সিকিউশনের মিলিসেকেন্ড অনুযায়ী চার্জ করে, কিন্তু কতবার রিট্রাই প্রয়োজন তার ওপর ভিত্তি করে টোকেন বিল ব্যাপকভাবে পরিবর্তিত হতে পারে।
টাইমআউট ট্র্যাপ: API Gateway বনাম Lambda
API Gateway তার সামনের HTTP রিকোয়েস্টের ওপর ২৯ সেকেন্ডের একটি কঠোর টাইমআউট আরোপ করে। একটি পাঁচ-ধাপের এজেন্ট লুপ সহজেই সেই সীমা অতিক্রম করতে পারে, এমনকি যদি অন্তর্নিহিত Lambda ফাংশনটি পাঁচ মিনিটের এক্সিকিউশন উইন্ডোর জন্য কনফিগার করা থাকে। Lambda Function URLs ব্যবহার করে API Gateway বাইপাস করলে ২৯ সেকেন্ডের সেই সীমাবদ্ধতা দূর হয়, যা ফাংশনটিকে মাঝপথে বাধা ছাড়াই লুপ শেষ করার সুযোগ দেয়।
ডেভেলপারদের বাজেটের ক্ষেত্রে কী কী বিবেচনা করা উচিত
শিক্ষাটি সহজ: একটি সার্ভারলেস AI এজেন্টের জন্য বাজেট করার ক্ষেত্রে কেবল Lambda রানটাইমের মিলিসেকেন্ড যোগ করা যথেষ্ট নয়। আপনাকে নিচের বিষয়গুলো বিবেচনায় নিতে হবে:
- ডেপ্লয়মেন্ট প্যাকেজের আকার এবং এর ফলে সৃষ্ট কোল্ড-স্টার্ট ল্যাটেন্সি
- মেমরি সেটিংস যা CPU এবং এর ফলে ইমপোর্ট স্পিড নির্ধারণ করে
- ওয়ার্কার-ইভালুয়েটর লুপে প্রত্যাশিত রিট্রাইয়ের সংখ্যা, যা সরাসরি টোকেন ব্যবহারকে প্রভাবিত করে
- সময়ের আগেই টাইমআউট এড়াতে ফ্রন্ট-এন্ড নির্বাচন (API Gateway বনাম Function URL)
এই ভেরিয়েবলগুলোর যেকোনো একটি উপেক্ষা করলে আপনার বিলটি আপনার করা প্রাক্কলনের (projection) চেয়ে সম্পূর্ণ ভিন্ন হতে পারে।
