উত্পাদন এমএল সিস্টেম: নিরীক্ষণ পাইপলাইন

অভিনন্দন! আপনি ইউনিকর্ন মডেলটি ব্যবহার করেছেন। আপনার মডেলটি কোনও সমস্যা ছাড়াই 24x7 চলবে। এটি যাতে কাজ করে তা নিশ্চিত করার জন্য, আপনাকে অবশ্যই আপনার মেশিন লার্নিং (ML) পাইপলাইন পর্যবেক্ষণ করতে হবে।

কাঁচা ডেটা যাচাই করার জন্য একটি ডেটা স্কিমা লিখুন

আপনার ডেটা নিরীক্ষণ করার জন্য, আপনাকে অবশ্যই প্রত্যাশিত পরিসংখ্যানগত মানের সাথে এটি পরীক্ষা করতে হবে, যে নিয়মগুলি ডেটা পূরণ করতে হবে। এই নিয়মগুলির সংগ্রহকে ডেটা স্কিমা বলা হয়। এই পদক্ষেপগুলি অনুসরণ করে একটি ডেটা স্কিমা সংজ্ঞায়িত করুন:

  1. আপনার বৈশিষ্ট্যের পরিসর এবং বিতরণ বুঝুন। শ্রেণীবদ্ধ বৈশিষ্ট্যের জন্য, সম্ভাব্য মানের সেট বুঝুন।

  2. আপনার বোধগম্যতা ডেটা স্কিমায় এনকোড করুন। নিয়মের উদাহরণ নিচে দেওয়া হল:

    • ব্যবহারকারীর জমা দেওয়া রেটিং সর্বদা ১ থেকে ৫ এর মধ্যে থাকে তা নিশ্চিত করুন।
    • "the" শব্দটি সবচেয়ে বেশি ব্যবহৃত হচ্ছে কিনা তা পরীক্ষা করে দেখুন (ইংরেজি টেক্সট ফিচারের জন্য)।
    • প্রতিটি শ্রেণীগত বৈশিষ্ট্য সম্ভাব্য মানের একটি নির্দিষ্ট সেট থেকে একটি মানে সেট করা আছে কিনা তা পরীক্ষা করুন।
  3. ডেটা স্কিমার সাথে আপনার ডেটা পরীক্ষা করুন। আপনার স্কিমায় ডেটা ত্রুটি ধরা উচিত যেমন:

    • অসঙ্গতি
    • শ্রেণীগত ভেরিয়েবলের অপ্রত্যাশিত মান
    • অপ্রত্যাশিত ডেটা বিতরণ

বৈশিষ্ট্য প্রকৌশল যাচাই করার জন্য ইউনিট পরীক্ষা লিখুন

যদিও আপনার কাঁচা ডেটা ডেটা স্কিমা অতিক্রম করতে পারে, আপনার মডেল কাঁচা ডেটার উপর প্রশিক্ষণ দেয় না। বরং, আপনার মডেল এমন ডেটার উপর প্রশিক্ষণ দেয় যা বৈশিষ্ট্য প্রকৌশলীকৃত। উদাহরণস্বরূপ, আপনার মডেল কাঁচা সংখ্যাসূচক ডেটার পরিবর্তে স্বাভাবিক সংখ্যাসূচক বৈশিষ্ট্যের উপর প্রশিক্ষণ দেয়। যেহেতু বৈশিষ্ট্য প্রকৌশলীকৃত ডেটা কাঁচা ইনপুট ডেটা থেকে খুব আলাদা হতে পারে, তাই আপনাকে কাঁচা ইনপুট ডেটার উপর আপনার পরীক্ষা থেকে আলাদাভাবে বৈশিষ্ট্য প্রকৌশলীকৃত ডেটা পরীক্ষা করতে হবে।

ফিচার ইঞ্জিনিয়ারড ডেটা সম্পর্কে আপনার বোধগম্যতার উপর ভিত্তি করে ইউনিট পরীক্ষা লিখুন। উদাহরণস্বরূপ, আপনি নিম্নলিখিত অবস্থার জন্য ইউনিট পরীক্ষা লিখতে পারেন:

  • সমস্ত সংখ্যাসূচক বৈশিষ্ট্য স্কেল করা হয়, উদাহরণস্বরূপ, 0 এবং 1 এর মধ্যে।
  • এক-গরম এনকোডেড ভেক্টরগুলিতে কেবল একটি একক 1 এবং N-1 শূন্য থাকে।
  • রূপান্তরের পর ডেটা বিতরণ প্রত্যাশার সাথে সঙ্গতিপূর্ণ। উদাহরণস্বরূপ, যদি আপনি Z-স্কোর ব্যবহার করে স্বাভাবিকীকরণ করে থাকেন, তাহলে Z-স্কোরের গড় 0 হওয়া উচিত।
  • আউটলায়ারগুলি পরিচালনা করা হয়, যেমন স্কেলিং বা ক্লিপিং দ্বারা।

