MLflow এ রান অনুসন্ধান করা হচ্ছে

Mlflow E Rana Anusandhana Kara Hacche



মেশিন লার্নিং পরীক্ষাগুলি ট্র্যাক এবং পরিচালনা করতে, MLflow একটি বিস্তৃত প্ল্যাটফর্ম অফার করে। রান অনুসন্ধান করার ক্ষমতা থাকা MLflow এর অন্যতম প্রধান বৈশিষ্ট্য। এটি বিকশিত পরীক্ষাগুলি সনাক্ত করা এবং সেগুলিকে এমনভাবে সংগঠিত করা সম্ভব করে যাতে যখনই প্রয়োজন হয় তথ্য সনাক্ত করা সহজ হয়৷ আমরা MLflow অনুসন্ধান API ব্যবহার করে বিভিন্ন মানদণ্ড ব্যবহার করে রান অনুসন্ধান করতে পারি যার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত থাকতে পারে:
  • পরীক্ষা আইডি বা নাম
  • আইডি চালান
  • পরামিতি এবং মান
  • মেট্রিক্স এবং মান
  • ট্যাগ
  • রানের সাথে যুক্ত অন্যান্য বৈশিষ্ট্য

রানগুলি স্থিতি, শুরুর সময়, শেষের সময় এবং MLflow অনুসন্ধান API ব্যবহার করে সময়কাল দ্বারা ফিল্টার করা যেতে পারে। এটি অনেক রানের মাধ্যমে ফিল্টার করা এবং ব্যবহারকারীদের আগ্রহী এমন নির্দিষ্ট রান খুঁজে পাওয়া সহজ করে তোলে।

MLflow অনুসন্ধান ফাংশন

MLflow অনুসন্ধান API অ্যাক্সেস করতে mlflow.search_runs() ফাংশন ব্যবহার করুন। এই ফাংশন নিম্নলিখিত মত বিভিন্ন আর্গুমেন্ট গ্রহণ করে:







  • পরীক্ষার আইডি বা নাম
  • স্ট্রিং বা পাঠ্য ফিল্টার করুন
  • max_results আর্গুমেন্ট দ্বারা রিটার্ন করার জন্য সর্বাধিক রানের সংখ্যা নির্দিষ্ট করা হয়

SQL (স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ) এর একটি সরলীকৃত রূপ যেখানে ক্লজ হল ফিল্টার স্ট্রিং বা টেক্সট। আমরা যে মাপকাঠিতে রান সাজাতে চাই তা নির্দেশ করতে এটি ব্যবহার করা যেতে পারে।



MLflow Search_Runs() ফাংশনের সিনট্যাক্স

আমরা যে পরীক্ষার মধ্যে সার্চ করতে চাই তার আসল আইডি বা নামটি অবশ্যই নিম্নলিখিত উদাহরণে 'experiment_id বা experiment_name' এর জন্য প্রতিস্থাপিত হবে। search_criteria ভেরিয়েবল পছন্দ অনুযায়ী অনুসন্ধানের মানদণ্ড ইনপুট করার অনুমতি দেয়। এই মানদণ্ডগুলি মেট্রিক্স, ট্যাগ, প্যারামিটার বা অতিরিক্ত বৈশিষ্ট্য দ্বারা নির্ধারিত হতে পারে। search_runs() ফাংশনের মৌলিক সিনট্যাক্স নিম্নরূপ:



# search_runs ফাংশন ব্যবহার করতে mlflow অনুসন্ধান API আমদানি করুন

আমদানি mlflow

# কিছু পরীক্ষা আইডি বা নাম প্রদান করুন (এটি ঐচ্ছিক;)

exp_id = 'পরীক্ষা আইডি বা NAME'

# রানের জন্য অনুসন্ধানের মানদণ্ড নির্ধারণ করুন

অনুসন্ধান স্ট্রিং = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' এবং params.efficiency_rate > '80''

# অনুসন্ধানটি সম্পাদন করুন

রান = mlflow search_runs ( পরীক্ষা_আইডি = exp_id , ফিল্টার_স্ট্রিং = অনুসন্ধান স্ট্রিং )

# ফলাফল প্রদর্শন করুন

ছাপা ( 'অনুসন্ধান ফলাফল:' )

ছাপা ( রান )

অসংখ্য মানদণ্ড ব্যবহার করে একটি অনুসন্ধান চালান

