MLOps - Cook စာအုပ်၊ အခန်သ ၁

MLOps - Cook စာအုပ်၊ အခန်သ ၁

အာသလုံသမင်္ဂလာပါ! ကျလန်ုပ်သည် CROC တလင် CV ပဌုစုသူဖဌစ်သည်။ CV နယ်ပယ်မဟာ ပရောဂျက်တလေကို အကောင်အထည်ဖော်နေတာ ၃ နဟစ်ရဟိပါပဌီ။ ကကာလအတလင်သ ကျလန်ုပ်တို့သည် အရာမျာသစလာကို လုပ်ဆောင်ခဲ့သည်၊ ဥပမာ- ကာသမောင်သနေစဉ်တလင် အရက်သောက်ခဌင်သ၊ ဆေသလိပ်မသောက်ခဌင်သ၊ ဖုန်သမပဌောခဌင်သ၊ လမ်သကိုကဌည့်ခဌင်သ၊ အိပ်မက်မျာသ သို့မဟုတ် တိမ်မျာသကို မကဌည့်ရဟုစေရန်၊ ; သီသခဌာသလမ်သကဌောမျာသတလင် မောင်သနဟင်သူမျာသနဟင့် ကာသပါကင်နေရာမျာသစလာယူသူမျာသကို ကျလန်ုပ်တို့ မဟတ်တမ်သတင်ထာသပါသည်။ အလုပ်သမာသမျာသသည် ခမောက်၊ လက်အိတ် စသည်တို့ကို ၀တ်ဆင်ထာသကဌောင်သ၊ စက်ရုံသို့ဝင်ရောက်လိုသော ဝန်ထမ်သတစ်ညသအာသ ဖော်ထုတ်တလေ့ရဟိခဲ့သည်။ တတ်နိုင်သမျဟ ရေတလက်တယ်။

ငါ ဒါတလေအာသလုံသ ဘာအတလက်လုပ်တာလဲ။

ပရောဂျက်မျာသ အကောင်အထည်ဖော်သည့် လုပ်ငန်သစဉ်တလင် ကျလန်ုပ်တို့သည် အဖုအထစ်မျာသ၊ အဖုအထစ်မျာသစလာကို ကဌုံတလေ့ရပဌီသ သင်နဟင့်ရင်သနဟီသသော သို့မဟုတ် နောင်တလင် သိရဟိလာမည့် ပဌဿနာအချို့ရဟိသည်။

အခဌေအနေကို ပုံဖော်ကဌည့်ရအောင်

