MLflow உடன் கட்டம் தேடல்

Mlflow Utan Kattam Tetal



இயந்திர கற்றல் மாதிரிகளில் உள்ள உயர் அளவுருக்கள் கட்டம் தேடல் அணுகுமுறையைப் பயன்படுத்தி உகந்ததாக இருக்கும். MLflow கிரிட் தேடல் சோதனைகளின் முடிவுகளைக் கண்காணிக்கும் என்பதால், ஒரு பயனர் பல ஹைப்பர் பாராமீட்டர் அமைப்புகளை விரைவாக ஒப்பிட்டு, எது சிறப்பாகச் செயல்படுகிறது என்பதைக் கண்டறியலாம். MLflow இல், கிரிட் தேடல் பரிசோதனையை மற்ற குழு உறுப்பினர்களுடன் விரைவாகப் பகிரலாம். MLflow ஐப் பயன்படுத்தி, ஒரு கட்டம் தேடல் பரிசோதனையிலிருந்து மிகவும் பயனுள்ள மாதிரியைப் பயன்படுத்த முடியும்.

கட்டம் தேடலின் நன்மைகள்

  • தானியங்கு ஹைபர்பாராமீட்டர் டியூனிங்: கட்டம் தேடல் ஹைப்பர்பாராமீட்டர் டியூனிங்கை தானியங்குபடுத்துகிறது, இது கைமுறை சோதனை மற்றும் பிழை இல்லாமல் முறையான ஆய்வுகளை அனுமதிக்கிறது.
  • மறுஉருவாக்கம்: கிரிட் தேடல், தகவல்தொடர்பு மற்றும் நம்பகத்தன்மையை மேம்படுத்தும் மறுஉருவாக்கம் விளைவுகளை மீண்டும் பெறுவதன் மூலம் சோதனை செல்லுபடியை உறுதி செய்கிறது.
  • முழுமையான தேடல்: கலவைகளை முழுமையாகத் தேடுவதன் மூலம் ஒரு மாதிரிக்கான உகந்த உயர் அளவுகோல்களை GS திறம்படக் கண்டறியும்.
  • தன்முனைப்பு: கிரிட் தேடல் என்பது ஒரு வலுவான நுட்பமாகும், இது தரவு இரைச்சலை எதிர்க்கும், இது அதிகப்படியான பொருத்துதலைக் குறைக்கிறது.
  • பயன்படுத்த எளிதானது: கிரிட் தேடலைப் பயன்படுத்துவதற்கும் புரிந்துகொள்வதற்கும் எளிமையானது, இது ஹைப்பர்பாராமீட்டர் டியூனிங்கிற்கான சாத்தியமான முறையாகும்.
  • மாதிரி ஒப்பீடுகள்: கிரிட் தேடல் மாதிரி ஒப்பீடு மற்றும் மதிப்பீட்டு அளவீடுகள் தேர்வை எளிதாக்குகிறது.

கட்டம் தேடலின் குறைபாடுகள்

  • கணக்கீட்டு செலவு: அதிக எண்ணிக்கையிலான ஹைப்பர் பாராமீட்டர்களை ட்யூனிங் செய்வதற்கு கிரிட் தேடல் கணக்கீட்டு ரீதியாக விலை அதிகம்.
  • நேரத்தை எடுத்துக்கொள்ளும்: சிக்கலான ஹைப்பர்பாராமீட்டர் சரிசெய்தல்களுக்கு இது நேரத்தை எடுத்துக்கொள்ளும்.
  • எப்போதும் தேவையில்லை: இப்போது அது எப்போதும் தேவைப்படுகிறது; சீரற்ற தேடல் அதற்கு சிறந்த மாற்று.

எடுத்துக்காட்டு: பல்கலைக்கழக சேர்க்கை முறைக்கான சிறந்த மாதிரி அமைப்புகளைக் கண்டறிதல்

