Maşın öyrənmə inkişafını sınayan hər kəs bunun nə qədər çətin olduğunu başa düşür. Proqram təminatının hazırlanmasında standart problemlərdən başqa, maşın öyrənməsi (ML) inkişafı bir sıra əlavə maneələr təqdim edir.
Məlumatların hazırlanmasından tutmuş model təliminə qədər ML həyat dövrünün hər mərhələsində kömək etmək üçün yüzlərlə açıq mənbə alətləri mövcuddur.
Ənənəvi proqram təminatının işlənib hazırlanmasından fərqli olaraq, komandalar hər addım üçün bir alət seçdikdə, ML ilə siz, ümumiyyətlə, nəticələri yaxşılaşdırıb-yaxşılamadığını görmək üçün hər bir mövcud aləti (məsələn, alqoritm) araşdırmaq istəyirsiniz.
Nəticədə, ML tərtibatçıları yüzlərlə kitabxanadan istifadə etməli və istehsal etməlidirlər.
Maşın öyrənmə alqoritmləri minlərlə fərdiləşdirilə bilən parametrləri ehtiva edir və tək və ya komandada işləməyinizdən asılı olmayaraq, model yaratmaq üçün hər bir təcrübəyə hansı parametrlərin, kodun və məlumatların daxil olduğunu müəyyən etmək çətindir.
Düzgün monitorinq olmadan, komandalar tez-tez eyni kodun yenidən işləməsi üçün mübarizə aparırlar. İstər təlim kodunu istehsalatda istifadə etmək üçün mühəndisə ötürən bir məlumat alimi olsanız, istərsə də problemi diaqnoz etmək üçün əvvəlki işinizə qayıtsanız, ML iş axınının addımlarını geri çəkmək çox vacibdir.
Istifadə edilməli olan çoxsaylı yerləşdirmə metodları və mühitlər (məsələn, REST xidməti, toplu nəticə və ya mobil proqramlar) səbəbindən modelin istehsala köçürülməsi çətin ola bilər. Modelləri hər hansı bir kitabxanadan bu alətlərin hər hansı birinə köçürmək üçün ümumi üsul yoxdur və beləliklə, hər yeni yerləşdirmə bir risk təqdim edir.
Bu problemlərə görə, aydındır ki, ML inkişafı ənənəvi proqram təminatı kimi sabit, proqnozlaşdırıla bilən və geniş şəkildə istifadə oluna bilmək üçün əhəmiyyətli dərəcədə təkmilləşməlidir.
ML Çağırışları
- Bir çox fərqli alətlər var. Məlumatların hazırlanmasından tutmuş model təliminə qədər maşın öyrənməsinin həyat dövrünün hər mərhələsində kömək etmək üçün yüzlərlə proqram həlləri mövcuddur. Bundan əlavə, ənənəvi proqram təminatının işlənib hazırlanmasından fərqli olaraq, komandalar maşın öyrənməsində (ML) hər addım üçün bir alət seçdikdə, onun nəticələri yaxşılaşdırıb-yaxşılamadığını görmək üçün tez-tez hər bir mövcud aləti (məsələn, alqoritm) araşdırmaq istəyirsiniz. Nəticədə, ML tərtibatçıları yüzlərlə kitabxanadan istifadə etməli və istehsal etməlidirlər.
- Təcrübələri izləmək çətindir. Maşın öyrənmə alqoritmləri minlərlə fərdiləşdirilə bilən parametrləri ehtiva edir və tək və ya komandada işləməyinizdən asılı olmayaraq, model yaratmaq üçün hər bir təcrübəyə hansı parametrlərin, kodun və məlumatların daxil olduğunu müəyyən etmək çətindir.
- Maşın öyrənməsini həyata keçirmək çətindir. Istifadə edilməli olan çoxsaylı yerləşdirmə metodları və mühitlər (məsələn, REST xidməti, toplu nəticə və ya mobil proqramlar) səbəbindən modelin istehsala köçürülməsi çətin ola bilər. Modelləri hər hansı bir kitabxanadan bu alətlərin hər hansı birinə köçürmək üçün ümumi üsul yoxdur. Beləliklə, hər yeni yerləşdirmə bir risk təqdim edir.
Nədir MLflow?
MLflow, maşın öyrənməsinin həyat dövrü üçün açıq mənbə platformasıdır. O, cari infrastruktur və maşın öyrənmə alqoritmlərinin sistemlə asanlıqla inteqrasiyasına imkan verən bir çox vacib abstraksiyaları təklif edən açıq interfeys konsepsiyasına əsaslanır.
Bu o deməkdir ki, əgər siz MLflow-dan istifadə etmək istəyən, lakin dəstəklənməyən çərçivədən istifadə edən tərtibatçısınızsa, açıq interfeys dizaynı həmin çərçivəni inteqrasiya etməyi və platforma ilə işə başlamağı nisbətən sadə edir. Praktikada bu o deməkdir ki, MLflow hər hansı bir funksiya ilə işləmək üçün nəzərdə tutulub maşın təlim kitabxana və ya dil.
Bundan əlavə, MLflow təkrarlanmağı təşviq edir, yəni eyni təlim və ya istehsalat maşın öyrənmə kodu buludda, yerli iş stansiyasında və ya notebookda ətraf mühitdən asılı olmayaraq eyni nəticələrlə işləmək üçün nəzərdə tutulub.
Nəhayət, MLflow miqyaslılıq üçün qurulmuşdur, ona görə də ondan kiçik bir məlumat alimləri qrupu, eləcə də yüzlərlə maşın öyrənməsi təcrübəsi olan böyük bir şirkət tərəfindən istifadə edilə bilər.
MLflow istənilən maşın öyrənmə kitabxanası, alqoritm, yerləşdirmə aləti və ya dil ilə uyğun gəlir. O, həmçinin aşağıdakı üstünlüklərə malikdir:
- İstənilən bulud xidməti ilə işləmək üçün nəzərdə tutulmuşdur.
- Apache Spark ilə nəhəng dataya miqyaslanır.
- MLflow müxtəlif açıq mənbəli maşın öyrənmə çərçivələri ilə uyğun gəlir, o cümlədən Apache Spark, TensorFlowvə SciKit-Öyrən.
Artıq kodunuz varsa, MLflow onunla birlikdə istifadə edilə bilər. Siz hətta öz çərçivənizi və modellərinizi müəssisələr arasında paylaşa bilərsiniz, çünki belədir açıq mənbə.
MLflow Komponentləri: Necə işləyirlər?
MLflow eksperiment, təkrar istehsal, yerləşdirmə və tək model reyestrini özündə birləşdirən ML-nin həyat dövrünü idarə etmək üçün pulsuz və açıq mənbəli platformadır. Hazırda MLflow dörd komponentdən ibarətdir:
1. MLflow İzləmə
Mən MLflow İzləmə ilə başlayacağam. MLflow mərkəzləşdirilmiş təlim metadata izləmə repozitoriyası ilə əlaqəli müxtəlif əsas anlayışların toplanmasına dəstək verir. Birinci anlayış modelin performansına təsir edən kritik hiperparametrlər və ya konfiqurasiya düymələri toplusudur. MLflow-un API-lərindən və mərkəzləşdirilmiş izləmə xidmətindən istifadə bütün bunları qoruya bilər.
İstifadəçilər həmçinin maşın öyrənmə modellərinin uğuru haqqında fikir əldə etmək üçün performans məlumatlarını qeyd edə bilərlər. Bundan əlavə, təkrarlanabilirlik üçün MLflow istifadəçilərə model yaratmaq üçün istifadə edilmiş xüsusi mənbə kodunu, eləcə də onun versiyasını Git ilə sıx inteqrasiya edərək, hər bir modeli müəyyən bir icra hashına bağlamaq imkanı verir.
MLflow, hər hansı ixtiyari fayl olan artefaktları qeyd etmək üçün istifadə edilə bilər, o cümlədən təlim, sınaq məlumatları və təkrar istehsal üçün modellər.
Bu o deməkdir ki, əgər mən modeli yenicə öyrədən tərtibatçıyamsa, onu mərkəzləşdirilmiş izləmə xidmətinə davam etdirə bilərəm və həmkarlarımdan biri onu daha sonra yükləyə və ya məşq etməyə və sınaqdan keçirməyə davam edə, ya da xüsusi ehtiyacı ödəmək üçün həmin modeli istehsal edə bilər. .
Maşın öyrənmə kodunu icra edərkən və sonra nəticələrə baxarkən, izləmə parametrləri, kod versiyalarını, ölçüləri və çıxış fayllarını daxil etməyə imkan verən API-dir. Digər dillər arasında Python, R və Java dillərində yazılmışdır. O, həmçinin REST API kimi əlçatandır və onun üzərində tətbiqlər yaratmaq üçün istifadə edilə bilər.
Əsas Xüsusiyyətlər
- Bir çox tərtibatçılar yerli kompüterlərində MLflow-dan istifadə edirlər, burada backend və artefakt yaddaşı diskdə bir kataloq paylaşır.
- Bir çox istifadəçilər yerli kompüterlərində MLflow-u işə salmaq üçün SQLAlchemy-ə uyğun verilənlər bazası olan SQLite-dən də istifadə edirlər.
- MLflow paylanmış arxitekturaları da dəstəkləyir. İzləmə serveri, backend mağazası və artefakt mağazası bunların hamısı müxtəlif serverlərdə yerləşdirilir.
- Əgər qaçış MLflow Layihəsi tərəfindən başladılıbsa, git commit hash-dən istifadə edilib. MLflow Python, R, Java və REST API-ləri işləmək üçün məlumatları daxil etmək üçün istifadə edilə bilər.
Əlavə məlumat üçün rəsmi müraciət edə bilərsiniz sənədlər.
2. MLFlow Layihələri
İzləmə komponentlərini nəzərdən keçirdikdən sonra, icra kontekstindən asılı olmayaraq, model təlim sessiyaları üçün təkrarlana bilən qablaşdırma strukturu olan MLflow layihələri haqqında danışmaq istərdim.
Müəssisələr maşın öyrənməsinin geniş spektrindən istifadə edir, lakin onlar bu təlim vasitələrindən müxtəlif kontekstlərdə də istifadə edirlər. Məsələn, onlar təlim kodunu buludda, yerli kompüterdə və ya notebookda icra edə bilərlər.
Bu, maşın öyrənmə nəticələrinin təkrarlanmasının çətin olduğu problemə gətirib çıxarır. Çox vaxt eyni eyni təlim kodu iki ayrı yerdə icra olunmur və ya eyni nəticələri vermir.
MLflow tərəfindən təmin edilən həll, bütün maşın öyrənmə təlim kodunu, həmçinin versiya kitabxanası asılılıqlarını, parametrlərini, təlim və sınaq məlumatlarını özündə birləşdirən müstəqil təlim kodu layihəsinin tərifidir.
MLflow, maşın öyrənmə təlimi prosesi üçün bütün tələblər toplusunu aydın şəkildə təsvir etməklə icra kontekstləri arasında təkrarlanmanı təmin edir. Bütün bu kitabxanaları quraşdıraraq və kodun işlədiyi eyni sistem vəziyyətini yerinə yetirməklə bunu həyata keçirir.
MLflow layihəsi kataloqdan başqa bir şey deyil. Bu, təlim kodunu, kitabxanadan asılılıq tərifini və təlim sessiyası üçün lazım olan digər məlumatları, həmçinin bu əlavə konfiqurasiya faylını özündə cəmləşdirən kataloqdur.
Bu kitabxana tələbləri müxtəlif yollarla müəyyən edilə bilər. İstifadəçilər, məsələn, təlim kodu kitabxanası tələblərini sadalamaq üçün YAML formatlı anakonda mühitinin spesifikasiyası təqdim edə bilərlər. MLflow təlim kodunu konteyner daxilində yerinə yetirəcək. Belə bir halda, onlara Docker konteyneri də daxil ola bilər.
Nəhayət, MLflow bu layihələri, həmçinin Python və Java API-ləri idarə etmək üçün əmr xətti interfeysinə (CLI) malikdir. Bu layihələr istifadəçinin yerli sistemində, həmçinin Databricks iş planlayıcısı və Kubernetes kimi müxtəlif uzaq parametrlərdə işlədilə bilər. MLflow layihələri, əsasən standartlara əsaslanaraq, məlumat elmi kodunu təkrarlanan və təkrar istifadə edilə bilən şəkildə paketləməyə imkan verir.
Layihələr komponentinə API, eləcə də layihələri idarə etmək üçün əmr xətti utilitləri daxildir. Bu imkanlar maşın öyrənmə proseslərini formalaşdırmaq üçün layihələrin bir-birinə bağlanmasına zəmanət verir.
Əsas Xüsusiyyətlər
- MLflow layihə mühitlərini, o cümlədən Docker konteyner mühitini, Conda mühitini və sistem mühitini dəstəkləyir.
- İstənilən Git repozitoriyası və ya yerli kataloqu MLflow layihəsi kimi qəbul edilə bilər; default olaraq; hər hansı bir qabıqdan və ya istifadə edə bilərsiniz Python yazısı layihə giriş nöqtəsi kimi kataloqda.
- Java kitabxanaları kimi qeyri-Python asılılıqları Docker konteynerlərindən istifadə etməklə tutula bilər.
- YAML sintaksisindəki mətn faylı olan layihənin kök kataloquna layihə faylı əlavə etməklə siz MLflow Layihəsi üzərində daha çox nəzarət əldə edə bilərsiniz.
Əlavə məlumat üçün rəsmi müraciət edə bilərsiniz sənədlər.
3. MLflow Modelləri
İndi mən geniş istehsal kontekstlərini dəstəkləyən ümumi təyinatlı model formatı olan MLflow modellərini müzakirə etmək istərdim. MLflow modellərinin səbəbi indi layihələrin səbəbi ilə kifayət qədər oxşardır.
Yenə də görürük ki, modellər geniş alətlərdən istifadə etməklə yaradıla bilər, lakin onlar həm də təlim mühitlərindən fərqli olaraq geniş situasiyalarda istehsal oluna və ya yerləşdirilə bilər.
Bu parametrlərə Kubernetes və ya Amazon SageMaker kimi real vaxt rejimində xidmət üçün alətlər, həmçinin Spark kimi axın və toplu hesablama daxildir. Bundan əlavə, bəzi müəssisələr modelləri əvvəlcədən konfiqurasiya edilmiş bulud nümunəsində işləyən RESTful veb xidməti kimi yerləşdirməyi seçə bilər.
MLflow modeli, layihə kimi, kataloq strukturudur. O, konfiqurasiya faylını və bu dəfə təlim kodundan daha çox seriallaşdırılmış model artefaktını ehtiva edir. O, həmçinin layihə kimi təkrarlanmaq üçün bu asılılıqlar dəstini ehtiva edir. Bu dəfə biz Conda mühiti kontekstində qiymətləndirmə asılılıqlarını nəzərdən keçirəcəyik.
Bundan əlavə, MLflow bir sıra məşhur çərçivələrdən MLflow formatında modelləri seriallaşdırmaq üçün model yaratmaq alətlərini ehtiva edir. Nəhayət, MLflow hər hansı MLflow modelinin istehsalı və bir sıra xidmətlərə qoşulması üçün tətbiqlər, API-lər əlavə edir və bu API-lər Python, Java, R və CLI formatında əlçatandır.
Modellər qablaşdırma modelləri üçün standart struktura malik olan komponentdir və nəticə çıxaran serverlər və ya proqramlar kimi aşağı alətlər tərəfindən istifadə edilə və başa düşülə bilər. Verilənlər bazası toplu nəticə çıxarma platforması. Bu komponent bir modeli istehsal üçün qablaşdırarkən saatlarla sifariş edilmiş koda qənaət edir.
MLflow Modeli maşın öyrənmə modellərini "ləzzətlər" kimi tanınan müxtəlif formalarda qablaşdırmaq üçün standartdır. MLflow müxtəlif növ modelləri yerləşdirməyə kömək edəcək çoxlu alətlər təqdim edir. Hər bir MLflow Modeli ixtiyari faylları, eləcə də istifadə oluna biləcəyi ləzzətlərin siyahısı ilə ML model deskriptor faylını ehtiva edən kataloq kimi saxlanılır.
Əsas Xüsusiyyətlər
- MLflow-un bütün daxili yerləşdirmə alətləri modeli Python funksiyası kimi necə işlətməyi izah edən “Python funksiyası” ləzzəti kimi çoxsaylı “standart” ləzzətlər təklif edir.
- Hər bir MLflow Modeli ixtiyari faylları ehtiva edən kataloqdan, eləcə də modelin çoxsaylı ləzzətlərini müəyyən edən kataloqun kökündə yerləşən ML model faylından ibarətdir.
- Modeli saxlayarkən MLflow sizə modelin asılılıqlarını ehtiva edən Conda mühiti parametrini təyin etməyə imkan verir. Conda mühiti göstərilməyibsə, modelin ləzzətinə əsaslanan defolt mühit qurulur. Bundan sonra Conda mühiti conda.yaml-da saxlanılır.
Əlavə məlumat üçün rəsmi müraciət edə bilərsiniz sənədlər.
4. MLflow Model Qeydiyyatı
Model reyestri öyrənilmiş maşın öyrənməsi (ML) modelləri üçün depodur. Model Qeydiyyatı API-lərdən və komanda şəklində müxtəlif mərhələlərdə modelləri saxlamaq üçün istifadə edilən veb-əsaslı proqramdan ibarətdir. Model Lineage, Model Versioning, Easy Stage Transition və Annotation Model Registry-də mövcud olan imkanlardan yalnız bir neçəsidir.
Model reyestri, modellərin özündən əlavə, modeli qurmaq üçün istifadə edilən məlumatlar və təlim tapşırıqları haqqında məlumatı (metadata) ehtiva edir. ML modelləri üçün nəsil yaratmaq üçün bu tələb olunan girişləri izləmək çox vacibdir. Bu baxımdan, model reyestrinin funksiyaları adi proqram təminatı ilə eynidir versiya nəzarət sistemləri (məsələn, Git, SVN) və artefakt anbarları (məsələn, Artifactory, PyPI).
Model Qeydiyyatı məlumat alimlərinə və maşın öyrənmə mühəndislərinə digər komandalarla əməkdaşlıq üçün öz modellərini dərc etməyə, sınaqdan keçirməyə, izləməyə, idarə etməyə və yaymağa imkan verən çərçivədir. Əsasən, model reyestri sınaq mərhələsini başa vurduqdan və tapıntılarınızı komanda və maraqlı tərəflərlə bölüşməyə hazır olduqdan sonra işə salınır.
MLflow Model Qeydiyyatı modellərinizi və onların istifadə müddətini mərkəzi yerdən idarə etmək üçün API və istifadəçi interfeysi təqdim edir. Model nəsli, model versiyaları, annotasiyalar və mərhələ keçidləri reyestr vasitəsilə mövcuddur.
MLflow-da qeydə alınmış model unikal ada və metadataya, model versiyalarına, keçid mərhələlərinə və model xəttinə malik olan modeldir. Bir və ya bir neçə model versiyası qeydə alınmış modeldə tapıla bilər. Yeni model reyestrdə qeydiyyata alındıqda 1-ci versiya hesab olunur. Aşağıdakı versiya eyni adlı hər hansı yeni modelə əlavə olunur.
İstənilən vaxt istənilən model versiyasına bir addım təyin edə bilərsiniz. Bununla belə, mərhələlər səhnələşdirmə, istehsal və arxivləşdirmə kimi rəsmi olaraq təyin edilmiş MLflow mərhələləri altında təyin edilməlidir. Model versiyası bir mərhələdən digərinə keçə bilər.
MLflow sizə həm yuxarı səviyyəli modeli, həm də hər bir xüsusi versiyanı şərh etmək üçün markdowndan istifadə etməyə imkan verir. Siz təsvirləri, eləcə də alqoritm izahatları, metodologiya və istifadə olunan verilənlər dəstləri kimi digər müvafiq məlumatları daxil edə bilərsiniz.
Əsas Xüsusiyyətlər
- Öz MLflow serverinizi yerləşdirərkən UI və ya API vasitəsilə model reyestrinə daxil olmaq üçün verilənlər bazası ilə dəstəklənən backend mağazasından istifadə etməlisiniz.
- Model Reyestrinə MLflow model ləzzəti və ya MLflow Client Tracking API interfeysi vasitəsilə də daxil olmaq olar. Siz, məsələn, bir MLflow eksperimenti zamanı və ya bütün sınaqlarınızdan sonra modeli qeydiyyatdan keçirə bilərsiniz.
- Hər kəs MLflow istifadə edərək öz modellərini öyrətməyə başlamayacaq. Nəticədə, MLflow-dan istifadə etməzdən əvvəl bəzi modelləri öyrədə bilərsiniz. Modelləri yenidən öyrətmək əvəzinə, siz sadəcə saxlanılan modellərinizi Model Reyestrində qeydiyyatdan keçirmək istəyirsiniz.
Əlavə məlumat üçün rəsmi müraciət edə bilərsiniz sənədlər.
Nəticə
MLflow əla və daim böyüyən ML həyat dövrü alətidir. Onu cari alətlər və platformalarınızla yanaşı istifadə edə bilərsiniz.
O, Python, Java və R daxil olmaqla bir neçə proqramlaşdırma dillərini dəstəkləyir. Siz həmçinin istifadəçi dostu dizaynı sayəsində müxtəlif model versiyalarını tez izləyə, saxlaya və müqayisə edə bilərsiniz.
MLflow-u sınayın və təcrübənizi bizə bildirin!
Cavab yaz