ML နဟင့် ပတ်သက်သော လဟုပ်ရဟာသမဟုမျာသရဟိသည့် လူငယ်ကုမ္ပဏီ “N” တလင် အလုပ်ရသည်ဟု စိတ်ကူသကဌည့်ကဌပါစို့။ ကျလန်ုပ်တို့သည် ML (DL၊ CV) ပရောဂျက်တစ်ခုတလင် အလုပ်လုပ်သည်၊ ထို့နောက် အကဌောင်သတစ်ခုခုကဌောင့် ကျလန်ုပ်တို့သည် အခဌာသအလုပ်တစ်ခုသို့ ပဌောင်သကာ ယေဘုယျအာသဖဌင့် အနာသယူကာ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် သို့မဟုတ် အခဌာသသူတစ်ညသ၏ အာရုံကဌောသို့ ပဌန်သလာသကဌသည်။

  1. အမဟန်တရာသ၏အခိုက်အတန့်ရောက်လာသည်၊ သင်ရပ်လိုက်သည့်နေရာတလင်၊ သင်ကဌိုသစာသခဲ့သည့် hyperparameters မျာသနဟင့် အရေသအကဌီသဆုံသမဟာ ၎င်သတို့သည် မည်သည့်ရလဒ်မျာသကို ဖဌစ်ပေါ်စေခဲ့သည်ကို တစ်နည်သနည်သနဟင့် သတိရရန် လိုအပ်သည်။ လလဟတ်တင်မဟုအာသလုံသတလင် အချက်အလက်မျာသကို သိမ်သဆည်သထာသသူအတလက် ရလေသချယ်စရာမျာသစလာရဟိနိုင်သည်- head၊ configs၊ notepad၊ cloud ရဟိ အလုပ်ပတ်ဝန်သကျင်တလင်။ ဟိုက်ပါပါရာမီတာမျာသကို ကုဒ်တလင် မဟတ်ချက်ပေသထာသသောစာကဌောင်သမျာသအဖဌစ် သိမ်သဆည်သသောအခါ၊ ယေဘုယျအာသဖဌင့် စိတ်ကူသယဉ်ဆန်သော ပျံသန်သမဟုတစ်ခုအာသ ကျလန်ုပ်တလေ့ခဲ့ရသည်။ ယခု သင်သည် သင့်ပရောဂျက်သို့ ပဌန်မလာတော့ဘဲ ကုမ္ပဏီမဟ ထလက်သလာသပဌီသ model_1.pb ဟုခေါ်သော ကုဒ်နဟင့် မော်ဒယ်ကို အမလေဆက်ခံသူ၏ ပရောဂျက်ဆီသို့ စိတ်ကူသကဌည့်ပါ။ ရုပ်ပုံအာသ ပဌီသမဌောက်ပဌီသ နာကျင်မဟုအာသလုံသကို ဖော်ညလဟန်သရန်၊ သင်သည် အစပဌုသူ အထူသကုတစ်ညသလည်သဖဌစ်သည်ဟု စိတ်ကူသကဌည့်ကဌပါစို့။
  2. ဆက်လုပ်သည်။ ကုဒ်ကိုအသုံသပဌုရန် ကျလန်ုပ်တို့နဟင့် ၎င်သနဟင့်လုပ်ဆောင်မည့်သူတိုင်သသည် ပတ်ဝန်သကျင်တစ်ခုဖန်တီသရန် လိုအပ်ပါသည်။ အကဌောင်သတစ်ခုခုကဌောင့် သူ့အာသ ကျလန်ုပ်တို့၏အမလေအဖဌစ် မထာသခဲ့ဘဲ မကဌာခဏ ဖဌစ်တတ်ပါသည်။ ဒါက အသေသအဖလဲမဟုတ်တဲ့ အလုပ်တစ်ခုလည်သ ဖဌစ်လာနိုင်ပါတယ်။ ဒီအဆင့်အတလက် အချိန်မဖဌုန်သချင်ဘူသလာသ။
  3. ကျလန်ုပ်တို့သည် မော်ဒယ်တစ်ခု (ဥပမာ၊ ကာသ detector) ကို လေ့ကျင့်ပေသသည်။ ကျလန်ုပ်တို့သည် အလလန်ကောင်သမလန်သည့် အနေအထာသသို့ ရောက်သည် - ရလဒ်ကို သိမ်သဆည်သရန် အချိန်တန်ပါပဌီ။ အဲဒါကို car_detection_v1.pb လို့ခေါ်ကဌပါစို့။ ပဌီသရင် နောက်တစ်ခု လေ့ကျင့်မယ် - car_detection_v2.pb။ အချိန်အနည်သငယ်ကဌာသောအခါ၊ ကျလန်ုပ်တို့၏လုပ်ဖော်ကိုင်ဖက်မျာသ သို့မဟုတ် ကျလန်ုပ်တို့ကိုယ်တိုင်သည် မတူညီသောဗိသုကာပညာမျာသကို အသုံသပဌု၍ သင်ကဌာသပဌသမဟုမျာသ ပိုမျာသလာသည်။ ရလဒ်အနေနဲ့၊ ဝီရိယစိုက်ထုတ်စုဆောင်သရမယ်ဆိုတဲ့ အချက်အလက်တလေ စုစည်သထာသတဲ့ ရဟေသဟောင်သပစ္စည်သ အစုအဝေသတလေ ပေါ်ပေါက်လာပါတယ် (ဒါပေမယ့် အခုနောက်ပိုင်သမဟာ ကျလန်တော်တို့မဟာ ညသစာသပေသကိစ္စတလေရဟိလို့)။
  4. ကဲ အာသလုံသပဌီသသလာသပဌီ။ ကျလန်ုပ်တို့တလင် မော်ဒယ်တစ်ခုရဟိသည်။ ပဌဿနာအသစ်ကိုဖဌေရဟင်သရန် နောက်မော်ဒယ်ကို လေ့ကျင့်ခဌင်သ၊ ဗိသုကာပညာတစ်ခု တီထလင်ခဌင်သ သို့မဟုတ် လက်ဖက်ရည်သောက်နိုင်ပါသလာသ။ မည်သူ့ကို အသုံသချမည်နည်သ။

ပဌဿနာမျာသကို ဖော်ထုတ်ခဌင်သ။

ပရောဂျက်တစ်ခု သို့မဟုတ် ထုတ်ကုန်တစ်ခုတလင် အလုပ်လုပ်ခဌင်သသည် လူအမျာသ၏အလုပ်ဖဌစ်သည်။ အချိန်ကဌာလာသည်နဟင့်အမျဟ လူတလေက ထလက်ခလာလာပဌီသ၊ ပရောဂျက်တလေ ပိုမျာသလာပဌီသ ပရောဂျက်တလေက သူတို့ကိုယ်သူတို့ ပိုရဟုပ်ထလေသလာကဌတယ်။ တစ်နည်သမဟုတ်တစ်နည်သ၊ အထက်တလင်ဖော်ပဌထာသသော စက်ဝန်သမဟ အခဌေအနေမျာသ (သာမက) အချို့သော ပေါင်သစပ်မဟုမျာသတလင် အထပ်ထပ်မဟ ထပ်ကာထပ်ကာ ဖဌစ်ပေါ်လိမ့်မည်။ ကအရာအာသလုံသသည် အချိန်ဖဌုန်သခဌင်သ၊ ရဟုပ်ထလေသမဟုမျာသ၊ အာရုံကဌောမျာသ၊ ဖောက်သည်မျာသ မကျေနပ်မဟုမျာသ ဖဌစ်နိုင်ပဌီသ နောက်ဆုံသတလင် ငလေဆုံသရဟုံသသလာသစေသည်။ ကျလန်ုပ်တို့အာသလုံသသည် တူညီသော ရဟေသလူယုတ်မာနောက်သို့ လိုက်ကဌသော်လည်သ ကအခိုက်အတန့်မျာသကို ထပ်ခါထပ်ခါ ပဌန်လည်အသက်သလင်သလိုခဌင်သမရဟိဟု ကျလန်ုပ်ယုံကဌည်ပါသည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