1. মেট্রিক মান দ্বারা অনুসন্ধান করুন

MLflow সার্চ API-এ মেট্রিক্স ফিল্ড ব্যবহার করে নির্দিষ্ট মেট্রিক্সের মান দ্বারা রানগুলি ফিল্টার করা যেতে পারে। কমা দ্বারা পৃথক করা মেট্রিক নামের একটি সংগ্রহ মেট্রিক্স ক্ষেত্রে প্রদর্শিত হয়। উদাহরণস্বরূপ, নিম্নলিখিত ফিল্টার স্ট্রিংটি 0.9 এর চেয়ে বেশি নির্ভুলতার মান সহ সমস্ত রান সনাক্ত করে:





মেট্রিক্স সঠিকতা > 0.9

মেট্রিক্স ক্ষেত্রে ব্যবহারের জন্য উপলব্ধ মেট্রিকের সম্পূর্ণ তালিকা নিম্নরূপ দেওয়া হয়েছে:

  • সঠিকতা
  • auc
  • f1
  • নির্ভুলতা
  • প্রত্যাহার
  • মানচিত্র
  • লগলস
  • শ্রেণিবিন্যাস_ত্রুটি
  • মাল্টি_ক্লাস_লোগলস

উপরন্তু, ব্যবহারকারীরা মেট্রিক্স ক্ষেত্র ব্যবহার করে একটি মেট্রিকের মান পরিসীমা দ্বারা রান ফিল্টার করতে পারেন। উদাহরণস্বরূপ, পরবর্তী ফিল্টার স্ট্রিং 0.4 এবং 0.8 এর মধ্যে মান সহ একটি নির্ভুলতা পরিমাপ আছে এমন সমস্ত রান সনাক্ত করে:



মেট্রিক্স সঠিকতা মধ্যে 0.4 এবং 0.8

মেট্রিক্স ক্ষেত্রে, AND এবং OR অপারেটররা মেট্রিকগুলিকে একত্রিত করে মেট্রিক্সের নির্ভুলতা এবং 0.3 এবং 0.8 এর উপরে f1 মানগুলির সাথে রানগুলি খুঁজে বের করে:

মেট্রিক্স সঠিকতা > 0.3 এবং মেট্রিক্স। f1 > 0.8

2. প্যারামিটার মান দ্বারা অনুসন্ধান করুন

একটি পরামিতি মান দ্বারা একটি অনুসন্ধান সম্পাদন করতে MLflow অনুসন্ধান API-এ প্যারামস ক্ষেত্র ব্যবহার করুন। প্যারামিটারের নাম এবং মানগুলি কমা ব্যবহার করে প্যারাম ফিল্ডে তালিকাভুক্ত করা হয়। এই উদাহরণে, উপরে উল্লিখিত ফিল্টার স্ট্রিংটি num_boost_round প্যারামিটারের সাথে সমস্ত রান সনাক্ত করে যার মান 100:

params num_boost_round = '100'

প্যারামিটার মানগুলির জন্য অনুসন্ধান স্ট্রিংগুলির আরও কিছু উদাহরণ:

  • params.num_boost_round = 900
  • params.learning_rate 0.001 এবং 0.01 এর মধ্যে
  • params.num_boost_round='70' এবং params.learning_rate='0.01′

3. ট্যাগ দ্বারা অনুসন্ধান করুন

এখানে একটি অনুসন্ধান নিয়োগকারী ট্যাগগুলির একটি উদাহরণ রয়েছে:

খোঁজার নীতিমালা = 'tags.mlflow.source.type = 'অভিধান''

Mlflow.search_runs() ফাংশন সম্পাদনের জন্য ম্যাট্রিক এবং প্যারামিটার মানগুলির উদাহরণ

আসুন একটি MLflow পরীক্ষা সেট আপ করার একটি উদাহরণের মাধ্যমে কাজ করি, রান লগিং করে এবং তারপরে একটি অনুসন্ধান শুরু করতে mlflow.search_runs() ব্যবহার করে৷ কোডটি সম্পূর্ণরূপে বুঝতে, এই পদক্ষেপগুলি অনুসরণ করুন:

ধাপ 1: একটি MLflow পরীক্ষা তৈরি করুন

