University of Illinois Urbana-Champaign-এর একটি গবেষণা দল আবিষ্কার করেছে যে বহুল ব্যবহৃত BIRD Text-to-SQL বেঞ্চমার্কে অর্ধেকেরও বেশি অ্যানোটেশন ভুল, যা অনেক ডেভেলপার যে নির্ভুলতা স্কোরের (accuracy scores) ওপর নির্ভর করেন, তার কার্যকারিতাকে প্রশ্নবিদ্ধ করে তুলেছে।
কেন এই বেঞ্চমার্কটি গুরুত্বপূর্ণ
BIRD হলো একটি মডেল কতটা ভালোভাবে একটি প্রাকৃতিক-ভাষার (natural-language) প্রশ্নকে SQL কুয়েরিতে রূপান্তর করতে পারে তা পরিমাপ করার জন্য ডি-ফ্যাক্টো (de-facto) মানদণ্ড। গবেষণাপত্র, প্রোডাক্ট শিট এবং নিয়োগ পরীক্ষার ক্ষেত্রে BIRD স্কোর উল্লেখ করা হয়। যদি নির্ভুলতা নির্ধারণকারী "গোল্ড" (gold) SQL স্টেটমেন্টগুলো ত্রুটিপূর্ণ হয়, তবে একটি মডেল যা আরও উন্নত কুয়েরি লিখতে পারে তাকে শাস্তি পেতে পারে, অন্যদিকে একটি মডেল যা ভুল গোল্ড উত্তরটি কপি করে তা পুরস্কার পেতে পারে।
কীভাবে ত্রুটির হার উন্মোচন করা হলো
UIUC টিম BIRD-dev স্প্লিট থেকে ২৩৮টি ব্যর্থতা পরীক্ষা করেছে। প্রতিটি মডেলের আউটপুট কেন ভুল হিসেবে চিহ্নিত করা হয়েছে তা অনুমান করার পরিবর্তে, তারা মডেল-জেনারেটেড SQL এবং গোল্ড রেফারেন্সের মধ্যে প্রতিটি অমিল ম্যানুয়ালি ট্যাগ করেছে। তাদের অডিটে দেখা গেছে যে ৫২.৮% ক্ষেত্রে অ্যানোটেশন ত্রুটি রয়েছে—ভুল SQL, অসামঞ্জস্যপূর্ণ স্কিমা (schema), এমনকি একটি ত্রুটিপূর্ণ প্রাকৃতিক-ভাষার প্রশ্ন।
একটি প্যাটার্ন চিহ্নিত ভুলের ১৯% এর জন্য দায়ী: মডেলটি DISTINCT ব্যবহার করেছে কিন্তু গোল্ড কুয়েরিতে তা ছিল না। কল্পনা করুন একজন ব্যবহারকারী অস্বাভাবিক ল্যাব রিপোর্টের ফলাফল থাকা রোগীর সংখ্যা জানতে চেয়েছেন। গোল্ড উত্তরটি COUNT(ID) দিয়ে সারি গণনা করে। যদি একজন রোগীর পাঁচটি অস্বাভাবিক ল্যাব রিপোর্ট থাকে, তবে গোল্ড কুয়েরিটি একটির পরিবর্তে পাঁচটি রিপোর্ট দেখাবে। মডেলের COUNT(DISTINCT ID) প্রতিটি রোগীকে সঠিকভাবে একবার গণনা করে। এই ক্ষেত্রে বেঞ্চমার্কটি মডেলের ত্রুটি হিসেবে রেকর্ড করে, যদিও মডেলের উত্তরটি উদ্দিষ্ট অর্থের (semantics) সাথে আরও সামঞ্জস্যপূর্ণ।
মডেল উন্নয়নের ওপর বাস্তব জগতের প্রভাব
ডেভেলপাররা প্রায়ই কম BIRD স্কোরের প্রতিক্রিয়ায় প্রম্পট পরিবর্তন করা, "don’t use DISTINCT" এর মতো সীমাবদ্ধতা যোগ করা বা বেঞ্চমার্ক ডেটার ওপর পুনরায় প্রশিক্ষণ (retraining) দেওয়ার মাধ্যমে ব্যবস্থা নেন। এই সমন্বয়গুলো রিপোর্ট করা স্কোর বাড়িয়ে দিতে পারে, যা উন্নতির একটি বিভ্রম তৈরি করে। UIUC-এর বিশ্লেষণ দেখায় যে এই "উন্নতি" আসলে ভুল উত্তরপত্রের সাথে ওভারফিটিং (overfitting) হতে পারে, যা প্রকৃত ডেটাবেসে পারফরম্যান্স কমিয়ে দিতে পারে যেখানে সঠিক লজিকের প্রয়োজন হয়।
গবেষকরা এর বিপরীত পরিস্থিতি প্রদর্শন করেছেন। মডেল এবং গোল্ড কুয়েরি উভয়ই পার্স (parse) করার পর, তারা এমন সাতটি উদাহরণ চিহ্নিত করেছেন যেখানে মডেলটি ভুলবশত দুটি আলাদা কলামকে একটিতে মার্জ (merge) করেছিল। এই ক্ষেত্রে গোল্ড SQL সঠিক ছিল। একটি পরিমার্জিত প্রম্পটের মাধ্যমে শুধুমাত্র সেই প্রকৃত ত্রুটিগুলোকে লক্ষ্য করে তারা বেঞ্চমার্ক স্কোর না বাড়িয়ে মডেলের পারফরম্যান্স বৃদ্ধি করেছেন।
স্টেকহোল্ডারদের জন্য এই ফলাফলের তাৎপর্য
- গবেষকগণ (Researchers): BIRD স্কোরের ওপর ভিত্তি করে প্রকাশিত দাবিগুলোতে অ্যানোটেশন মানের বিষয়ে সতর্কতা প্রয়োজন। বিভিন্ন গবেষণাপত্রের মধ্যে তুলনা হয়তো প্রকৃত পদ্ধতিগত অগ্রগতির পরিবর্তে বেঞ্চমার্কের নয়েজ (noise) সহ্য করার ক্ষমতার পার্থক্য প্রতিফলিত করতে পারে।
- প্রোডাক্ট টিম (Product teams): রিলিজের প্রস্তুতির একমাত্র মেট্রিক হিসেবে BIRD-এর ওপর নির্ভর করা মানে এমন মডেল বাজারে ছাড়ার ঝুঁকি নেওয়া যা ত্রুটিপূর্ণ কুয়েরি পুনরুৎপাদন করতে শিখেছে। নিজস্ব স্কিমার (proprietary schemas) ওপর বাস্তবমুখী পরীক্ষা করা অপরিহার্য হয়ে ওঠে।
- বেঞ্চমার্ক কিউরেটর (Benchmark curators): উচ্চ ত্রুটির হার নির্দেশ করে যে একটি পদ্ধতিগত পর্যালোচনা এখন সময়ের দাবি। গোল্ড সেট পরিষ্কার করা বা একটি সেকেন্ডারি "ভেরিফাইড" (verified) স্প্লিট প্রদান করা আত্মবিশ্বাস ফিরিয়ে আনতে পারে।
একটি ব্যবহারিক অডিট ওয়ার্কফ্লো
UIUC টিম একটি হালকা ওজনের (lightweight) প্রক্রিয়ার প্রস্তাব করেছে যা যেকোনো Text-to-SQL বেঞ্চমার্কে প্রয়োগ করা যেতে পারে:
- Parse: মডেল-জেনারেটেড এবং গোল্ড SQL স্টেটমেন্ট উভয়কেই অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রিতে (abstract syntax trees) পার্স করুন।
- Align: নির্বাচিত কলাম, ফিল্টার, জয়েন (joins) এবং অ্যাগ্রিগেশন ফাংশনগুলোর মধ্যে পার্থক্যগুলো প্রকাশ করতে কাঠামোগুলোকে অ্যালাইন করুন।
- Tag: প্রতিটি পার্থক্যকে ট্যাগ করুন (যেমন: অতিরিক্ত কলাম, অনুপস্থিত ফিল্টার, ভুল অ্যাগ্রিগেশন)।
- Summarize: প্রধান ত্রুটির বিভাগগুলো শনাক্ত করতে একটি হিস্টোগ্রামে ট্যাগগুলোকে সংক্ষিপ্ত করুন।
- Validate: প্রম্পট ইঞ্জিনিয়ারিংয়ের লক্ষ্য হিসেবে ব্যবহারের আগে প্রতিটি উচ্চ-ফ্রিকোয়েন্সি ট্যাগের জন্য গোল্ড কুয়েরিটি যাচাই করুন।
গোল্ড উত্তরটি নিশ্চিতভাবে সঠিক এমন ক্ষেত্রেই প্রম্পট সংশোধন করার দিকে মনোযোগ দিয়ে ডেভেলপাররা "একটি ত্রুটিপূর্ণ মেট্রিকের জন্য অপ্টিমাইজ করার" ফাঁদ এড়াতে পারেন।
মূল কথা
একটি বেঞ্চমার্ক যা তার অর্ধেকেরও বেশি উদাহরণ ভুলভাবে চিহ্নিত করে, তা নির্ভরযোগ্য মাপকাঠি হিসেবে কাজ করতে পারে না। UIUC-এর গবেষণা দেখায় যে BIRD দ্বারা চিহ্নিত অনেক "ভুল" আসলে মডেলের সাফল্য, যেখানে প্রকৃত ত্রুটিগুলো সঠিক গোল্ড উত্তরের আড়ালে লুকিয়ে থাকে। গোল্ড সেট অডিট করা, ইভ্যালুয়েশন পাইপলাইন পরিমার্জন করা এবং বেঞ্চমার্ক স্কোরকে একটি বিস্তৃত ভ্যালিডেশন কৌশলের অংশ হিসেবে বিবেচনা করা—এগুলোই নিশ্চিত করার একমাত্র উপায় যে কাগজে-কলমে করা উন্নতি বাস্তবে নির্ভরযোগ্যতায় রূপান্তরিত হবে।