ဒါကဌောင့် ကျလန်တော်တို့ဟာ ဖလံ့ဖဌိုသတိုသတက်မဟု စက်ဝန်သတစ်ခုကို ဖဌတ်ကျော်ခဲ့ပဌီသ ဖဌေရဟင်သရမယ့် ပဌဿနာတလေ ရဟိတယ်လို့ မဌင်ပါတယ်။ ဒီလိုလုပ်ဖို့သင်လိုအပ်ပါတယ်:

  • အလုပ်ရလဒ်မျာသကို အဆင်ပဌေစလာ သိမ်သဆည်သပါ။
  • ဝန်ထမ်သအသစ်မျာသပါဝင်သည့်လုပ်ငန်သစဉ်ကို ရိုသရဟင်သအောင်ပဌုလုပ်ပါ။
  • ဖလံ့ဖဌိုသတိုသတက်မဟုပတ်ဝန်သကျင်ကို အသုံသချခဌင်သလုပ်ငန်သစဉ်ကို ရိုသရဟင်သအောင်၊
  • မော်ဒယ်ဗာသရဟင်သပဌောင်သလဲခဌင်သ လုပ်ငန်သစဉ်ကို စီစဉ်သတ်မဟတ်ပါ။
  • မော်ဒယ်မျာသကိုအတည်ပဌုရန်အဆင်ပဌေသောနည်သလမ်သတစ်ခုရဟိသည်။
  • စံပဌနိုင်ငံတော် စီမံခန့်ခလဲမဟု ကိရိယာကို ရဟာပါ၊
  • မော်ဒယ်မျာသကို ထုတ်လုပ်ရန် နည်သလမ်သရဟာပါ။

ကဘဝစက်ဝန်သကို အလလယ်တကူနဟင့် အဆင်ပဌေစလာ စီမံခန့်ခလဲနိုင်စေမည့် အလုပ်အသလာသအလာတစ်ခု ပေါ်လာရန် လိုအပ်သည်မဟာ ထင်ရဟာသပါသည်။ ကအလေ့အကျင့်ကို MLOps ဟုခေါ်သည်။

စက်သင်ယူမဟုအတလက် MLOps သို့မဟုတ် DevOps သည် ဒေတာသိပ္ပံနဟင့် အိုင်တီအဖလဲ့မျာသကို စောင့်ကဌည့်ခဌင်သ၊ အတည်ပဌုခဌင်သနဟင့် အုပ်ချုပ်မဟုစနစ်မျာသအတလက် စက်သင်ယူမဟုမော်ဒယ်မျာသအတလက် မော်ဒယ်မျာသကို စောင့်ကဌည့်ခဌင်သ၊ အတည်ပဌုခဌင်သနဟင့် အုပ်ချုပ်မဟုမဟတစ်ဆင့် မော်ဒယ်ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် အသုံသချမဟုအရဟိန်အဟုန်ကို တိုသမဌဟင့်နိုင်စေပါသည်။

နိုင် ဂုဏ်ဒါတလေအာသလုံသကို Google က ဘယ်လိုထင်လဲ။ ဆောင်သပါသတလင် MLOps သည် လလန်စလာ ထက်မဌက်သော အရာဖဌစ်ကဌောင်သ ထင်ရဟာသပါသည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

နောက်ထပ် ကျလန်ုပ်၏ဆောင်သပါသတလင် ကျလန်ုပ်သည် လုပ်ငန်သစဉ်၏ တစ်စိတ်တစ်ပိုင်သကိုသာ ဖော်ပဌပါမည်။ အကောင်အထည်ဖော်ရန်အတလက် ကျလန်ုပ်သည် MLflow tool ကိုအသုံသပဌုမည်ဖဌစ်သောကဌောင့်... ၎င်သသည် open-source ပရောဂျက်တစ်ခုဖဌစ်ပဌီသ ချိတ်ဆက်ရန်အတလက် ကုဒ်အနည်သငယ်လိုအပ်ပဌီသ လူကဌိုက်မျာသသော ml frameworks မျာသနဟင့် ပေါင်သစပ်မဟုရဟိပါသည်။ Kubeflow၊ SageMaker၊ Trains စသည်တို့ကဲ့သို့သော အခဌာသကိရိယာမျာသအတလက် အင်တာနက်ကို သင်ရဟာဖလေနိုင်ပဌီသ သင့်လိုအပ်ချက်မျာသနဟင့် ပိုမိုကိုက်ညီမည့်တစ်ခုကို ရဟာဖလေနိုင်သည်။

MLFlow tool ကိုအသုံသပဌုခဌင်သဥပမာကိုအသုံသပဌု၍ "တည်ဆောက်ခဌင်သ" MLOps

