আমি কীভাবে p99 SLA বজায় রেখে আমাদের AI API বিল অর্ধেক কমিয়ে আনলাম

আমাদের AI বিল খুব দ্রুত বাড়ছিল। আমার CFO একে একটি টেকসই নয় এমন বার্ন রেট (burn rate) হিসেবে অভিহিত করেছিলেন। সেই সময়ে, আমরা সবকিছুর জন্য GPT-4o ব্যবহার করতাম। এটি কাজ করছিল, কিন্তু খরচ ছিল অনেক বেশি এবং p99 ল্যাটেন্সি (latency) ছিল অসামঞ্জস্যপূর্ণ।

আমি AI মডেল নির্বাচনকে একটি সিস্টেম ডিজাইন সমস্যা হিসেবে বিবেচনা করার সিদ্ধান্ত নিলাম। আমি শুধু সেরা মডেল খোঁজা বন্ধ করে আমাদের নির্দিষ্ট SLA-এর জন্য সেরা মডেলটি খোঁজা শুরু করলাম।

আমি প্রথমে কিছু সুনির্দিষ্ট লক্ষ্য নির্ধারণ করলাম: • চ্যাটের জন্য ১.৫ সেকেন্ডের নিচে p99 ল্যাটেন্সি • ৯৯.৯% প্রাপ্যতা (availability) • মাল্টি-রিজিয়ন ফেইলওভার (Multi-region failover) • পিক লোডের ৩ গুণ থ্রুপুট ক্ষমতা (Throughput capacity)

একবার যখন এই সংখ্যাগুলো আমার কাছে ছিল, সমাধানটি স্পষ্ট হয়ে গেল। প্রতি টোকেনের জন্য সবচেয়ে সস্তা মডেলটি সবসময় প্রোডাকশনের জন্য সেরা পছন্দ নয়। যদি একটি সস্তা মডেল আপনার ল্যাটেন্সি দ্বিগুণ করে দেয়, তবে আপনি ব্যবহারকারী হারাবেন।

আমি অনেকগুলো মডেলের তুলনা করেছি। দামের পার্থক্য ছিল বিশাল। GPT-4o-এর প্রতি মিলিয়ন আউটপুট টোকেনের খরচ ১০.০০ ডলার। GLM-4 Plus-এর খরচ মাত্র ০.৮০ ডলার। আমাদের পরীক্ষাগুলো দেখিয়েছে যে সামারাইজেশন (summarization) এবং এক্সট্রাকশন (extraction)-এর মতো আমাদের নির্দিষ্ট কাজগুলোর জন্য GLM-4 Plus প্রায় GPT-4o-এর মতোই ভালো পারফর্ম করে।

এটি পরিচালনা করার জন্য আমি একটি রাউটিং লেয়ার (routing layer) তৈরি করেছি। সিস্টেমটি এই নিয়মগুলো অনুসরণ করে: • কাজের ধরন (workload type) অনুযায়ী রিকোয়েস্ট রাউট করা • ল্যাটেন্সি বেড়ে গেলে একটি ফলব্যাক (fallback) মডেল ব্যবহার করা • বিভিন্ন রিজিয়নে ট্রাফিক ছড়িয়ে দেওয়া • ঘনঘন আসা রিকোয়েস্টগুলো ক্যাশ (cache) করা

আমি একটি Redis ক্যাশও যোগ করেছি। এক সপ্তাহের মধ্যে এর হিট রেট (hit rate) ৪০% এ পৌঁছেছে। এটি বারবার আসা কুয়েরিগুলোর জন্য আমাদের টোকেন খরচ কমিয়ে দিয়েছে এবং ল্যাটেন্সি ১.৪ সেকেন্ড থেকে কমিয়ে ২০০ মিলিসেকেন্ডে নামিয়ে এনেছে।

ফলাফল: • মাসিক ইনফারেন্স খরচ (inference spend) ৫৮% কমেছে • p99 ল্যাটেন্সি ১.৬ সেকেন্ড থেকে ১.১৮ সেকেন্ডে নেমে এসেছে • আপটাইম (Uptime) ৯৯.৯৫% এ স্থির রয়েছে • ক্যাশ হিট রেট ৪২% এ পৌঁছেছে

আমি যে তিনটি শিক্ষা পেয়েছি: ১. নিজস্ব ইভ্যালুয়েশন স্যুট (evaluation suite) তৈরি করুন। সাধারণ বেঞ্চমার্কের ওপর নির্ভর করবেন না। আপনার আসল প্রোডাকশন ডেটা ব্যবহার করুন। ২. রেট লিমিট (rate limits) নিবিড়ভাবে পর্যবেক্ষণ করুন। রিজিয়নাল ট্রাফিক অপ্রত্যাশিত স্পাইক ঘটাতে পারে। ৩. একটি কিল সুইচ (kill switch) তৈরি করুন। একটি খারাপ প্রম্পট টোকেন ব্যবহারের ব্যাপক বৃদ্ধি ঘটাতে পারে। ম্যাক্স টোকেনের (max tokens) ওপর একটি সীমা একবার আমাদের ১৪,০০০ ডলার বাঁচিয়েছে।

যদি আপনার AI বিল অনেক বেশি হয়, তবে প্রথমে আপনার SLA নির্ধারণ করুন। আসল ট্রাফিক থেকে একটি ইভ্যালুয়েশন স্যুট তৈরি করুন। তারপর, সেই মডেলগুলোর দাম যাচাই করুন যেগুলোকে আপনি বর্তমানে এড়িয়ে চলছেন।

উৎস: https://dev.to/bolddeck/how-i-cut-our-ai-api-bill-in-half-while-hitting-p99-slas-1l05

ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi