প্রকল্প সম্পর্কে
Antiserum নিজেকে ট্রেনিং ডেটার জন্য একটি অ্যান্টিভাইরাস হিসেবে বর্ণনা করে: একটি লোকাল স্ক্যানার যা টেক্সট ডেটাসেটে সম্ভাব্য বিষাক্ত উপাদান (poison) চিহ্নিত করে এবং নিশ্চিত সিগনেচারের একটি শেয়ারড ফিড প্রদান করে। রিপোজিটরিটিই এখানে মূল পণ্য। এতে কোনো লগইন বা হোস্ট করা স্ক্যানিং পরিষেবা নেই। পাবলিক ডকুমেন্টেশন GitHub Pages থেকে পাওয়া যায়, তবে সাইটটি শুধুমাত্র CLI-এর ডকুমেন্টেশন প্রদান করে; এটি কোনো কর্পাস স্ক্যান, বিচার বা হোস্ট করে না।
প্রকল্পটি প্রি-ট্রেনিংয়ের একটি নির্দিষ্ট প্রশ্নের লক্ষ্য করে তৈরি করা হয়েছে: একটি ডেটাসেট কি শেখার জন্য নিরাপদ? এই প্রেক্ষাপটে, নিরাপদ মানে হলো মিক্সটিতে কোনো লুকানো ট্রিগার, সমন্বিত লেবেল ফ্লিপ, ডুপ্লিকেট ডাম্প বা অন্য কোনো রোপণ করা সারি নেই যা মডেলটি মুখস্থ করার আগ পর্যন্ত পরিষ্কার মনে হতে পারে। এই টুলটি Python 3.10+ সংস্করণের এবং PyPI থেকে 'pip install antiserum' কমান্ডের মাধ্যমে ইনস্টল করা যায়, যা 'antiserum' কমান্ডটি সক্রিয় করে। লোকাল স্ক্যান নেটওয়ার্ক ব্যবহার করে না, কোনো API কী নেয় না বা ডেটাসেট ডাউনলোড করে না। এটি JSONL, CSV, JSON, প্লেইন টেক্সট, gzip-কম্প্রেসড ভেরিয়েন্ট এবং লোকাল Hugging Face ক্যাশ বা ডাউনলোড করা ডেটাসেট পাথ স্ক্যান করতে পারে। Arrow এবং Parquet শার্ডের জন্য একটি ঐচ্ছিক এক্সট্রা প্রয়োজন।
স্ক্যানারের তিনটি স্তর রয়েছে। ইননেট (innate) স্তরটি লোকাল মেশিনে চলে এবং এতে বিরল n-grams, লেবেল ফ্লিপ, নিয়ার-কপি ডাম্প, Jaccard-এর বাইরের প্যারাফ্রেজ ফ্যামিলি, দৈর্ঘ্য এবং এনট্রপি স্পাইক, সিগনেচার ফিড হিট, লুকানো ইউনিকোড কন্ট্রোল এবং মিক্সড-স্ক্রিপ্ট টোকেনের পরীক্ষা অন্তর্ভুক্ত থাকে। অ্যাডাপ্টিভ (adaptive) স্তরটি একটি প্রকাশিত রুব্রিক যেখানে একজন মানুষ বা এজেন্ট কোনো ফ্ল্যাগকে বিষাক্ত (poison), জাঙ্ক (junk) বা ফলস অ্যালার্ম হিসেবে চিহ্নিত করতে পারেন। মেমোরি (memory) স্তরটি হলো সিগনেচারের একটি লোকাল ফিড এবং একটি রেফারেন্স কর্পাস। তারিখ অনুযায়ী প্যাক রিলিজগুলো একটি চেঞ্জলগে ট্র্যাক করা হয় এবং একটি স্ক্যান একটি রিসিট লেখে যাতে ডেটাসেট হ্যাশ, স্ক্যানার ভার্সন, প্যাক আইডেন্টিটি, ফ্ল্যাগ এবং নিশ্চিত হিট থাকে।
ডকুমেন্ট করা চেকগুলোর মধ্যে রয়েছে ট্রিগার n-grams, লেবেল ফ্লিপ, ডুপ্লিকেট ইনজেক্ট, প্যারাফ্রেজ ওভারওয়েট, স্ট্যাট আউটলায়ার, সিগনেচার হিট, ইনস্ট্রাকশন ওভাররাইড, হিডেন ইউনিকোড এবং মিক্সড স্ক্রিপ্ট। কিছু চেকের জন্য সর্বদা মানুষের নিশ্চিতকরণের প্রয়োজন হয়, আবার কিছু ক্ষেত্রে প্রথম ধাপেই জাঙ্ক বা ফলস-অ্যালার্ম ক্লাসিফিকেশন হতে পারে। ব্যবহারকারীরা শুধুমাত্র নির্বাচিত চেক চালাতে পারেন বা কিছু চেক বাদ দিতে পারেন, এবং রিসিটে রেকর্ড করা থাকে কোন চেকগুলো চালানো হয়েছে যাতে কোনো বাদ পড়া অংশ দৃশ্যমান থাকে।
স্ক্যানিং আচরণ ইচ্ছাকৃতভাবে লোকাল এবং সীমাবদ্ধ। ডিফল্ট সীমা হলো ২৫,০০০ সারি বা ১২৮ MiB সোর্স ফাইল। বড় ডাম্পের ক্ষেত্রে এটি সীমার কাছে এসে থেমে যায়, রিসিটে ট্রাঙ্কেশন (truncation) রেকর্ড করে এবং মেমোরি শেষ হওয়ার পরিবর্তে এক্সিট ৩ (exit 3) প্রদান করে। একটি 'allow-truncated' অপশন ইচ্ছাকৃত স্যাম্পলের জন্য এক্সিট ০ (exit 0) বজায় রাখতে পারে, যদিও রিসিটে ট্রাঙ্কেটেড লেখা থাকবে। এক্সিট কোডগুলো কোনো ফেইলিং ফ্ল্যাগ ছাড়া সম্পন্ন স্ক্যান, ফেইল-অন থ্রেশহোল্ডের সমান বা তার বেশি ফ্ল্যাগ, ইউসেজ বা I/O এরর এবং ট্রাঙ্কেশন-এর মধ্যে পার্থক্য করে। 'Fail-on' যেকোনো (any), হাই (high) বা নেভার (never) হতে পারে। একই ফোল্ডার বাইটস এবং ফ্ল্যাগের জন্য রিসিটগুলো ডিটারমিনিস্টিক হয় এবং একটি 'diff' কমান্ডের মাধ্যমে পুনরায় স্ক্যান না করেই সংরক্ষিত বেসলাইন রিসিটের সাথে নতুন রিসিটের তুলনা করা যায়। টুলটি লোকালি JSON, SARIF, HTML, CSV এবং Markdown রিপোর্ট আউটপুট করতে পারে।
কনফিগারেশন একটি লোকাল 'antiserum.toml' ফাইলে রাখা যেতে পারে, যেখানে ফ্ল্যাগগুলো ফাইলের সেটিংসকে ওভাররাইড করে। একটি 'allowlist.jsonl' ফাইল পরিচিত ফলস অ্যালার্মগুলোকে দমন করতে পারে এবং রিসিটে অ্যালও-লিস্ট পাথ এবং হ্যাশ রেকর্ড করা থাকে যাতে দমন প্রক্রিয়াটি গোপনে না ঘটে। কনফার্ম ওয়ার্কফ্লো-তে ফ্ল্যাগ বিচার করা, বাকি বিষয়গুলো নিষ্পত্তি করা, লোকাল অ্যালও-লিস্টে ফলস অ্যালার্ম যোগ করা এবং একটি সিগনেচার লাইন ও পুল-রিকোয়েস্ট বডি প্রস্তাব করার কমান্ড ব্যবহৃত হয়। নিশ্চিত বিষাক্ত ডেটা একটি পাবলিক সিগনেচারে পরিণত হয় যা ভবিষ্যতের স্ক্যানগুলো ম্যাচ করতে পারে।
রিপোজিটরিতে দুই মিনিটের ডেমোর জন্য একটি টয় কর্পাস এবং কয়েকশ উদ্ভিদসহ একটি রেফারেন্স কর্পাস রয়েছে। 'make reproduce' কমান্ডটি রেফারেন্স মিক্স স্ক্যান করে এবং কোনো রোপণ করা সারি মিস হলে নন-জিরো এক্সিট দেয়। টেস্টগুলোর মধ্যে লিন্টিং, pytest কভারেজ, ফিল্ড-হান্ট ফিক্সচার এবং থ্রেশহোল্ডের বিপরীতে প্রতি-চেক মূল্যায়ন অন্তর্ভুক্ত। একটি GitHub Action কলার রানারে CLI চালাতে পারে, রিসিট এবং SARIF আর্টিফ্যাক্ট তৈরি করতে পারে এবং ঐচ্ছিক ভাবে কোড স্ক্যানিংয়ের জন্য SARIF আপলোড করতে পারে। CI উদাহরণগুলো দেখায় কীভাবে রিসিট ফ্ল্যাগ বা সেভেরিটির ভিত্তিতে একটি জব ফেইল করানো যায়।
README-তে এর পরিধি স্পষ্টভাবে উল্লেখ করা হয়েছে। Antiserum কোনো রানটাইম প্রম্পট ফায়ারওয়াল, মডেল-ফাইল বা পিকল ম্যালওয়্যার স্ক্যানার, ডেটা-কোয়ালিটি বা লেবেল-এরর টুল, ওয়েট-লেভেল ব্যাকডোর ইনভার্টার বা ইমেজ-পয়জন জেনারেটর নয়। বর্তমান সংস্করণে এটি শুধুমাত্র টেক্সট-ডেটাসেট স্ক্যানিং টুল। সৎ কভারেজ, থ্রেট মডেল, ফিল্ড-হান্ট নোট এবং পজিশনিং রিপোজিটরিতে ডকুমেন্ট করা আছে। প্রকল্পটি MIT-লাইসেন্সপ্রাপ্ত এবং এটি একটি কার্যকরী CLI, চেক, কনফার্ম লুপ, টয় ডেমো, রেফারেন্স কর্পাস, ফিড এবং রিসিটসহ ১১-১২ সপ্তাহের স্ট্যাটাস হিসেবে উপস্থাপন করা হয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.