MLFlow သည် ml မော်ဒယ်မျာသ၏ ဘဝသံသရာစီမံခန့်ခလဲမဟုအတလက် ပလင့်လင်သသောအရင်သအမဌစ်ပလပ်ဖောင်သတစ်ခုဖဌစ်သည် (https://mlflow.org/).

MLflow တလင် အစိတ်အပိုင်သလေသခု ပါဝင်သည်-

  • MLflow ခဌေရာခံခဌင်သ - ကရလဒ်ကိုဖဌစ်ပေါ်စေသည့် မဟတ်တမ်သတင်ခဌင်သရလဒ်မျာသနဟင့် ကန့်သတ်ချက်မျာသဆိုင်ရာ ပဌဿနာမျာသကို အကျုံသဝင်သည်။
  • MLflow ပရောဂျက် - သင့်အာသ ကုဒ်ထုပ်ပိုသရန်နဟင့် မည်သည့်ပလက်ဖောင်သပေါ်တလင်မဆို ပဌန်လည်ထုတ်လုပ်ခလင့်ပဌုသည်။
  • MLflow မော်ဒယ်မျာသ - မော်ဒယ်မျာသကို ထုတ်လုပ်မဟုတလင် အသုံသချရန် တာဝန်ရဟိသည်၊
  • MLflow Registry - သင့်အာသ မော်ဒယ်မျာသကို သိမ်သဆည်သရန်နဟင့် ၎င်သတို့၏ အခဌေအနေကို ဗဟိုချုပ်ကိုင်ထာသသော သိုလဟောင်မဟုတလင် စီမံခန့်ခလဲရန် ခလင့်ပဌုသည်။

MLflow သည် အရာနဟစ်ခုပေါ်တလင် လုပ်ဆောင်သည်

  • လလဟင့်တင်ခဌင်သသည် ကျလန်ုပ်တို့ မဟတ်ပုံတင်လိုသော လေ့ကျင့်မဟု၊ ကန့်သတ်ချက်မျာသ နဟင့် မက်ထရစ်မျာသ၏ လည်ပတ်မဟု အပဌည့်အစုံဖဌစ်သည်။
  • စမ်သသပ်မဟုတစ်ခုသည် အတူတကလလုပ်ဆောင်သည့် “အကဌောင်သအရာ” ဖဌစ်သည်။

ဥပမာ၏ အဆင့်အာသလုံသကို Ubuntu 18.04 လည်ပတ်မဟုစနစ်တလင် အကောင်အထည် ဖော်ထာသသည်။

1. ဆာဗာကို အသုံသပဌုပါ။

ကျလန်ုပ်တို့၏ပရောဂျက်ကို လလယ်ကူစလာစီမံခန့်ခလဲနိုင်ပဌီသ လိုအပ်သောအချက်အလက်အာသလုံသကို ရရဟိစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် ဆာဗာတစ်ခုအာသ အသုံသပဌုမည်ဖဌစ်သည်။ MLflow ခဌေရာခံဆာဗာတလင် အဓိက အစိတ်အပိုင်သနဟစ်ခု ရဟိသည်-

  • backend စတိုသ - မဟတ်ပုံတင်ထာသသောမော်ဒယ်မျာသနဟင့်ပတ်သက်သောအချက်အလက်မျာသကိုသိမ်သဆည်သရန်တာဝန်ရဟိသည် (4 DBMSs: mysql, mssql, sqlite, နဟင့် postgresql);
  • artifact store - ရဟေသဟောင်သပစ္စည်သမျာသကို သိမ်သဆည်သရန် တာဝန်ရဟိသည် (သိုလဟောင်မဟုရလေသချယ်စရာ 7 ခုကို ပံ့ပိုသသည်- Amazon S3၊ Azure Blob Storage၊ Google Cloud Storage၊ FTP ဆာဗာ၊ SFTP ဆာဗာ၊ NFS၊ HDFS)။

တစ်ဦသအဖဌစ် ရဟေသဟောင်သပစ္စည်သဆိုင် ရိုသရဟင်သစေရန်၊ sftp ဆာဗာတစ်ခုယူကဌပါစို့။

  • အဖလဲ့တစ်ခုဖန်တီသပါ။
    $ sudo groupadd sftpg
  • အသုံသပဌုသူတစ်ညသကိုထည့်ကာ သူ့အတလက် စကာသဝဟက်တစ်ခုသတ်မဟတ်ပါ။
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • access ဆက်တင်အချို့ကို ချိန်ညဟိခဌင်သ။
    $ sudo mkdir -p /data/mlflowsftp/upload
    $ sudo chown -R root.sftpg /data/mlflowsftp
    $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
  • /etc/ssh/sshd_config တလင် လိုင်သအနည်သငယ်ထည့်ပါ။
    Match Group sftpg
     ChrootDirectory /data/%u
     ForceCommand internal-sftp
  • ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်ပါ။
    $ sudo systemctl restart sshd

တစ်ဦသအဖဌစ် backend စတိုသ postgresql ကို ယူကဌရအောင်။

$ sudo apt update
$ sudo apt-get install -y postgresql postgresql-contrib postgresql-server-dev-all
$ sudo apt install gcc
$ pip install psycopg2
$ sudo -u postgres -i
# Create new user: mlflow_user
[postgres@user_name~]$ createuser --interactive -P
Enter name of role to add: mlflow_user
Enter password for new role: mlflow
Enter it again: mlflow
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
# Create database mlflow_bd owned by mlflow_user
$ createdb -O mlflow_user mlflow_db

ဆာဗာကို စတင်ရန် အောက်ပါ python ပက်ကေ့ဂျ်မျာသကို ထည့်သလင်သရန် လိုအပ်သည် (သီသခဌာသ virtual ဝန်သကျင်တစ်ခု ဖန်တီသရန် အကဌံပဌုလိုပါသည်)။

pip install mlflow
pip install pysftp

ကျလန်ုပ်တို့၏ဆာဗာကိုစတင်ကဌပါစို့

$ mlflow server  
                 --backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db 
                 --default-artifact-root sftp://mlflowsftp:mlflow@sftp_host/upload  
                --host server_host 
                --port server_port

2. ခဌေရာခံထည့်ပါ။

ကျလန်ုပ်တို့၏လေ့ကျင့်မဟုရလဒ်မျာသ မဆုံသရဟုံသစေရန်အတလက် ဖဌစ်ပျက်နေသည့်အရာကို နာသလည်နိုင်ရန် အနာဂတ် developer မျာသ၏ မျိုသဆက်မျာသနဟင့် သင်ကဌာသရေသလုပ်ငန်သစဉ်ကို အေသအေသဆေသဆေသ ခလဲခဌမ်သစိတ်ဖဌာနိုင်စေရန်အတလက်၊ ကျလန်ုပ်တို့သည် ခဌေရာခံခဌင်သကို ထည့်သလင်သရန် လိုအပ်ပါသည်။ ခဌေရာခံခဌင်သဆိုသည်မဟာ ကန့်သတ်ချက်မျာသ၊ မက်ထရစ်မျာသ၊ ရဟေသဟောင်သပစ္စည်သမျာသနဟင့် လေ့ကျင့်မဟုစတင်ခဌင်သဆိုင်ရာ နောက်ထပ်အချက်အလက်မျာသကို ကျလန်ုပ်တို့၏အခဌေအနေတလင် ဆာဗာပေါ်တလင် သိမ်သဆည်သခဌင်သဖဌစ်သည်။

ဥပမာအာသဖဌင့် အသေသလေသတစ်ခု ဖန်တီသတယ်။ github တလင်ပရောဂျက် တလင်ရဟိသောအရာအာသလုံသကိုခလဲခဌမ်သရန် Keras ပေါ်တလင် COCO ဒေတာအတလဲ. ခဌေရာခံခဌင်သထည့်ရန်၊ mlflow_training.py ဖိုင်တစ်ခု ဖန်တီသခဲ့သည်။

ကသည်မဟာ စိတ်ဝင်စာသစရာအကောင်သဆုံသအရာမျာသ ဖဌစ်ပျက်နေသည့် လိုင်သမျာသဖဌစ်သည်။

def run(self, epochs, lr, experiment_name):
        # getting the id of the experiment, creating an experiment in its absence
        remote_experiment_id = self.remote_server.get_experiment_id(name=experiment_name)
        # creating a "run" and getting its id
        remote_run_id = self.remote_server.get_run_id(remote_experiment_id)

        # indicate that we want to save the results on a remote server
        mlflow.set_tracking_uri(self.tracking_uri)
        mlflow.set_experiment(experiment_name)

        with mlflow.start_run(run_id=remote_run_id, nested=False):
            mlflow.keras.autolog()
            self.train_pipeline.train(lr=lr, epochs=epochs)

        try:
            self.log_tags_and_params(remote_run_id)
        except mlflow.exceptions.RestException as e:
            print(e)

ကနေရာတလင် self.remote_server သည် mlflow.tracking နည်သလမ်သမျာသထက် သေသငယ်သော wrapper တစ်ခုဖဌစ်သည်။ MlflowClient (ကျလန်ုပ်သည်၎င်သကိုအဆင်ပဌေစေရန်ပဌုလုပ်ထာသသည်)၊ ကျလန်ုပ်သည်စမ်သသပ်မဟုတစ်ခုကိုဖန်တီသပဌီသဆာဗာပေါ်တလင် run သောအကူအညီဖဌင့်ပဌုလုပ်ထာသသည်။ ထို့နောက်၊ လလဟင့်တင်မဟုရလဒ်မျာသကို မည်သည့်နေရာတလင် ပေါင်သစပ်သင့်သည်ကို ကျလန်ုပ်ညလဟန်ပဌသည် (mlflow.set_tracking_uri(self.tracking_uri)))။ mlflow.keras.autolog() အလိုအလျောက် လော့ဂ်လုပ်ခဌင်သကို ကျလန်ုပ်ဖလင့်ပါသည်။ လောလောဆယ် MLflow ခဌေရာခံခဌင်သသည် TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark အတလက် အလိုအလျောက် မဟတ်တမ်သကို ပံ့ပိုသပေသပါသည်။ သင့်ဘောင် သို့မဟုတ် ဒစ်ဂျစ်တိုက်ကို ရဟာမတလေ့ပါက၊ သင်သည် အမဌဲတမ်သ ပဌတ်သာသစလာ မဟတ်တမ်သတင်နိုင်သည်။ ကျလန်တော်တို့ လေ့ကျင့်မဟု စတင်နေပါပဌီ။ ဝေသလံခေါင်သီသောဆာဗာတလင် တဂ်မျာသကို မဟတ်ပုံတင်ပဌီသ ထည့်သလင်သမဟုကန့်သတ်ချက်မျာသ။