আমরা একটি MLflow পরীক্ষা সেট আপ করে শুরু করি। যদি পরীক্ষাটি ইতিমধ্যেই বিদ্যমান থাকে তবে এটি বিদ্যমান পরীক্ষাটি নিয়ে আসে। যদি না হয়, এটি একটি নতুন তৈরি করে।

কোড ব্যাখ্যা:

কোডের প্রথম লাইনে MLflow লাইব্রেরি আমদানি করা হয়েছে, এবং পরের লাইনে experiment_name 'আমার প্রথম MLflow পরীক্ষা' এ সেট করা হয়েছে। এক্সপেরিমেন্ট_নামটি 'mlflow.get_experiment_by_name' ফাংশনে পাস করা হলে, যদি পরীক্ষাটি বিদ্যমান না থাকে এবং অন্যথায় পরীক্ষার একটি বস্তু না থাকে তবে সেই ফাংশনটি 'কোনটিই নয়' প্রদান করে।

শর্তসাপেক্ষ বিবৃতিতে পরীক্ষার অস্তিত্ব পরীক্ষা করুন। পরীক্ষাটি আগে থেকেই থাকলে, experiment_id সেট করুন। অন্যথায়, একটি নতুন পরীক্ষা তৈরি করতে 'mlflow.create_experiment' ব্যবহার করুন। পরীক্ষা আইডি এই ফাংশন দ্বারা ফেরত দেওয়া হয়. পরীক্ষার শেষে কনসোল বা টার্মিনাল স্ক্রিনে এক্সপেরিমেন্ট আইডি প্রদর্শন করুন। নোটপ্যাডে নিম্নলিখিত কোডটি অনুলিপি করুন এবং ফাইলটি পছন্দসই নাম এবং '.py' এক্সটেনশন সহ সংরক্ষণ করুন:

# এমএলফ্লো লাইব্রেরি আমদানি করুন

আমদানি mlflow

# পরীক্ষা তৈরি করুন বা আনুন

exp_name = 'আমার প্রথম MLflow পরীক্ষা'

# mlflow ফাংশন get_experiment_by_name ব্যবহার করে নামের মাধ্যমে পরীক্ষাটি আনুন

exp = mlflow নাম দিয়ে_পরীক্ষা_পান ( exp_name )

# পরীক্ষাটি ইতিমধ্যে বিদ্যমান নেই কিনা তা পরীক্ষা করুন

যদি exp হয় কোনোটিই নয় :

# নতুন পরীক্ষা তৈরি করুন এবং পরীক্ষার নামটি mlflow.create_experiment ফাংশনে পাস করুন

exp_id = mlflow তৈরি_পরীক্ষা ( exp_name )

# পর্দায় সাফল্যের বার্তা প্রদর্শন করুন

ছাপা ( 'পরীক্ষা বিদ্যমান নেই৷ পরীক্ষা সফলভাবে তৈরি হয়েছে!' )

অন্য :

# বিদ্যমান পরীক্ষার পরীক্ষা_আইডি আনুন

exp_id = exp পরীক্ষা_আইডি

ছাপা ( 'পরীক্ষা ইতিমধ্যেই বিদ্যমান!' )

# ডিসপ্লে এক্সপেরিমেন্ট আইডি

ছাপা ( 'পরীক্ষা আইডি:' , exp_id )

এখন, পাইথন কম্পাইলার ব্যবহার করে কমান্ড প্রম্পট বা টার্মিনাল উইন্ডোতে প্রোগ্রামটি চালু করুন এবং টাইপ করুন 'Python' এবং তারপরে ফাইলের নাম যা এই ক্ষেত্রে, 'MyFirstMlflowExperiment.py'। যখন পরীক্ষাটি প্রথম চালানো হয়, এটি এখনও বিদ্যমান নেই। এইভাবে, MLFlow একটি তৈরি করে এবং কনসোল স্ক্রিনে পরীক্ষা আইডি প্রিন্ট করে:

এটি নতুন পরীক্ষা-নিরীক্ষা তৈরি করছে না তা যাচাই করতে এবং ইতিমধ্যে বিদ্যমান থাকা আইডি প্রদর্শন করতে কোডটি পুনরায় চালান। নিম্নলিখিত স্ক্রিনশট দেখায় যে পরীক্ষাটি ইতিমধ্যেই বিদ্যমান:

ধাপ 2: মেট্রিক্স এবং প্যারামিটার সহ রানগুলি লগ করুন

