শিরোনাম: ত্রুটিটি ছিল একটি অক্ষ (Axis) সংক্রান্ত
PyTorch-এর chunked-scan ইমপ্লিমেন্টেশনে একটি লুকানো ত্রুটি হাইব্রিড মডেলগুলোকে ভবিষ্যতের টোকেনগুলো দেখে ফেলার সুযোগ করে দেয় যখন ফাস্ট ফিউজড কার্নেল (fast fused kernels) অনুপস্থিত থাকে, যা Zamba2-1.2B এবং Nemotron-H-8B-এর মতো চেকপয়েন্টগুলোকে ঝুঁকির মুখে ফেলে। এই ত্রুটিটি ভুল অক্ষ বরাবর একটি রিডাকশন (reduction) সম্পন্ন হওয়ার কারণে ঘটে এবং এটি এমন একটি এক্সিকিউশন পাথে দেখা দেয় যার ওপর বেশিরভাগ CI পাইপলাইন এবং CPU রান নির্ভর করে।
কেন এই ত্রুটিটি গুরুত্বপূর্ণ
হাইব্রিড এবং স্টেট-স্পেস মডেলগুলো এখন আর কেবল অ্যাটেনশনের (attention) ওপর নির্ভর করে না; তারা লিনিয়ার রিকারেন্স (linear recurrences), স্ক্যান (scans) এবং কনভোলিউশনও (convolutions) ব্যবহার করে। অ্যাটেনশন ম্যাট্রিক্সে ভবিষ্যতের টোকেনগুলোকে ব্লক করার জন্য একটি মাস্কিং অপারেশন স্বয়ংক্রিয়ভাবে সেই অতিরিক্ত অপারেশনগুলোর জন্য কজালিটি (causality) নিশ্চিত করে না। যখন স্ক্যান সঠিকভাবে পরিচালনা করার জন্য প্রয়োজনীয় ফাস্ট ফিউজড কার্নেলগুলো অনুপস্থিত থাকে, তখন PyTorch একটি পিওর-পাইথন (pure-Python) chunked-scan পাথে ফিরে যায়। সেই ফ্যালব্যাক পাথে অক্ষের ভুল মিশ্রণ (axis-mixup) রয়েছে, যা ইনফারেন্সের সময় পরবর্তী পজিশন থেকে তথ্য পেছনের দিকে প্রবাহিত হতে দেয়।
এই লিকটি নিঃশব্দে ঘটে। এটি মডেলটিকে ক্র্যাশ করে না বা কোনো স্পষ্ট ত্রুটি দেখায় না। পরিবর্তে, এটি লস (loss) এবং পারপ্লেক্সিটি (perplexity)-কে কৃত্রিমভাবে কম দেখায় কারণ মডেলটি কার্যত প্রতারণা করছে—এটি সেই টোকেনগুলোই দেখে ফেলছে যা তাকে প্রেডিক্ট করার কথা ছিল। তাই যে কোনো ডাউনস্ট্রিম মূল্যায়ন (evaluation) যদি এই মেট্রিকগুলোর ওপর ভরসা করে, তবে তা একটি ত্রুটিপূর্ণ ভিত্তির ওপর নির্মিত হয়।
কীভাবে সমস্যাটি উন্মোচিত হলো
গবেষকরা একই মডেলের মাধ্যমে দুটি ফরওয়ার্ড পাস তুলনা করেছেন:
- একটি র্যান্ডম টোকেন সিকোয়েন্স।
- একটি টোকেন পরিবর্তন করে তৈরি করা হুবহু একই সিকোয়েন্স।
তারা লেয়ার বাই লেয়ার হিডেন স্টেটগুলোর (hidden states) পার্থক্য পরিমাপ করেছেন। মাস্ক ইন্সপেকশনে কিছু ধরা পড়েনি, কিন্তু ফল্ট ইনজেক্ট করে করা একটি পার-লেয়ার অডিটে ১৯২টির মধ্যে ১৯২টি ইনজেক্ট করা ত্রুটি শনাক্ত করা হয়েছে, যা এই লিকটি নিশ্চিত করেছে।
transformers লাইব্রেরির একটি দ্রুত সমীক্ষায় দেখা গেছে:
- Zamba2-1.2B লিক করে যখন চাঙ্ক সাইজ (chunk size) ২৫৬ সেট করা হয়।
- Nemotron-H-8B লিক করে ১২৮ চাঙ্ক সাইজে।
- অন্যান্য বেশিরভাগ চেকপয়েন্ট একই পরিস্থিতিতে কোনো লিক দেখায়নি।
ত্রুটিটি chunked-scan কোড পাথে বিদ্যমান যা ঐচ্ছিক ফিউজড কার্নেল অনুপস্থিত থাকলে চলে। এর মধ্যে রয়েছে:
- সমস্ত CPU এক্সিকিউশন।
- নির্দিষ্ট ফিউজড-কার্নেল প্যাকেজ নেই এমন GPU এনভায়রনমেন্ট।
- অতিরিক্ত ডিপেন্ডেন্সি ছাড়া স্ট্যান্ডার্ড PyTorch ইনস্টলেশন।
যেহেতু ত্রুটিটি কেবল তখনই দেখা দেয় যখন সেই কার্নেলগুলো অনুপস্থিত থাকে, তাই এটি CI এনভায়রনমেন্ট এবং CPU-তে দেখা দিতে পারে।
কারা ঝুঁকিতে আছে এবং এর প্রভাব কী
যে কোনো টিম যারা ফিউজড কার্নেল ছাড়া হাইব্রিড মডেল প্রশিক্ষণ (train), ফাইন-টিউন (fine-tune) বা মূল্যায়ন (evaluate) করে, তারা অতিরঞ্জিত পারফরম্যান্স নম্বর প্রকাশ করার ঝুঁকিতে রয়েছে। লস বা পারপ্লেক্সিটির আপাত উন্নতি একটি বিভ্রম মাত্র; মডেলটি কার্যত "সামনে দেখে ফেলেছে" (looked ahead)। গবেষণা গ্রুপগুলোর জন্য এটি স্টেট-অফ-দ্য-আর্ট ফলাফলের বিষয়ে বিভ্রান্তিকর দাবি করতে পারে। বাণিজ্যিক ব্যবহারের ক্ষেত্রে, এটি জেনারেশন টাস্কে এমন ডাউনস্ট্রিম ত্রুটি ঘটাতে পারে যা মডেলটি আসলে কখনো শিখতে পারেনি।
পাল্টা যুক্তি
কিছু ডেভেলপার যুক্তি দেন যে একটি সঠিকভাবে প্রয়োগ করা কজাল মাস্ক (causal mask) ভবিষ্যতের টোকেন লিক প্রতিরোধ করার জন্য যথেষ্ট। এই ত্রুটি সেই ধারণাটিকে ভুল প্রমাণ করে: স্ক্যান, কনভোলিউশন এবং কিছু নরমালাইজেশন লেয়ার মাস্ককে সম্পূর্ণভাবে বাইপাস করতে পারে। চাঙ্কড স্ক্যানের অক্ষের ভুল মিশ্রণ (axis-mixup) দেখায় যে কজালিটি ডেটা যেখানেই প্রবাহিত হোক না কেন সর্বত্র প্রয়োগ করতে হবে, কেবল অ্যাটেনশন ম্যাট্রিক্সে নয়।
পরবর্তীতে যা খেয়াল রাখতে হবে
- ডিপেন্ডেন্সি হাইজিন (Dependency hygiene): সমস্ত ট্রেনিং এবং ইনফারেন্স নোডে, বিশেষ করে CI পাইপলাইনে, ফাস্ট ফিউজড-কার্নেল প্যাকেজগুলো ইনস্টল করুন।
- অডিট স্ক্রিপ্ট (Audit scripts): আবিষ্কারকদের সুপারিশ করা দ্বি-ধাপ বিশিষ্ট অডিট অনুসরণ করুন:
- পজিটিভ কন্ট্রোল হিসেবে আপনি যে চেকপয়েন্টটি পরীক্ষা করছেন তাতে একটি পরিচিত ফল্ট ইনজেক্ট করুন।
- মডেলের চাঙ্ক বা উইন্ডো সাইজের চেয়ে বড় সিকোয়েন্স চালান; ছোট সিকোয়েন্সে লিকটি কখনোই ধরা পড়বে না।
যে কোনো হাইব্রিড বা স্টেট-স্পেস চেকপয়েন্টে চাঙ্ক সাইজের চেয়ে বেশি সিকোয়েন্স লেন্থ দিয়ে অডিট চালালে বোঝা যাবে মডেলটি এখনও ঝুঁকিপূর্ণ কি না।
মূল কথা: এমনকি একটি মডেল যা প্রতিটি স্ট্যান্ডার্ড টেস্ট পাস করে, সেটিও নিঃশব্দে প্রতারণা করতে পারে যখন এক্সিকিউশন পাথ একটি ত্রুটিপূর্ণ ইমপ্লিমেন্টেশনে ফিরে যায়। ফাস্ট ফিউজড কার্নেলগুলো উপস্থিত আছে কিনা তা যাচাই করা—এবং অ্যাটেনশন মাস্কের বাইরে লিক আছে কিনা তা স্পষ্টভাবে পরীক্ষা করা—এখন যেকোনো হাইব্রিড মডেলের মেট্রিকগুলোর ওপর ভরসা করার আগে অপরিহার্য পদক্ষেপ।