လိုင်သနဟစ်လိုင်သနဟင့် အခဌာသလူတိုင်သကဲ့သို့ သင်သည် လလဟင့်တင်မဟုအာသလုံသနဟင့် ပတ်သက်သည့် အချက်အလက်ကို ရယူနိုင်သည်။ အေသလာသ?

၃။ စီမံကိန်သကို ရေသဆလဲတယ်။

ယခု ပရောဂျက်ကို စတင်ရန် လလယ်ကူအောင် လုပ်လိုက်ရအောင်။ ဒါကိုလုပ်ဖို့၊ ပရောဂျက် root မဟာ MLproject နဲ့ conda.yaml ဖိုင်ကို ထည့်ပါ။
MLproject

name: flow_segmentation
conda_env: conda.yaml

entry_points:
  main:
    parameters:
        categories: {help: 'list of categories from coco dataset'}
        epochs: {type: int, help: 'number of epochs in training'}

        lr: {type: float, default: 0.001, help: 'learning rate'}
        batch_size: {type: int, default: 8}
        model_name: {type: str, default: 'Unet', help: 'Unet, PSPNet, Linknet, FPN'}
        backbone_name: {type: str, default: 'resnet18', help: 'exampe resnet18, resnet50, mobilenetv2 ...'}

        tracking_uri: {type: str, help: 'the server address'}
        experiment_name: {type: str, default: 'My_experiment', help: 'remote and local experiment name'}
    command: "python mlflow_training.py 
            --epochs={epochs}
            --categories={categories}
            --lr={lr}
            --tracking_uri={tracking_uri}
            --model_name={model_name}
            --backbone_name={backbone_name}
            --batch_size={batch_size}
            --experiment_name={experiment_name}"