গুরুত্বপূর্ণ ডেটা স্লাইসের জন্য মেট্রিক্স পরীক্ষা করুন

একটি সফল সমগ্র কখনও কখনও একটি অসফল উপসেটকে আড়াল করে দেয়। অন্য কথায়, দুর্দান্ত সামগ্রিক মেট্রিক্স সহ একটি মডেল এখনও কিছু পরিস্থিতিতে ভয়ানক ভবিষ্যদ্বাণী করতে পারে। উদাহরণস্বরূপ:

তোমার ইউনিকর্ন মডেল সামগ্রিকভাবে ভালো পারফর্ম করে, কিন্তু সাহারা মরুভূমির ভবিষ্যদ্বাণী করার সময় খারাপ পারফর্ম করে।

যদি আপনি সেই ধরণের ইঞ্জিনিয়ার হন যা সামগ্রিকভাবে দুর্দান্ত AUC নিয়ে সন্তুষ্ট, তাহলে আপনি সাহারা মরুভূমিতে মডেলের সমস্যাগুলি লক্ষ্য নাও করতে পারেন। যদি প্রতিটি অঞ্চলের জন্য ভাল ভবিষ্যদ্বাণী করা গুরুত্বপূর্ণ হয়, তাহলে আপনাকে প্রতিটি অঞ্চলের জন্য কর্মক্ষমতা ট্র্যাক করতে হবে। সাহারা মরুভূমির সাথে সম্পর্কিত ডেটার মতো ডেটার উপসেটগুলিকে ডেটা স্লাইস বলা হয়।

আগ্রহের ডেটা স্লাইসগুলি সনাক্ত করুন। তারপর আপনার সম্পূর্ণ ডেটাসেটের মেট্রিক্সের সাথে এই ডেটা স্লাইসের মডেল মেট্রিক্সের তুলনা করুন। আপনার মডেলটি সমস্ত ডেটা স্লাইসে ভাল পারফর্ম করে কিনা তা পরীক্ষা করলে পক্ষপাত দূর করতে সাহায্য করে। আরও তথ্যের জন্য ন্যায্যতা: পক্ষপাতের মূল্যায়ন দেখুন।

বাস্তব-বিশ্বের মেট্রিক্স ব্যবহার করুন

মডেল মেট্রিক্স অগত্যা আপনার মডেলের বাস্তব-বিশ্বের প্রভাব পরিমাপ করে না। উদাহরণস্বরূপ, একটি হাইপারপ্যারামিটার পরিবর্তন করলে একটি মডেলের AUC বৃদ্ধি পেতে পারে, কিন্তু পরিবর্তনটি ব্যবহারকারীর অভিজ্ঞতাকে কীভাবে প্রভাবিত করেছে? বাস্তব-বিশ্বের প্রভাব পরিমাপ করার জন্য, আপনাকে পৃথক মেট্রিক্স সংজ্ঞায়িত করতে হবে। উদাহরণস্বরূপ, আপনি আপনার মডেলের ব্যবহারকারীদের জরিপ করে নিশ্চিত করতে পারেন যে মডেল যখন ভবিষ্যদ্বাণী করেছিল তখন তারা সত্যিই একটি ইউনিকর্ন দেখেছিলেন।

প্রশিক্ষণ-পরিবেশন স্কিউ পরীক্ষা করুন

প্রশিক্ষণ-পরিবেশন স্কিউ মানে প্রশিক্ষণের সময় আপনার ইনপুট ডেটা পরিবেশনের সময় আপনার ইনপুট ডেটা থেকে আলাদা। নিম্নলিখিত টেবিলে দুটি গুরুত্বপূর্ণ ধরণের স্কিউ বর্ণনা করা হয়েছে:

আদর্শ সংজ্ঞা উদাহরণ সমাধান
স্কিমা স্কিউ প্রশিক্ষণ এবং পরিবেশন ইনপুট ডেটা একই স্কিমার সাথে সঙ্গতিপূর্ণ নয়। আপনার মডেলটি যখন পুরনো ডেটার উপর প্রশিক্ষণ অব্যাহত রাখে, তখন পরিবেশনকারী ডেটার ফর্ম্যাট বা বিতরণ পরিবর্তিত হয়। প্রশিক্ষণ এবং পরিবেশন ডেটা যাচাই করার জন্য একই স্কিমা ব্যবহার করুন। আপনার স্কিমা দ্বারা চেক করা হয়নি এমন পরিসংখ্যান, যেমন অনুপস্থিত মানের ভগ্নাংশ, আলাদাভাবে পরীক্ষা করে দেখুন।
বৈশিষ্ট্য স্কিউ প্রশিক্ষণ এবং পরিবেশনের মধ্যে ইঞ্জিনিয়ারড ডেটা ভিন্ন। ফিচার ইঞ্জিনিয়ারিং কোড প্রশিক্ষণ এবং পরিবেশনের মধ্যে পার্থক্য করে, বিভিন্ন ইঞ্জিনিয়ারড ডেটা তৈরি করে। স্কিমা স্কিউ-এর মতো, প্রশিক্ষণ এবং ইঞ্জিনিয়ারড ডেটা পরিবেশনের ক্ষেত্রে একই পরিসংখ্যানগত নিয়ম প্রয়োগ করুন। সনাক্ত করা স্কিউড বৈশিষ্ট্যের সংখ্যা এবং প্রতিটি বৈশিষ্ট্যের জন্য স্কিউড উদাহরণের অনুপাত ট্র্যাক করুন।

প্রশিক্ষণ-পরিবেশনের বিকৃতির কারণগুলি সূক্ষ্ম হতে পারে। পূর্বাভাসের সময় আপনার মডেলের কাছে কী ডেটা উপলব্ধ তা সর্বদা বিবেচনা করুন। প্রশিক্ষণের সময়, কেবলমাত্র সেই বৈশিষ্ট্যগুলি ব্যবহার করুন যা পরিবেশনের সময় আপনার কাছে উপলব্ধ থাকবে।

অনুশীলন: আপনার বোধগম্যতা পরীক্ষা করুন

ধরুন আপনার একটি অনলাইন স্টোর আছে এবং আপনি একটি নির্দিষ্ট দিনে কত টাকা আয় করবেন তা ভবিষ্যদ্বাণী করতে চান। আপনার ML লক্ষ্য হল গ্রাহকের সংখ্যাকে একটি বৈশিষ্ট্য হিসেবে ব্যবহার করে দৈনিক আয়ের পূর্বাভাস দেওয়া।

আপনি কোন সমস্যার সম্মুখীন হতে পারেন?
উত্তরটি দেখতে এখানে ক্লিক করুন

লেবেল ফুটো হয়েছে কিনা তা পরীক্ষা করুন

লেবেল লিকেজ মানে হল যে আপনার গ্রাউন্ড ট্রুথ লেবেলগুলি যা আপনি ভবিষ্যদ্বাণী করার চেষ্টা করছেন তা অসাবধানতাবশত আপনার প্রশিক্ষণ বৈশিষ্ট্যগুলিতে প্রবেশ করেছে। লেবেল লিকেজ কখনও কখনও সনাক্ত করা খুব কঠিন।

অনুশীলন: আপনার বোধগম্যতা পরীক্ষা করুন

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

  • রোগীর বয়স
  • রোগীর লিঙ্গ
  • পূর্বের চিকিৎসাগত অবস্থা
  • হাসপাতালের নাম
  • গুরুত্বপূর্ণ লক্ষণ
  • পরীক্ষার ফলাফল
  • বংশগতি

লেবেলটি নিম্নরূপ:

  • বুলিয়ান: রোগীর কি ক্যান্সার আছে?

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

টেস্ট সেটে উৎকৃষ্ট এই মডেলটি বাস্তব জগতে কেন মারাত্মকভাবে ব্যর্থ হল?
উত্তরটি দেখতে এখানে ক্লিক করুন

পাইপলাইন জুড়ে মডেলের বয়স পর্যবেক্ষণ করুন

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

মডেলের ওজন এবং আউটপুট সংখ্যাগতভাবে স্থিতিশীল কিনা তা পরীক্ষা করুন