ஆன்லைன் பல்கலைக்கழக சேர்க்கை அமைப்பின் கட்டமைப்பிற்குள் ஹைப்பர்பாராமீட்டர் டியூனிங்கிற்கான கட்டம் தேடல் உதாரணத்தைப் பார்ப்போம். இந்த எடுத்துக்காட்டில், GPA புள்ளிகள், SAT மதிப்பெண்கள், ACT மதிப்பெண்கள் மற்றும் பாடநெறிக்கு அப்பாற்பட்ட செயல்பாடுகள் போன்ற காரணிகளின் அடிப்படையில் பல்கலைக்கழகத்தில் மாணவர் ஏற்றுக்கொள்ளப்படுவதற்கான வாய்ப்பைக் கணிக்க, ஸ்கிகிட்-லேர்ன் மற்றும் நேரடியான கிரேடியன்ட் பூஸ்டிங் கிளாசிஃபையர் (ஜிபிசி) வகைப்படுத்தியைப் பயன்படுத்துகிறோம். ஜிபிசிக்கு பதிலாக லாஜிஸ்டிக் ரிக்ரஷன் (எல்ஆர்), எஸ்விஎம் (சப்போர்ட் வெக்டர் மெஷின்) போன்ற பல விருப்பங்கள் கட்டம் தேடலுக்கு கிடைக்கின்றன.

கிரிட் தேடலுக்கான MLflow ஐப் பயன்படுத்தி ஆன்லைன் சேர்க்கை அமைப்புக்கான ரேண்டம் டேட்டாவை உருவாக்கவும்

சேர்க்கை அமைப்புக்கான கற்பனையான தரவுத்தொகுப்பை உருவாக்க பைத்தானின் பாண்டாக்கள் மற்றும் சீரற்ற தொகுப்புகள் பயன்படுத்தப்படலாம். APP_NO, GPA, SAT மதிப்பெண், ACT மதிப்பெண், பாடநெறிக்கு அப்பாற்பட்ட செயல்பாடுகள் மற்றும் சேர்க்கை நிலை நெடுவரிசைகளுக்கான சீரற்ற மதிப்புகளுடன், இந்தக் குறியீடு செயற்கை சேர்க்கை தரவுத்தொகுப்பை உருவாக்குகிறது. num_students மாறி தரவுத்தொகுப்பில் எத்தனை வரிசைகள் உள்ளன என்பதைக் கட்டுப்படுத்துகிறது.







சேர்க்கை நிலை 70% ஏற்றுக்கொள்ளும் விகிதத்தின் அடிப்படையில் தோராயமாக அமைக்கப்பட்டது, மேலும் பல நெடுவரிசைகளுக்கு சீரற்ற மதிப்புகளை உருவாக்க சீரற்ற தொகுதி பயன்படுத்தப்படுகிறது. ஆர்ப்பாட்ட நோக்கங்களுக்காக, பின்வரும் குறியீடு துண்டு சீரற்ற மதிப்புகளுடன் ஒரு போலி சேர்க்கை தரவுத்தொகுப்பை உருவாக்குகிறது மற்றும் std_admission_dataset.csv கோப்பில் சேமிக்கப்படுகிறது:



குறியீடு துணுக்கு:



# பாண்டா மற்றும் ரேண்டம் நூலகங்களை இறக்குமதி செய்யவும்
பாண்டாக்களை panda_obj ஆக இறக்குமதி செய்
random_obj ஆக சீரற்ற இறக்குமதி

# மாணவர் தரவுத்தொகுப்பு உருவாக்குவதற்கான பதிவுகளின் எண்ணிக்கையை அமைக்கவும்
மாணவர்கள்_பதிவுகள் = 1000

# தரவைச் சேமிக்க பட்டியல்களை உருவாக்கவும்
std_application_numbers = [ 'செயலி-' + str(random_obj.randint( 1000 , 9999 )) _ வரம்பில் (மாணவர்கள்_பதிவுகள்)]
std_gpa = [சுற்று(random_obj.uniform() 2.5 , 4.0 ), 2 ) வரம்பில் _ (மாணவர்கள்_பதிவுகள்)]
std_sat_scores = [random_obj.randint( 900 , 1600 ) வரம்பில் _ (மாணவர்கள்_பதிவுகள்)]
std_act_scores = [random_obj.randint( இருபது , 36 ) வரம்பில் _ (மாணவர்கள்_பதிவுகள்)]
std_extra_curriculars = [random_obj.choice([ 'ஆம்' , 'இல்லை' ]) _ வரம்பில் (மாணவர்கள்_பதிவுகள்)]

# சீரற்ற ஏற்பு விகிதத்தின் அடிப்படையில் சேர்க்கை நிலையைக் கணக்கிடுங்கள்
std_admission_status = [ 1 random_obj.random() < என்றால் 0.7 வேறு 0 _ வரம்பில் (மாணவர்கள்_பதிவுகள்)]

# மாணவர் தரவை வைத்திருக்க அகராதியை உருவாக்கவும்
std_data = {

'APPLICATION_NO' : std_application_ numbers,

'ஜிபிஏ' : std_gpa,

'SAT_Score' : std_sat_scores,

'ACT_Score' : std_act_scores,

'பாடசாலை_செயல்பாடுகள்' : std_extra_curriculars,

'சேர்க்கை_நிலை' : std_admission_status

}

# அகராதியிலிருந்து DataFrame DataFrame_மாணவரை உருவாக்கவும்
DataFrame_Student = panda_obj.DataFrame(std_data)

# DataFrame DataFrame_Studentஐ std_admission_dataset.csv என்ற CSV கோப்பில் சேமிக்கவும்
DataFrame_Student.to_csv( 'std_admission_dataset.csv' , குறியீட்டு = தவறான)
அச்சு ( 'மாணவர்களின் தரவு CSV கோப்பிற்கு வெற்றிகரமாக ஏற்றுமதி செய்யப்பட்டது!' )

குறியீடு செயல்படுத்தல்:

குறியீட்டை தொகுக்க பைதான் கட்டளையைப் பயன்படுத்தவும், பின்னர் நீங்கள் தொகுதிப் பிழையை எதிர்கொண்டால் குறிப்பிட்ட தொகுதியை நிறுவ pip கட்டளையைப் பயன்படுத்தவும். பைதான் பதிப்பு 3.X அல்லது அதற்கு மேற்பட்டதாக இருந்தால், கொடுக்கப்பட்ட நூலகத்தை நிறுவ pip3 நிறுவல் கட்டளையைப் பயன்படுத்தவும்.





வெற்றிகரமான செயல்படுத்தல்:



மாதிரி தரவு ஸ்கிரீன்ஷாட்:

படி 1: நூலகங்களை இறக்குமதி செய்யவும்

  • இயந்திர கற்றல் பரிசோதனை கண்காணிப்புக்கான MLflow நூலகம்
  • தரவு செயலாக்கம் மற்றும் பகுப்பாய்வைக் கையாளும் பாண்டாஸ் நூலகம், அத்துடன் Scikit-Learn மாதிரிகளை ஒருங்கிணைப்பதற்கான mlflow.sklearn தொகுப்பு.
  • நான்காவது வரி பிழைகளை அடக்குவதற்கு 'எச்சரிக்கைகள்' நூலகத்தை இறக்குமதி செய்கிறது
  • sklearn.model_selection தொகுதியில் கட்டம் தேடலுக்கான ParameterGrid வகுப்பு
  • GridSearchCV மற்றும் GradientBoostingClassifier முறையே sklearn.model_selection மற்றும் குழுமத்திலிருந்து, கட்டம் தேடல் மற்றும் கிரேடியன்ட் அதிகரிக்கும் வகைப்படுத்தி மாதிரிகள்
  • sklearn.metrics தொகுதியிலிருந்து துல்லிய_மதிப்பீடு மற்றும் வகைப்படுத்தல்_அறிக்கையானது மாதிரித் துல்லியத்தைக் கணக்கிடுவதற்கும் வகைப்பாடு அறிக்கைகளை உருவாக்குவதற்கும் செயல்படுகிறது.
  • குறியீடு OS தொகுதியை இறக்குமதி செய்கிறது மற்றும் GIT_PYTHON_REFRESH சூழல் மாறியை அமைதியாக அமைக்கிறது.

குறியீடு துணுக்கு:

# படி-I தேவையான நூலகங்களை இறக்குமதி செய்க
இறக்குமதி mlflow
mlflow.sklearn இறக்குமதி
எச்சரிக்கையாக இறக்குமதி எச்சரிக்கைகள்
பாண்டாக்களை panda_obj ஆக இறக்குமதி செய்
sklearn.model_selection இறக்குமதி train_test_split tts ஆகவும், ParameterGrid pg ஆகவும், GridSearchCVயை gscv ஆகவும்
எங்களை இறக்குமதி
GBC ஆக sklearn.ensemble இறக்குமதி GradientBoostingClassifier இலிருந்து
sklearn.metrics இலிருந்து accuracy_ஸ்கோரை acs ஆகவும், வகைப்படுத்தல்_அறிக்கையை cr ஆகவும் இறக்குமதி செய்க
os.environ[ 'GIT_PYTHON_REFRESH' ] = 'அமைதியாக'

படி 2: கண்காணிப்பு URI ஐ அமைக்கவும்

MLflow சேவையகத்தின் கண்காணிப்பு URI ஆனது mlflow.set_tracking_uri() செயல்பாட்டைப் பயன்படுத்தி அமைக்கப்பட்டது, சோதனைகள் மற்றும் மாதிரிகளுக்கு போர்ட் 5000 இல் உள்ளூர் இயந்திரத்தை உறுதி செய்கிறது.

mlflow.set_tracking_uri( 'http://localhost:5000' )

படி 3: சேர்க்கை தரவுத்தொகுப்பை ஏற்றி தயார் செய்யவும்

தரவு கையாளுதல் மற்றும் பகுப்பாய்விற்காக பாண்டாஸ் நூலகத்தை panda_obj ஆக இறக்குமதி செய்யவும். சேர்க்கை தரவுத்தொகுப்பை ஏற்றுவதற்கு read_csv() செயல்பாடு பயன்படுத்தப்படுகிறது. தரவுத்தொகுப்புக்கான பாதை read_csv() செயல்பாட்டிற்குத் தேவைப்படும் ஒரே வாதமாகும். இந்த நிகழ்வில் தரவுத்தொகுப்புக்கான பாதை std_admission_dataset.csv ஆகும். read_csv() செயல்பாட்டைப் பயன்படுத்துவதன் மூலம், தரவுத்தொகுப்பு ஒரு Pandas DataFrame இல் ஏற்றப்படுகிறது.

std_admissions_data DataFrame இலிருந்து Admission_Status நெடுவரிசை முதலில் குறியீட்டால் அகற்றப்படும். இந்த நெடுவரிசையில் இலக்கு மாறி இருப்பதால், முன் செயலாக்கம் தேவையில்லை.

பின்னர், குறியீடு இரண்டு புதிய மாறிகளை உருவாக்குகிறது: 'F' மற்றும் 't'. அம்சங்கள் 'F' மாறியில் உள்ளன, அதே நேரத்தில் இலக்கு மாறி 't' மாறியில் உள்ளது.

தரவு பின்னர் சோதனை மற்றும் பயிற்சி தொகுப்புகளாக விநியோகிக்கப்படுகிறது. sklearn.model_selection தொகுப்பிலிருந்து tts() செயல்பாட்டைப் பயன்படுத்தி இது நிறைவேற்றப்படுகிறது. அம்சங்கள், இலக்கு மாறி, சோதனை அளவு மற்றும் சீரற்ற நிலை ஆகியவை tts() செயல்பாட்டிற்குத் தேவைப்படும் நான்கு வாதங்கள். test_size அளவுரு சோதனை நோக்கங்களுக்காகப் பயன்படுத்தப்படும் தரவின் பகுதியைக் குறிப்பிடுகிறது. இந்த நிகழ்வில் சோதனை அளவு 0.2 ஆக அமைக்கப்பட்டுள்ளதால், 20% தரவு சோதனைக்கு பயன்படுத்தப்படும்.