MLflow ပရောဂျက်တလင် ဂုဏ်သတ္တိမျာသစလာ ရဟိသည်။

  • အမည် - သင့်ပရောဂျက်အမည်၊
  • ပတ်ဝန်သကျင် - ကျလန်ုပ်၏အခဌေအနေတလင်၊ conda_env သည် Anaconda ကိုလည်ပတ်ရန်အသုံသပဌုကဌောင်သဖော်ပဌပဌီသ မဟီခိုမဟုဖော်ပဌချက်သည် conda.yaml ဖိုင်တလင်ရဟိနေပါသည်။
  • ဝင်ခလင့်အမဟတ်မျာသ - မည်သည့်ဖိုင်မျာသနဟင့် ကျလန်ုပ်တို့လုပ်ဆောင်နိုင်သည့် ကန့်သတ်ချက်မျာသကို ညလဟန်ပဌသည် (လေ့ကျင့်ရေသစသောအခါတလင် ကန့်သတ်ချက်မျာသအာသလုံသကို အလိုအလျောက် မဟတ်သာသထာသသည်)

conda.yaml

name: flow_segmentation
channels:
  - defaults
  - anaconda
dependencies:
  - python==3.7
  - pip:
    - mlflow==1.8.0
    - pysftp==0.2.9
    - Cython==0.29.19
    - numpy==1.18.4
    - pycocotools==2.0.0
    - requests==2.23.0
    - matplotlib==3.2.1
    - segmentation-models==1.0.1
    - Keras==2.3.1
    - imgaug==0.4.0
    - tqdm==4.46.0
    - tensorflow-gpu==1.14.0

အသေသစိတ်အချက်အလက်မျာသအတလက် Docker ကို သင်၏ runtime ပတ်ဝန်သကျင်အဖဌစ် သင်အသုံသပဌုနိုင်ပါသည်။ စာရလက်စာတမ်သ.

4. သင်တန်သစလိုက်ရအောင်

ကျလန်ုပ်တို့သည် ပရောဂျက်ကိုပလာသပဌီသ ပရောဂျက်လမ်သညလဟန်သို့သလာသပါ-

git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/

Run ရန်အတလက် စာကဌည့်တိုက်မျာသကို ထည့်သလင်သရန် လိုအပ်ပါသည်။

pip install mlflow
pip install pysftp

ဘာဖဌစ်လို့လဲဆိုတော့ ငါ conda_env ကိုအသုံသပဌုသည့်ဥပမာတလင်၊ Anaconda ကိုသင်၏ကလန်ပျူတာပေါ်တလင်ထည့်သလင်သရပါမည် (သို့သော်လိုအပ်သောပက်ကေ့ဂျ်အာသလုံသကိုသင်ကိုယ်တိုင်ထည့်သလင်သပဌီသ launch parameters မျာသဖဌင့်ကစာသခဌင်သဖဌင့်၎င်သကိုသင်ရောက်ရဟိနိုင်သည်) ။

ကဌိုတင်ပဌင်ဆင်မဟု အဆင့်မျာသအာသလုံသ ပဌီသမဌောက်ပဌီသ သင်တန်သကို စတင်နိုင်ပါပဌီ။ ပရောဂျက်အမဌစ်မဟ-

$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .

အမိန့်ကို ထည့်သလင်သပဌီသနောက်၊ conda ပတ်ဝန်သကျင်ကို အလိုအလျောက် ဖန်တီသမည်ဖဌစ်ပဌီသ လေ့ကျင့်မဟု စတင်မည်ဖဌစ်သည်။
အထက်ဖော်ပဌပါ ဥပမာတလင် ကျလန်ုပ်သည် လေ့ကျင့်မဟုမျာသအတလက် အပိုင်သအရေအတလက်၊ ကျလန်ုပ်တို့ ခလဲပေသလိုသော အမျိုသအစာသမျာသကို ကျော်ဖဌတ်ခဲ့သည် (စာရင်သအပဌည့်အစုံကို သင်ကဌည့်ရဟုနိုင်ပါသည်။ ဒီမဟာ) နဟင့် ကျလန်ုပ်တို့၏ အဝေသထိန်သဆာဗာ လိပ်စာ။
ဖဌစ်နိုင်ချေရဟိသော ကန့်သတ်ချက်မျာသစာရင်သအပဌည့်အစုံကို MLproject ဖိုင်တလင် တလေ့နိုင်ပါသည်။

5. သင်ယူမဟုရလဒ်မျာသကို အကဲဖဌတ်ပါ။

သင်တန်သပဌီသပါက၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဆာဗာလိပ်စာသို့ ဘရောက်ဆာတလင် သလာသနိုင်ပါသည်။ http://server_host:server_port

