আমি লক্ষ্য করেছি যে একটি মাত্র সেফটি-গেট মেট্রিক একটি AI-জেনারেটেড ব্যাখ্যা ফিচারের পুরো একদিনের আউটটেজ লুকিয়ে রেখেছিল। “gate rejection” এবং “model load failure”-কে একই হিসেবে গণ্য করার কারণে, মেট্রিকটি সিস্টেমটি সুস্থ আছে বলে একটি ভুল ধারণা দিচ্ছিল। এটি চারটি রিজেকশন এবং শূন্য সাকসেস লগ করেছিল, অথচ সেই সময়ে মডেলটি কখনোই চলেনি—এটি এমন একটি ভুল ছিল যা অপারেটরদের একটি ত্রুটিপূর্ণ সিস্টেম সম্পর্কে অন্ধ করে রাখতে পারত।
বিভ্রান্তিটি কীভাবে ঘটল
ফিচারটি র (raw) মেশিন লজিককে মানুষের পাঠযোগ্য বাক্যে রূপান্তর করতে একটি লোকাল ল্যাঙ্গুয়েজ মডেল ব্যবহার করে। একটি ডাউনস্ট্রিম সেফটি গেট যেকোনো আউটপুট যা পূর্বনির্ধারিত নিয়ম লঙ্ঘন করে, তা ব্লক করে দেয়। প্রোডাকশনে আমি একটি সিঙ্গেল কাউন্টার ব্যবহার করেছিলাম যা গেট কোনো বাক্য রিজেক্ট করার সাথে সাথে বৃদ্ধি পেত। যখন ড্রোনটি চারটি AI ব্যাখ্যা লগ করেছিল, তখন কাউন্টারটি চারটি রিজেকশন এবং কোনো সফল আউটপুট না থাকার কথা রিপোর্ট করেছিল। আমি এটিকে গেট তার কাজ করছে বলে ধরে নিয়েছিলাম, ফিচারটি ডাউন আছে বলে নয়।
কাউন্টারটি যা লুকিয়ে রেখেছিল তা হলো একটি দ্বি-স্তরীয় ব্যর্থতা:
- মডেল চলছে না – মডেলটি সিস্টেমের বাকি অংশের সাথে একটি মেশিন শেয়ার করে। মেমরি বাঁচাতে, হোস্টটি নিষ্ক্রিয়তার পর এটি আনলোড করে দেয়।
- রিলোড করার সময় টাইমআউট – যখন একটি নতুন হুমকি দেখা দিল, সিস্টেমটি প্রায় দুই গিগাবাইট মডেল ডেটা রিলোড করার চেষ্টা করেছিল। রিলোড প্রক্রিয়াটি ৩০ সেকেন্ডের রেসপন্স টাইমআউট অতিক্রম করে ফেলেছিল, ফলে রিকোয়েস্টটি টাইমআউট হয়ে যায় এবং একটি খালি উত্তর প্রদান করে।
যেহেতু কাউন্টারটি একটি গেটেড রিজেকশন এবং একটি টাইমআউট-জনিত খালি উত্তরকে একই ঘটনা হিসেবে গণ্য করেছিল, তাই ড্যাশবোর্ডটি একটি “working safety gate” দেখাচ্ছিল, অথচ AI ফিচারটি কার্যত অচল ছিল।
কেন এটি গুরুত্বপূর্ণ
AI-চালিত প্রোডাক্টের ক্ষেত্রে, সেফটি গেট ক্ষতিকারক বা অর্থহীন আউটপুট রোধ করে। অপারেটররা সিস্টেমের স্বাস্থ্যের সংকেত হিসেবে গেটের ফায়ার রেট পর্যবেক্ষণ করেন। যখন সেই সংকেতটি সম্পর্কহীন ব্যর্থতার মোডগুলোর সাথে মিশে যায়, তখন মেট্রিকটি একটি নীরব মিথ্যা হয়ে দাঁড়ায়: পরিষেবাটি অনুপলব্ধ থাকা সত্ত্বেও এটি আশ্বস্ত করতে থাকে।
সমাধান যা দৃশ্যমানতা পুনরুদ্ধার করেছে
আমি তিনটি ব্যবহারিক পরিবর্তন করেছি:
- মডেলটিকে রেসিডেন্ট রাখা – হোস্টটিকে মেমরিতে মডেলটি ধরে রাখার জন্য অ্যাডজাস্ট করা হয়েছে, যা রিলোড বিলম্ব দূর করে।
- টাইমআউট বাড়ানো – মাঝে মাঝে ধীরগতির লোড সামলানোর জন্য রেসপন্স উইন্ডো বাড়ানো হয়েছে।
- কাউন্টারটিকে ভাগ করা – একক “rejected by gate” মেট্রিকটির পরিবর্তে চারটি আলাদা কাউন্টার ব্যবহার করা হয়েছে: accepted, rejected, empty response, এবং no answer।
তৃতীয় পদক্ষেপটি ছিল অত্যন্ত কার্যকর। একটি একক সংখ্যার পরিবর্তে যা যেকোনোভাবে ব্যাখ্যা করা যেতে পারে, এই চার-ভাগের বিভাজনটি দেখায় যে সেফটি গেটটি সক্রিয় কি না, মডেলটি উত্তর দিচ্ছে কি না, নাকি রিকোয়েস্টটি মডেল পর্যন্ত পৌঁছাতেই পারেনি।
সুবিধা ও অসুবিধা এবং পাল্টা যুক্তি
পরবর্তী করণীয়
যে সকল ডেভেলপার AI কম্পোনেন্ট রিলিজ করছেন, তাদের উচিত সেফটি চেক এবং সিস্টেম-লেভেল ফেইলিওর মিশ্রিত যেকোনো অ্যাগ্রিগেটেড কাউন্টার অডিট করা। প্রতিটি রিকোয়েস্টের পথ—মডেল লোড শুরু, গেট ইভ্যালুয়েশন, চূড়ান্ত ফলাফল—রেকর্ড করে একটি বিস্তারিত হিস্ট্রি লগ তৈরি করা হলে লুকানো সমস্যাগুলো শনাক্ত করার জন্য প্রয়োজনীয় ফরেনসিক ডেটা পাওয়া সম্ভব।
মূল শিক্ষা: একটি একক “gate-rejection” মেট্র