মডেল প্রশিক্ষণের সময়, আপনার ওজন এবং স্তর আউটপুট NaN (কোন সংখ্যা নয়) বা Inf (অসীম) হওয়া উচিত নয়। আপনার ওজন এবং স্তর আউটপুটের NaN এবং Inf মান পরীক্ষা করার জন্য পরীক্ষা লিখুন। অতিরিক্তভাবে, পরীক্ষা করুন যে একটি স্তরের অর্ধেকেরও বেশি আউটপুট শূন্য নয়।

মডেলের কর্মক্ষমতা পর্যবেক্ষণ করুন

তোমার ইউনিকর্নের উপস্থিতির পূর্বাভাসকারী প্রত্যাশার চেয়েও বেশি জনপ্রিয় হয়েছে! তুমি প্রচুর ভবিষ্যদ্বাণী অনুরোধ এবং আরও বেশি প্রশিক্ষণের তথ্য পাচ্ছ। তুমি মনে করো যে এটি দুর্দান্ত, যতক্ষণ না তুমি বুঝতে পারছো যে তোমার মডেল প্রশিক্ষণের জন্য আরও বেশি স্মৃতি এবং সময় নিচ্ছে। তুমি এই পদক্ষেপগুলি অনুসরণ করে তোমার মডেলের কর্মক্ষমতা পর্যবেক্ষণ করার সিদ্ধান্ত নিও:

  • কোড, মডেল এবং ডেটার সংস্করণ অনুসারে মডেলের কর্মক্ষমতা ট্র্যাক করুন। এই ধরনের ট্র্যাকিং আপনাকে কর্মক্ষমতা হ্রাসের সঠিক কারণ চিহ্নিত করতে দেয়।
  • পূর্ববর্তী সংস্করণের বিপরীতে এবং একটি নির্দিষ্ট থ্রেশহোল্ডের বিপরীতে নতুন মডেল সংস্করণের জন্য প্রতি সেকেন্ডে প্রশিক্ষণের ধাপগুলি পরীক্ষা করুন।
  • মেমরি ব্যবহারের জন্য একটি থ্রেশহোল্ড সেট করে মেমরি লিক ধরা।
  • API রেসপন্স টাইম মনিটর করুন এবং তাদের পার্সেন্টাইল ট্র্যাক করুন। যদিও API রেসপন্স টাইম আপনার নিয়ন্ত্রণের বাইরে হতে পারে, ধীর রেসপন্সের ফলে বাস্তব-জগতের মেট্রিক্স খারাপ হতে পারে।
  • প্রতি সেকেন্ডে কতগুলি প্রশ্নের উত্তর দেওয়া হয়েছে তা পর্যবেক্ষণ করুন।

পরিবেশিত ডেটার উপর লাইভ মডেলের মান পরীক্ষা করুন

তুমি তোমার মডেল যাচাই করে ফেলেছো। কিন্তু যদি তোমার বৈধতা তথ্য রেকর্ড করার পর বাস্তব-বিশ্বের পরিস্থিতি, যেমন ইউনিকর্ন আচরণ, পরিবর্তিত হয়? তাহলে তোমার পরিবেশিত মডেলের মান হ্রাস পাবে। তবে, পরিবেশনে মান পরীক্ষা করা কঠিন কারণ বাস্তব-বিশ্বের ডেটা সবসময় লেবেল করা হয় না। যদি তোমার পরিবেশিত ডেটা লেবেল করা না থাকে, তাহলে এই পরীক্ষাগুলি বিবেচনা করো:

  • হিউম্যান রেটার ব্যবহার করে লেবেল তৈরি করুন

  • ভবিষ্যদ্বাণীতে উল্লেখযোগ্য পরিসংখ্যানগত পক্ষপাত দেখায় এমন মডেলগুলি তদন্ত করুন। শ্রেণীবিভাগ দেখুন: ভবিষ্যদ্বাণী পক্ষপাত

  • আপনার মডেলের জন্য বাস্তব-বিশ্বের মেট্রিক্স ট্র্যাক করুন। উদাহরণস্বরূপ, যদি আপনি স্প্যামকে শ্রেণীবদ্ধ করেন, তাহলে আপনার পূর্বাভাসগুলি ব্যবহারকারী-প্রতিবেদিত স্প্যামের সাথে তুলনা করুন।

  • আপনার প্রশ্নের একটি অংশে একটি নতুন মডেল সংস্করণ পরিবেশন করে প্রশিক্ষণ এবং ডেটা পরিবেশনের মধ্যে সম্ভাব্য পার্থক্য হ্রাস করুন। আপনার নতুন পরিবেশন মডেল যাচাই করার সাথে সাথে, ধীরে ধীরে সমস্ত প্রশ্ন নতুন সংস্করণে স্যুইচ করুন।