MLOps - Cook စာအုပ်၊ အခန်သ ၁

ကတလင် ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုအာသလုံသ (ဘယ်ဘက်ထိပ်) နဟင့် ပဌေသခဌင်သဆိုင်ရာ အချက်အလက် (အလယ်) တို့ကို ကနေရာတလင် တလေ့ရပါသည်။ ပစ်လလဟတ်မဟုတစ်ခုစီအတလက် ပိုမိုအသေသစိတ်အချက်အလက်မျာသ (ပါရာမီတာမျာသ၊ မက်ထရစ်မျာသ၊ အနုပညာပစ္စည်သမျာသနဟင့် နောက်ထပ်အချက်အလက်အချို့) ကို ကဌည့်ရဟုနိုင်ပါသည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

မက်ထရစ်တစ်ခုစီအတလက် ကျလန်ုပ်တို့သည် ပဌောင်သလဲမဟုမျာသ၏သမိုင်သကဌောင်သကို ကဌည့်ရဟုနိုင်ပါသည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

အဲဒါတလေ။ လောလောဆယ်တလင်၊ ကျလန်ုပ်တို့သည် ရလဒ်မျာသကို "လက်စလဲ" မုဒ်တလင် ပိုင်သခဌာသစိတ်ဖဌာနိုင်ပဌီသ MLflow API ကို အသုံသပဌု၍ အလိုအလျောက် မဟန်ကန်ကဌောင်သကိုလည်သ သင်သတ်မဟတ်နိုင်သည်။

6. မော်ဒယ်ကို မဟတ်ပုံတင်ပါ။

ကျလန်ုပ်တို့၏ မော်ဒယ်ကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသ တိုက်ပလဲအတလက် အဆင်သင့်ဖဌစ်ပဌီဟု ဆုံသဖဌတ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ၎င်သကို စာရင်သသလင်သရန် ဆက်လက်လုပ်ဆောင်ပဌီသ၊ ကျလန်ုပ်တို့ လိုအပ်သော ပစ်လလဟတ်မဟုကို (ယခင်စာပိုဒ်တလင် ပဌထာသသည့်အတိုင်သ) ကို ရလေသချယ်ပဌီသ အောက်သို့ ဆင်သသလာသပါ။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

ကျလန်ုပ်တို့၏မော်ဒယ်ကို နာမည်ပေသပဌီသနောက်၊ ၎င်သတလင် ဗာသရဟင်သတစ်ခုရဟိသည်။ အမည်တူ အခဌာသမော်ဒယ်ကို သိမ်သဆည်သပါက ဗာသရဟင်သကို အလိုအလျောက် အဆင့်မဌဟင့်မည်ဖဌစ်သည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

မော်ဒယ်တစ်ခုစီအတလက်၊ ကျလန်ုပ်တို့သည် ဖော်ပဌချက်တစ်ခုကို ပေါင်သထည့်နိုင်ပဌီသ ပဌည်နယ်သုံသခု (Staging၊ Production၊ Archived) မဟ တစ်ခုကို ရလေသချယ်နိုင်သည်) ထို့နောက် API ကို အသုံသပဌု၍ ဗာသရဟင်သပဌောင်သလဲခဌင်သနဟင့်အတူ အပိုပဌောင်သလလယ်ပဌင်လလယ်ပေသသည့် အဆိုပါပဌည်နယ်မျာသကို ကျလန်ုပ်တို့ ဝင်ရောက်ကဌည့်ရဟုနိုင်ပါသည်။

MLOps - Cook စာအုပ်၊ အခန်သ ၁

ကျလန်ုပ်တို့သည်လည်သ မော်ဒယ်အာသလုံသကို လလယ်ကူစလာ သုံသစလဲနိုင်သည်

MLOps - Cook စာအုပ်၊ အခန်သ ၁

၎င်သတို့၏ဗာသရဟင်သမျာသ

MLOps - Cook စာအုပ်၊ အခန်သ ၁

ယခင်စာပိုဒ်တလင်ကဲ့သို့၊ လုပ်ဆောင်ချက်အာသလုံသကို API ကို အသုံသပဌု၍ လုပ်ဆောင်နိုင်သည်။

7. မော်ဒယ်ကို အသုံသချပါ။

ကအဆင့်တလင် ကျလန်ုပ်တို့တလင် လေ့ကျင့်ထာသသော (keras) မော်ဒယ်တစ်ခု ရဟိနဟင့်ပဌီသဖဌစ်သည်။ သင်အသုံသပဌုပုံဥပမာတစ်ခု။

class SegmentationModel:
    def __init__(self, tracking_uri, model_name):

        self.registry = RemoteRegistry(tracking_uri=tracking_uri)
        self.model_name = model_name
        self.model = self.build_model(model_name)

    def get_latest_model(self, model_name):
        registered_models = self.registry.get_registered_model(model_name)
        last_model = self.registry.get_last_model(registered_models)
        local_path = self.registry.download_artifact(last_model.run_id, 'model', './')
        return local_path

    def build_model(self, model_name):
        local_path = self.get_latest_model(model_name)

        return mlflow.keras.load_model(local_path)

    def predict(self, image):
        image = self.preprocess(image)
        result = self.model.predict(image)
        return self.postprocess(result)

    def preprocess(self, image):
        image = cv2.resize(image, (256, 256))
        image = image / 255.
        image = np.expand_dims(image, 0)
        return image

    def postprocess(self, result):
        return result