random_state விருப்பம் சீரற்ற எண் ஜெனரேட்டர் விதையைக் குறிப்பிடுகிறது. தரவு சீரற்ற முறையில் பிரிக்கப்படுவதை உறுதி செய்வதற்காக இது செய்யப்படுகிறது. பயிற்சி மற்றும் சோதனைத் தொகுப்புகள் இப்போது F_training, F_testing, t_training மற்றும் t_testing மாறிகளில் சேமிக்கப்பட்டுள்ளன. இயந்திர கற்றல் மாதிரிகளை மதிப்பிடவும் பயிற்சி செய்யவும் இந்த தொகுப்புகள் பயன்படுத்தப்படலாம்.

குறியீடு துணுக்கு:

# படி-3: சேர்க்கை தரவுத்தொகுப்பை ஏற்றவும்
std_admissions_data = panda_obj.read_csv( 'std_admission_dataset.csv' )

# தரவை முன்கூட்டியே செயலாக்கி அம்சங்கள் (F) மற்றும் இலக்கு (t) ஆக பிரிக்கவும்
F = std_admissions_data.drop([ 'சேர்க்கை_நிலை' ], அச்சு= 1 )
t = std_admissions_data[ 'சேர்க்கை_நிலை' ]

# ஒரு சூடான குறியாக்கத்தைப் பயன்படுத்தி வகைப்படுத்தப்பட்ட மாறிகளை எண்களாக மாற்றவும்
F = panda_obj.get_dummies(F)
F_training, F_testing, t_training, t_testing = tts(F, t, test_size= 0.2 , random_state= 42 )

படி 4: MLflow பரிசோதனையின் பெயரை அமைக்கவும்

adm_experiment_name = 'பல்கலைக்கழக_சேர்க்கை_பரிசோதனை'
mlflow.set_experiment(adm_experiment_name)

படி 5: கிரேடியண்ட் பூஸ்டிங் வகைப்படுத்தியை வரையறுக்கவும்

கிரேடியன்ட் அதிகரிக்கும் வகைப்படுத்தி மாதிரி இப்போது gbc_obj மாறியில் சேமிக்கப்பட்டுள்ளது. இந்த மாதிரியை சோதிக்கவும் பயிற்சி செய்யவும் சேர்க்கை தரவுத்தொகுப்பைப் பயன்படுத்தலாம். ரேண்டம்_ஸ்டேட் வாதத்தின் மதிப்பு 42. இது மாதிரியானது அதே சீரற்ற எண் ஜெனரேட்டர் விதையைப் பயன்படுத்தி பயிற்சியளிக்கப்பட்டதை உறுதி செய்கிறது.

gbc_obj = GBC(random_state= 42 )

படி 6: ஹைப்பர்பாராமீட்டர் கட்டத்தை வரையறுக்கவும்

குறியீடு ஆரம்பத்தில் param_grid அகராதியை உருவாக்குகிறது. கட்டம் தேடலின் மூலம் சரிசெய்யப்படும் ஹைப்பர் பாராமீட்டர்கள் இந்த அகராதியில் உள்ளன. மூன்று விசைகள் param_grid அகராதியை உருவாக்குகின்றன: n_estimators, learning_rate மற்றும் max_depth. இவை கிரேடியண்ட்-போஸ்டிங் கிளாசிஃபையர் மாடலின் ஹைப்பர் பாராமீட்டர்கள். மாதிரியில் உள்ள மரங்களின் எண்ணிக்கை ஹைப்பர் பாராமீட்டர் n_estimators மூலம் குறிப்பிடப்படுகிறது. மாதிரியின் கற்றல் விகிதம் கற்றல்_விகித உயர் அளவுகோல் மூலம் குறிப்பிடப்படுகிறது. ஹைப்பர் பாராமீட்டர் max_depth மாதிரியின் மரங்களின் அதிகபட்ச ஆழத்தை வரையறுக்கிறது.

குறியீடு துணுக்கு:

param_grid = {

'என்_மதிப்பீட்டாளர்கள்' :[ 100 , 150 , 200 ],

'கற்றல்_விகிதம்' :[ 0.01 , 0.1 , 0.2 ],

'அதிகபட்ச_ஆழம்' :[ 4 , 5 , 6 ]

}

படி 7: MLflow கண்காணிப்புடன் கிரிட் தேடலைச் செய்யவும்