এই পরীক্ষাগুলি ব্যবহার করে, ভবিষ্যদ্বাণীর মানের আকস্মিক এবং ধীর অবক্ষয় উভয়ই পর্যবেক্ষণ করতে ভুলবেন না।

র‍্যান্ডমাইজেশন

আপনার ডেটা জেনারেশন পাইপলাইনকে পুনরুৎপাদনযোগ্য করে তুলুন। ধরুন আপনি একটি বৈশিষ্ট্য যুক্ত করতে চান যাতে এটি মডেলের গুণমানকে কীভাবে প্রভাবিত করে তা দেখতে পারেন। একটি ন্যায্য পরীক্ষার জন্য, এই নতুন বৈশিষ্ট্যটি ছাড়া আপনার ডেটাসেটগুলি অভিন্ন হওয়া উচিত। সেই মনোভাবের সাথে, নিশ্চিত করুন যে ডেটা জেনারেশনে যেকোনো র্যান্ডমাইজেশন নির্ধারণমূলক করা যেতে পারে:

  • আপনার র‍্যান্ডম নম্বর জেনারেটর (RNG) সিড করুন । সিডিং নিশ্চিত করে যে RNG প্রতিবার চালানোর সময় একই ক্রমে একই মান আউটপুট করে, আপনার ডেটাসেট পুনরায় তৈরি করে।
  • ইনভেরিয়েন্ট হ্যাশ কী ব্যবহার করুন। হ্যাশিং হল ডেটা বিভক্ত বা নমুনা করার একটি সাধারণ উপায়। আপনি প্রতিটি উদাহরণ হ্যাশ করতে পারেন এবং ফলাফলের পূর্ণসংখ্যা ব্যবহার করে উদাহরণটি কোন স্প্লিটে রাখবেন তা নির্ধারণ করতে পারেন। প্রতিবার ডেটা জেনারেশন প্রোগ্রাম চালানোর সময় আপনার হ্যাশ ফাংশনের ইনপুটগুলি পরিবর্তন করা উচিত নয়। উদাহরণস্বরূপ, যদি আপনি আপনার হ্যাশগুলি চাহিদা অনুসারে পুনরায় তৈরি করতে চান তবে আপনার হ্যাশে বর্তমান সময় বা র্যান্ডম সংখ্যা ব্যবহার করবেন না।

পূর্ববর্তী পদ্ধতিগুলি আপনার ডেটা নমুনা এবং বিভাজন উভয় ক্ষেত্রেই প্রযোজ্য।

হ্যাশিংয়ের জন্য বিবেচ্য বিষয়গুলি

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

  • আপনার প্রশিক্ষণ সেটে কম বৈচিত্র্যপূর্ণ প্রশ্নের সেট দেখা যাবে।
  • তোমার মূল্যায়ন সেটগুলো কৃত্রিমভাবে কঠিন হবে, কারণ এগুলো তোমার প্রশিক্ষণের তথ্যের সাথে ওভারল্যাপ করবে না। বাস্তবে, পরিবেশনের সময়, তুমি তোমার প্রশিক্ষণের তথ্যে কিছু লাইভ ট্র্যাফিক দেখতে পাবে, তাই তোমার মূল্যায়নে তা প্রতিফলিত হওয়া উচিত।

পরিবর্তে আপনি query + query date-এ হ্যাশ করতে পারেন, যার ফলে প্রতিটি দিনের জন্য আলাদা হ্যাশিং হবে।

চিত্র ৭। অ্যানিমেটেড ভিজ্যুয়ালাইজেশন দেখায় যে কীভাবে শুধুমাত্র কোয়েরিতে হ্যাশ করার ফলে ডেটা প্রতিদিন একই বাকেটে যায়, কিন্তু কোয়েরি এবং কোয়েরি সময় হ্যাশ করার ফলে ডেটা প্রতিদিন বিভিন্ন বাকেটে যায়। তিনটি বাকেট হল প্রশিক্ষণ, মূল্যায়ন এবং উপেক্ষিত।
চিত্র ৭। কোয়েরিতে হ্যাশিং বনাম কোয়েরিতে হ্যাশিং + কোয়েরির তারিখ।