এখন সদ্য প্রতিষ্ঠিত পরীক্ষার জন্য মেট্রিক্স এবং পরামিতিগুলির সাথে কিছু রান লগ করার চেষ্টা করা যাক। বাস্তব-বিশ্বের পরিস্থিতিতে, আমরা মেশিন লার্নিং মডেলগুলি তৈরি করি এবং প্রতিটি দৌড়ের শেষে মেট্রিক্স এবং প্যারামিটারের মতো প্রাসঙ্গিক তথ্য রেকর্ড করি। এখানে, নির্ভুলতা একটি ম্যাট্রিক মান হিসাবে ব্যবহৃত হয়, এবং এটি এই ক্ষেত্রে 0.95। শেখার জন্য প্যারামিটার মান এবং দক্ষতা হার যথাক্রমে 0.01 এবং 90। এখানে কোড আছে:

# মেট্রিক্স এবং পরামিতি লগ করার জন্য একটি MLflow রান শুরু করুন

সঙ্গে mlflow start_run ( পরীক্ষা_আইডি = exp_id ) :

# আপনার মেশিন লার্নিং কোড এখানে (এটি শুধুমাত্র একটি সিমুলেটেড উদাহরণ)

মডেল_নির্ভুলতা = 0.95

মেশিন_লার্নিং_রেট = 0.01

দক্ষতা_হার = 90

# লগ মেট্রিক্স এবং পরামিতি

mlflow লগ_মেট্রিক ( 'সঠিকতা' , মডেল_নির্ভুলতা )

mlflow log_param ( 'শেখার_হার' , মেশিন_লার্নিং_রেট )

mlflow log_param ( 'দক্ষতা_হার' , দক্ষতা_হার )

ফলাফল, যখন পূর্বোক্ত কোডটি কার্যকর করা হয়, তখন এখানে দেখা যায়। ফলাফল আগের মত একই:

ধাপ 3: Mlflow.search_runs() ব্যবহার করে একটি অনুসন্ধান করুন

অবশেষে, আমরা কয়েকটি প্যারামিটার ব্যবহার করে লগ ইন করা রানগুলির উপর একটি অনুসন্ধান চালাই এবং টার্মিনাল স্ক্রিনে ফলাফলগুলি দেখাই:

# রানের জন্য অনুসন্ধানের মানদণ্ড নির্ধারণ করুন

সংজ্ঞায়িত_অনুসন্ধান_মাপদণ্ড = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' এবং params.efficiency_rate = '90''

# অনুসন্ধানটি সম্পাদন করুন

রান = mlflow search_runs ( পরীক্ষা_আইডি = exp_id , ফিল্টার_স্ট্রিং = সংজ্ঞায়িত_অনুসন্ধান_মাপদণ্ড )

# ফলাফল প্রদর্শন করুন

ছাপা ( 'অনুসন্ধান ফলাফল:' )

ছাপা ( রান )

একটি সতর্কতা যা গিট টুলের সাথে সম্পর্কিত সার্চ_রানস ফাংশনের সম্পাদন দ্বারা উত্পাদিত হয়:


এই সতর্কতা নিষ্ক্রিয় করতে পাইথন ফাইলের শীর্ষে কিছু কোড যোগ করুন। এখানে কোডের সংক্ষিপ্ত বিভাগ রয়েছে:

আমদানি mlflow

আমদানি আপনি

আপনি . আন্দাজ [ 'GIT_PYTHON_REFRESH' ] = 'শান্ত'

কোডের এই লাইনগুলি যোগ করার পরে 'mlflow.search_runs' ফাংশনটি সফলভাবে চালানো হয়:

উপসংহার

'mlflow.search_runs' ফাংশনটি ব্যবহারকারীদের দ্রুত মেশিন লার্নিং পরীক্ষাগুলি অন্বেষণ এবং মূল্যায়ন করতে, অনেক রান বিশ্লেষণ করতে এবং সর্বোত্তম হাইপারপ্যারামিটার বৈচিত্র বা মডেলগুলি চিহ্নিত করতে সক্ষম করে যা পছন্দসই ফলাফলে পরিণত হয়৷ এটি মেশিন লার্নিং ওয়ার্কফ্লো তত্ত্বাবধান, পরিকল্পনা এবং বিশ্লেষণের জন্য একটি কার্যকর হাতিয়ার।