குறியீடு பின்னர் param_grid அகராதியின் மீது மீண்டும் மீண்டும் வருகிறது. அகராதியில் உள்ள ஒவ்வொரு ஹைப்பர் பாராமீட்டர்களுக்கும், குறியீடு பின்வருவனவற்றைச் செய்கிறது:

  • புதிய MLflow ரன் தொடங்கும்
  • ஹைப்பர்பரமீட்டர்கள் ஏற்கனவே பட்டியலில் இல்லை என்றால், அவற்றை பட்டியலாக மாற்றும்
  • மிகை அளவுருக்களை MLflowக்கு பதிவு செய்கிறது
  • குறிப்பிட்ட ஹைப்பர் பாராமீட்டர்களுடன் ஒரு கட்டம் தேடல் மாதிரியைப் பயிற்றுவிக்கிறது
  • கட்டம் தேடலில் இருந்து சிறந்த மாதிரியைப் பெறுகிறது
  • சிறந்த மாதிரியாகச் செயல்படும் சோதனைத் தரவு பற்றிய கணிப்புகளை உருவாக்குகிறது
  • மாதிரியின் துல்லியத்தைக் கணக்கிடுகிறது
  • உயர் அளவுருக்கள், துல்லியம் மற்றும் வகைப்பாடு அறிக்கையை அச்சிடுகிறது
  • MLflowக்கு துல்லியம் மற்றும் மாதிரியை பதிவு செய்கிறது

குறியீடு துணுக்கு:

warn.catch_warnings உடன்():
எச்சரிக்கை. வடிகட்டி எச்சரிக்கைகள்( 'புறக்கணி' , category=UserWarning, module= '.*டிஸ்டுடில்.*' )
pg (param_grid) இல் உள்ள பாராக்களுக்கு:
mlflow.start_run(run_name= உடன் 'Admissions_Status Run' ):
# ஒற்றை மதிப்புகளை பட்டியல்களாக மாற்றவும்
params = {key: [value] இல்லையெனில் instance(மதிப்பு, பட்டியல்) விசைக்கான வேறு மதிப்பு, params.items இல் மதிப்பு()}
mlflow.log_params(அளவுருக்கள்)
கட்டம்_தேடல் = gscv(gbc_obj, param_grid=params, cv= 5 )
grid_search.fit(F_training, t_training)
std_best_model = grid_search.best_estimator_
model_predictions = std_best_model.predict(F_testing)
model_accuracy_score = acs(t_testing, model_predictions)
அச்சு ( 'அதிக அளவுருக்கள்:' , அளவுருக்கள்)
அச்சு ( 'துல்லியம்:' , model_accuracy_score)
# வரையறுக்கப்படாத மெட்ரிக் எச்சரிக்கையை வெளிப்படையாகப் புறக்கணிக்கவும்
warn.catch_warnings உடன்():
எச்சரிக்கை. வடிகட்டி எச்சரிக்கைகள்( 'புறக்கணி' , வகை=எச்சரிக்கை)
அச்சு ( 'வகைப்படுத்தல் அறிக்கை:' )
அச்சு(cr(t_testing, model_predictions, zero_division= 1 ))
mlflow.log_metric( 'துல்லியம்' , model_accuracy_score)
mlflow.sklearn.log_model(std_best_model, 'gb_classifier_model' )

படி 8: பைத்தானைப் பயன்படுத்தி நிரலை இயக்கவும்

MLflow சர்வரில் உள்ள வெளியீடு இங்கே:

முடிவுரை

MLflow இன் கிரிட் தேடல் கருவியானது ட்வீக்கிங், முடிவுகளைக் கண்காணிப்பது மற்றும் இயந்திர கற்றல் மாதிரிகளில் உள்ள ஹைப்பர் பாராமீட்டர்களை மாற்றியமைப்பதை தானியங்குபடுத்துகிறது. இது சிறந்த உயர் அளவுகோல்களைத் தீர்மானிக்க உதவுகிறது மற்றும் நம்பகமான முடிவுகளை உறுதி செய்கிறது, ஆனால் விரிவான ஹைப்பர்பாராமீட்டர் சோதனைகளுக்கு கணக்கீட்டு ரீதியாக விலை உயர்ந்ததாக இருக்கும்.