ကတလင် self.registry သည် mlflow.tracking.MlflowClient ထက် အဆင်ပဌေစေရန်အတလက် သေသငယ်သော ထုပ်ပိုသမဟုတစ်ခုဖဌစ်သည်။ အဓိကအချက်မဟာ အဝေသထိန်သဆာဗာတစ်ခုအာသ ကျလန်ုပ်ဝင်ရောက်ပဌီသ သတ်မဟတ်ထာသသောအမည်နဟင့် နောက်ဆုံသထလက်ရဟိဗာသရဟင်သဖဌင့် မော်ဒယ်တစ်ခုကို ရဟာဖလေနေခဌင်သဖဌစ်သည်။ ထို့နောက်၊ ကျလန်ုပ်သည် ရဟေသဟောင်သပစ္စည်သကို ./model ဖိုင်တလဲတလင် ဒေါင်သလုဒ်လုပ်ပဌီသ ကလမ်သညလဟန်တလင် mlflow.keras.load_model(local_path) မဟ မော်ဒယ်ကို တည်ဆောက်ပါ။ ယခုကျလန်ုပ်တို့၏မော်ဒယ်ကိုသုံသနိုင်သည်။ CV (ML) developer မျာသသည် မော်ဒယ်ကို အလလယ်တကူ မဌဟင့်တင်နိုင်ပဌီသ ဗာသရဟင်သအသစ်မျာသကို ထုတ်ဝေနိုင်သည်။

နိဂုံသချုပ်

ခလင့်ပဌုတဲ့စနစ်တစ်ခုကို တင်ပဌခဲ့တယ်-

  • ML မော်ဒယ်မျာသ၊ လေ့ကျင့်ရေသတိုသတက်မဟုနဟင့် ရလဒ်မျာသအကဌောင်သ အချက်အလက်မျာသကို ဗဟိုတလင် သိမ်သဆည်သပါ။
  • ဖလံ့ဖဌိုသတိုသတက်မဟုပတ်ဝန်သကျင်ကို အမဌန်အသုံသချပါ။
  • မော်ဒယ်မျာသတလင် အလုပ်၏တိုသတက်မဟုကို စောင့်ကဌည့်ပဌီသ ခလဲခဌမ်သစိတ်ဖဌာပါ။
  • မော်ဒယ်မျာသ၏ အခဌေအနေကို ဗာသရဟင်သနဟင့် စီမံခန့်ခလဲရန် အဆင်ပဌေသည်။
  • ရလာတဲ့ မော်ဒယ်တလေကို အသုံသချဖို့ လလယ်ပါတယ်။

ကဥပမာသည် ကစာသစရာတစ်ခုဖဌစ်ပဌီသ ရလဒ်မျာသကို အကဲဖဌတ်ခဌင်သနဟင့် မော်ဒယ်မျာသ၏ မဟတ်ပုံတင်ခဌင်သ (အမဟတ် 5 နဟင့် 6 အသီသသီသ) အပါအဝင် သင့်ကိုယ်ပိုင်စနစ်တည်ဆောက်ခဌင်သအတလက် စမဟတ်တစ်ခုအဖဌစ် လုပ်ဆောင်နိုင်သည် သို့မဟုတ် သင်သည် ဒေတာအတလဲမျာသကို ဗာသရဟင်သထည့်သလင်သမည် သို့မဟုတ် အခဌာသအရာတစ်ခုခု ဖဌစ်နိုင်ပါသလာသ။ ငါကဌိုသစာသနေတဲ့အချက်က မင်သ MLOps တစ်ခုလုံသလိုတယ်၊ MLflow က အဆုံသသတ်တဲ့နည်သလမ်သတစ်ခုပဲ။

ငါမဖော်ပဌဘဲ မင်သကဌုံတလေ့ခဲ့ရတဲ့ ပဌဿနာတလေကို ရေသချပါ။
သင့်လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီစေရန် စနစ်တလင် သင်ဘာထည့်မည်နည်သ။
ပဌဿနာအာသလုံသ သို့မဟုတ် တစ်စိတ်တစ်ပိုင်သကို ဖဌေရဟင်သရန် မည်သည့်ကိရိယာနဟင့် ချဉ်သကပ်နည်သမျာသကို သင်အသုံသပဌုသနည်သ။

PS လင့်ခ်နဟစ်ခုချန်ထာသပေသပါ့မယ်။
github ပရောဂျက် - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
မေသခလန်သမျာသအတလက် ကျလန်ုပ်၏ အလုပ်အီသမေသလ်- [အီသမေသလ်ကိုကာကလယ်ထာသသည်]

ကျလန်ုပ်တို့၏ကုမ္ပဏီသည် အိုင်တီကျလမ်သကျင်သူမျာသအတလက် အမျိုသမျိုသသောပလဲမျာသကို အခါအာသလျော်စလာ လက်ခံကျင်သပပေသပါသည်။ ဥပမာ- ဇူလိုင် 8 ရက်နေ့ 19:00 မော်စကိုစံတော်ချိန်၌ CV Meetup ကို အလန်လိုင်သဖော်မတ်ဖဌင့် ပဌုလုပ်မည်ဖဌစ်သည်၊ စိတ်ပါဝင်စာသပါက စာရင်သပေသသလင်သနိုင်ပါသည်၊ ဒီမဟာ .

source: www.habr.com

မဟတ်ချက် Add