MLOps - කුක් පොත, 1 පරිච්ඡේදය

MLOps - කුක් පොත, 1 පරිච්ඡේදය

ආයුබෝවන් සියල්ලටම! මම CROC හි CV සංවර්ධකයෙක්මි. අපි දැනට වසර 3ක සිට CV ක්ෂේත්‍රයේ ව්‍යාපෘති ක්‍රියාත්මක කරනවා. මෙම කාලය තුළ, අපි බොහෝ දේ කළෙමු, උදාහරණයක් ලෙස: අපි රියදුරන් නිරීක්ෂණය කළෙමු, එවිට ඔවුන් රිය පැදවීමේදී ඔවුන් මත්පැන් පානය කළේ නැත, දුම් පානය කළේ නැත, දුරකථනයෙන් කතා කළේ නැත, පාර දෙස බැලුවා මිස සිහින හෝ වලාකුළු දෙස නොවේ. ; කැපවූ මංතීරුවල රිය පදවන සහ වාහන නැවැත්වීමේ ස්ථාන කිහිපයක් ගන්නා පුද්ගලයින් අපි පටිගත කළෙමු; කම්කරුවන් හිස්වැසුම්, අත්වැසුම් ආදිය පැළඳ සිටි බවට සහතික විය. පහසුකමට ඇතුළු වීමට කැමති සේවකයෙකු හඳුනාගෙන ඇත; අපි හැකි සෑම දෙයක්ම ගණන් කළා.

මම මේ සියල්ල කරන්නේ කුමක් සඳහාද?

ව්‍යාපෘති ක්‍රියාත්මක කිරීමේ ක්‍රියාවලියේදී, අපි ගැටිති, ගැටිති, ඔබට හුරුපුරුදු හෝ අනාගතයේදී හුරුපුරුදු වන සමහර ගැටළු වලට පහර දෙන්නෙමු.

අපි තත්වය අනුකරණය කරමු

ML හා සම්බන්ධ ක්‍රියාකාරකම් ඇති “N” තරුණ සමාගමක අපට රැකියාවක් ලැබුණි යැයි සිතමු. අපි ML (DL, CV) ව්‍යාපෘතියක වැඩ කරන්නෙමු, පසුව යම් හේතුවක් නිසා අපි වෙනත් රැකියාවකට මාරු වෙමු, සාමාන්‍යයෙන් විවේකයක් ගෙන, අපගේම හෝ වෙනත් කෙනෙකුගේ නියුරෝනය වෙත ආපසු යන්නෙමු.

  1. සත්‍යයේ මොහොත පැමිණේ, ඔබ කෙසේ හෝ මතක තබා ගත යුත්තේ ඔබ නැවැත්වූ ස්ථානය, ඔබ උත්සාහ කළ අධි පරාමිති සහ, වඩාත්ම වැදගත් දෙය නම්, ඒවා හේතු වූ ප්‍රතිපල මොනවාද යන්නයි. සියලුම දියත් කිරීම් පිළිබඳ තොරතුරු ගබඩා කළේ කවුරුන්ද යන්න සඳහා බොහෝ විකල්ප තිබිය හැකිය: හිසෙහි, වින්‍යාසය, නෝට්පෑඩ්, වලාකුළු තුළ වැඩ කරන පරිසරයක. සාමාන්‍යයෙන්, විචිත්‍රවත් ගුවන් ගමනක්, කේතයේ අදහස් කරන ලද රේඛා ලෙස අධිපරිමාණ ගබඩා කර ඇති විට විකල්පයක් මම දුටුවෙමි. දැන් සිතන්න, ඔබ ආපසු පැමිණියේ ඔබේ ව්‍යාපෘතියට නොව, සමාගම හැර ගිය පුද්ගලයෙකුගේ ව්‍යාපෘතියට බව සහ ඔබට model_1.pb නම් කේතයක් සහ ආකෘතියක් උරුම වූ බව. පින්තූරය සම්පූර්ණ කිරීමට සහ සියලු වේදනාවන් ප්රකාශ කිරීමට, ඔබ ද ආරම්භක විශේෂඥයෙකු යැයි සිතමු.
  2. ඉදිරියට යන්න. කේතය ක්‍රියාත්මක කිරීමට, අපි සහ එය සමඟ වැඩ කරන සෑම කෙනෙකුම පරිසරයක් නිර්මාණය කළ යුතුය. බොහෝ විට සිදු වන්නේ කිසියම් හේතුවක් නිසා ඔවුන් ඔහුව අපගේ උරුමය ලෙස හැර නොයෑමයි. මෙය සුළුපටු නොවන කාර්යයක් බවටද පත්විය හැක. ඔබට මෙම පියවරේදී කාලය නාස්ති කිරීමට අවශ්‍ය නැත, එහෙම නේද?
  3. අපි ආකෘතියක් පුහුණු කරන්නෙමු (උදාහරණයක් ලෙස, මෝටර් රථ අනාවරකයක්). එය ඉතා හොඳ බවට පත් වන ස්ථානයට අපි පැමිණෙමු - ප්රතිඵලය සුරැකීමට කාලයයි. අපි එය car_detection_v1.pb ලෙස හඳුන්වමු. ඊට පස්සේ අපි තව එකක් පුහුණු කරනවා - car_detection_v2.pb. ටික කලකට පසු, අපගේ සගයන් හෝ අප විසින්ම විවිධ ගෘහනිර්මාණ භාවිතා කරමින් වැඩි වැඩියෙන් උගන්වන්නෙමු. එහි ප්‍රතිඵලයක් වශයෙන්, කෞතුක වස්තු පොකුරක් සෑදී ඇති අතර, ඒවා පිළිබඳ තොරතුරු වෙහෙස මහන්සි වී එකතු කළ යුතුය (නමුත් අපි මෙය පසුව කරන්නෙමු, මන්ද දැනට අපට වැඩි ප්‍රමුඛතා කාරණා ඇත).
  4. හරි දැන් ඔක්කොම ඉවරයි! අපට ආදර්ශයක් තිබේ! අපට ඊළඟ මාදිලිය පුහුණු කිරීම ආරම්භ කළ හැකිද, නව ගැටළුවක් විසඳීම සඳහා ගෘහ නිර්මාණ ශිල්පයක් සංවර්ධනය කිරීම හෝ අපට තේ ටිකක් පානය කළ හැකිද? සහ කවුද යොදවන්නේ?

ගැටළු හඳුනා ගැනීම

ව්යාපෘතියක් හෝ නිෂ්පාදනයක් මත වැඩ කිරීම බොහෝ මිනිසුන්ගේ කාර්යයකි. ඒ වගේම කාලයත් සමඟම, මිනිසුන් පිටත් වී පැමිණේ, තවත් ව්යාපෘති තිබේ, සහ ව්යාපෘති වඩාත් සංකීර්ණ වේ. එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින්, ඉහත විස්තර කර ඇති චක්‍රයේ (සහ පමණක් නොව) ඇතැම් සංයෝජනයන්හි තත්වයන් පුනරාවර්තනයේ සිට පුනරාවර්තනය දක්වා සිදුවනු ඇත. මේ සියල්ලේ ප්‍රතිඵලය වන්නේ කාලය නාස්ති වීම, ව්‍යාකූලත්වය, ස්නායු, සමහරවිට පාරිභෝගික අතෘප්තිය සහ අවසානයේ මුදල් අහිමි වීමයි. අපි හැමෝම සාමාන්‍යයෙන් එකම පරණ පෝරකය අනුගමනය කළත්, මේ අවස්ථා නැවත නැවතත් ලබා ගැනීමට කිසිවෙකුට අවශ්‍ය නොවන බව මම විශ්වාස කරමි.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

ඉතින්, අපි එක සංවර්ධන චක්‍රයක් හරහා ගොස් ඇති අතර විසඳිය යුතු ගැටලු ඇති බව අපට පෙනේ. මෙය සිදු කිරීම සඳහා ඔබට අවශ්ය:

  • වැඩ ප්රතිඵල පහසුවෙන් ගබඩා කිරීම;
  • නව සේවකයින් සම්බන්ධ කර ගැනීමේ ක්රියාවලිය සරල කරන්න;
  • සංවර්ධන පරිසරයක් යෙදවීමේ ක්රියාවලිය සරල කිරීම;
  • ආදර්ශ අනුවාද ක්රියාවලිය වින්යාස කරන්න;
  • ආකෘති වලංගු කිරීමට පහසු ක්රමයක් තිබේ;
  • ආදර්ශ රාජ්ය කළමනාකරණ මෙවලමක් සොයා;
  • නිෂ්පාදනයට ආකෘති ලබා දීමට ක්රමයක් සොයා ගන්න.

පෙනෙන විදිහට ඔබට මෙම ජීවන චක්‍රය පහසුවෙන් සහ පහසුවෙන් කළමනාකරණය කිරීමට ඉඩ සලසන කාර්ය ප්‍රවාහයක් ඉදිරිපත් කිරීම අවශ්‍යද? මෙම පුරුද්ද MLOps ලෙස හැඳින්වේ

MLOps, හෝ යන්ත්‍ර ඉගෙනීම සඳහා DevOps, දත්ත විද්‍යාව සහ තොරතුරු තාක්ෂණ කණ්ඩායම්වලට යන්ත්‍ර ඉගෙනුම් ආකෘති අධීක්ෂණය, වලංගුකරණය සහ පාලනය තුළින් ආකෘති සංවර්ධනයේ සහ යෙදවීමේ වේගය සහයෝගීව කටයුතු කිරීමට සහ වැඩි කිරීමට ඉඩ සලසයි.

ඔයාට පුළුවන් කියවන්නමේ ඔක්කොම ගැන Google කට්ටිය මොකද හිතන්නේ? MLOps යනු ඉතා විශාල දෙයක් බව ලිපියෙන් පැහැදිලි වේ.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

තවදුරටත් මගේ ලිපියෙන් මම විස්තර කරන්නේ ක්‍රියාවලියේ කොටසක් පමණි. ක්‍රියාත්මක කිරීම සඳහා, මම MLflow මෙවලම භාවිතා කරමි, මන්ද... මෙය විවෘත මූලාශ්‍ර ව්‍යාපෘතියකි, සම්බන්ධ වීමට කුඩා කේත ප්‍රමාණයක් අවශ්‍ය වන අතර ජනප්‍රිය ml රාමු සමඟ ඒකාබද්ධ කිරීමක් ඇත. ඔබට Kubeflow, SageMaker, Trains වැනි වෙනත් මෙවලම් සඳහා අන්තර්ජාලය සෙවිය හැකි අතර, සමහරවිට ඔබේ අවශ්‍යතාවලට වඩාත් ගැලපෙන එකක් සොයා ගත හැක.

MLFlow මෙවලම භාවිතා කිරීමේ උදාහරණය භාවිතා කරමින් MLOps "ගොඩනැගීම"

MLFlow යනු ml මාදිලිවල ජීවන චක්‍ර කළමනාකරණය සඳහා විවෘත මූලාශ්‍ර වේදිකාවකි (https://mlflow.org/).

MLflow සංරචක හතරක් ඇතුළත් වේ:

  • MLflow ලුහුබැඳීම - මෙම ප්රතිඵලය සඳහා හේතු වූ ප්රතිඵල සහ පරාමිතීන් වාර්තා කිරීමේ ගැටළු ආවරණය කරයි;
  • MLflow ව්‍යාපෘතිය - ඔබට කේතය ඇසුරුම් කිරීමට සහ ඕනෑම වේදිකාවක එය ප්‍රතිනිෂ්පාදනය කිරීමට ඉඩ සලසයි;
  • MLflow ආකෘති - නිෂ්පාදනය සඳහා ආකෘති යෙදවීම සඳහා වගකිව යුතු ය;
  • MLflow රෙජිස්ට්රි - ඔබට ආකෘති ගබඩා කිරීමට සහ මධ්යගත ගබඩාවක ඔවුන්ගේ තත්වය කළමනාකරණය කිරීමට ඉඩ සලසයි.

MLflow ආයතන දෙකක් මත ක්‍රියා කරයි:

  • දියත් කිරීම යනු අපට ලියාපදිංචි වීමට අවශ්‍ය පුහුණුව, පරාමිතීන් සහ ප්‍රමිතිකවල සම්පූර්ණ චක්‍රයකි;
  • අත්හදා බැලීමක් යනු එකට දිවෙන "මාතෘකාවක්" වේ.

උදාහරණයේ සියලුම පියවර Ubuntu 18.04 මෙහෙයුම් පද්ධතිය මත ක්රියාත්මක වේ.

1. සේවාදායකය යොදවන්න

අපට අපගේ ව්‍යාපෘතිය පහසුවෙන් කළමනාකරණය කිරීමට සහ අවශ්‍ය සියලු තොරතුරු ලබා ගැනීමට, අපි සේවාදායකයක් යොදවන්නෙමු. MLflow ලුහුබැඳීමේ සේවාදායකයට ප්‍රධාන සංරචක දෙකක් ඇත:

  • පසුපෙළ ගබඩාව - ලියාපදිංචි ආකෘති පිළිබඳ තොරතුරු ගබඩා කිරීම සඳහා වගකිව යුතුය (DBMS 4 සඳහා සහය දක්වයි: mysql, mssql, sqlite, සහ postgresql);
  • කෞතුක භාණ්ඩ ගබඩාව - කෞතුක වස්තු ගබඩා කිරීම සඳහා වගකිව යුතු ය (ගබඩා විකල්ප 7 ක් සඳහා සහය දක්වයි: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP server, SFTP Server, NFS, HDFS).

A කෞතුක භාණ්ඩ ගබඩාව සරල බව සඳහා, අපි sftp සේවාදායකයක් ගනිමු.

  • කණ්ඩායමක් නිර්මාණය කරන්න
    $ sudo groupadd sftpg
  • පරිශීලකයෙකු එකතු කර ඔහුට මුරපදයක් සකසන්න
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • ප්රවේශ සැකසුම් කිහිපයක් සකස් කිරීම
    $ 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

A පසුපෙළ ගබඩාව අපි 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 පැකේජ ස්ථාපනය කළ යුතුය (වෙනම අථත්‍ය පරිසරයක් සෑදීමට මම නිර්දේශ කරමි):

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. ලුහුබැඳීම එක් කරන්න

අපගේ පුහුණුවේ ප්‍රතිඵල නැති නොවීමටත්, අනාගත සංවර්ධකයින්ගේ පරම්පරාවට සිදුවන්නේ කුමක්ද යන්න තේරුම් ගැනීමටත්, වැඩිහිටි සහෝදරවරුන්ට සහ ඔබට ඉගෙනීමේ ක්‍රියාවලිය සන්සුන්ව විශ්ලේෂණය කිරීමට හැකි වීමටත්, අපි ලුහුබැඳීම එකතු කළ යුතුය. ලුහුබැඳීම යනු පරාමිති, ප්‍රමිතික, පුරාවස්තු සහ පුහුණුව ආරම්භය පිළිබඳ අමතර තොරතුරු, අපගේ නඩුවේදී, සේවාදායකයේ සුරැකීමයි.

උදාහරණයක් ලෙස, මම කුඩා එකක් නිර්මාණය කළෙමි github හි ව්‍යාපෘතිය කේරාස් හි ඇති සියල්ල කොටස් කිරීම සඳහා 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 ක්‍රම වලට උඩින් කුඩා එතුමකි. MlflowClient (මම එය පහසුව සඳහා සෑදුවෙමි), එහි ආධාරයෙන් මම අත්හදා බැලීමක් නිර්මාණය කර එය සේවාදායකයේ ධාවනය කරමි. මීළඟට, දියත් කිරීමේ ප්‍රතිඵල ඒකාබද්ධ කළ යුත්තේ කොතැනදැයි මම සඳහන් කරමි (mlflow.set_tracking_uri(self.tracking_uri)). මම ස්වයංක්‍රීය ලොග් වීම mlflow.keras.autolog() සබල කරමි. දැනට MLflow Tracking TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark සඳහා ස්වයංක්‍රීයව ලොග් වීම සඳහා සහය දක්වයි. ඔබ ඔබේ රාමුව හෝ පුස්තකාලය සොයාගෙන නොමැති නම්, ඔබට සැමවිටම පැහැදිලිව ලොග් විය හැක. අපි පුහුණුවීම් ආරම්භ කරනවා. දුරස්ථ සේවාදායකයේ ටැග් සහ ආදාන පරාමිතීන් ලියාපදිංචි කරන්න.

පේළි කිහිපයක් සහ ඔබට, අන් සියල්ලන්ට මෙන්, සියලු දියත් කිරීම් පිළිබඳ තොරතුරු වෙත ප්‍රවේශය ඇත. සිසිල්ද?

3. අපි ව්යාපෘතිය සකස් කරමු

දැන් අපි ව්‍යාපෘතිය දියත් කිරීම පහසු කරමු. මෙය සිදු කිරීම සඳහා, MLproject සහ conda.yaml ගොනුව ව්‍යාපෘති මූලයට එක් කරන්න.
ML ව්යාපෘතිය

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

ඔබට ඔබගේ ධාවන කාල පරිසරය ලෙස ඩොකර් භාවිතා කළ හැක, වැඩි විස්තර සඳහා කරුණාකර බලන්න ලියකියවිලි.

4. අපි පුහුණුව ආරම්භ කරමු

අපි ව්‍යාපෘතිය ක්ලෝන කර ව්‍යාපෘති නාමාවලිය වෙත යන්නෙමු:

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

ධාවනය කිරීමට ඔබ පුස්තකාල ස්ථාපනය කළ යුතුය

pip install mlflow
pip install pysftp

නිසා මම conda_env භාවිතා කරන උදාහරණයේදී, Anaconda ඔබේ පරිගණකයේ ස්ථාපනය කළ යුතුය (නමුත් අවශ්‍ය සියලුම පැකේජ ඔබම ස්ථාපනය කර දියත් කිරීමේ පරාමිතීන් සමඟ ක්‍රීඩා කිරීමෙන් ඔබට මෙය මඟ හැරිය හැක).

සියලුම සූදානම් කිරීමේ පියවර සම්පූර්ණ කර ඇති අතර අපට පුහුණුව දියත් කිරීමට පටන් ගත හැකිය. ව්‍යාපෘති මූලයෙන්:

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

විධානය ඇතුළත් කිරීමෙන් පසු ස්වයංක්‍රීයව කොන්ඩා පරිසරයක් නිර්මාණය වී පුහුණුව ආරම්භ වේ.
ඉහත උදාහරණයේ දී, මම පුහුණුව සඳහා යුග ගණන සම්මත කළෙමි, අපට කොටස් කිරීමට අවශ්‍ය කාණ්ඩ (ඔබට සම්පූර්ණ ලැයිස්තුව දැකිය හැකිය මෙහි) සහ අපගේ දුරස්ථ සේවාදායකයේ ලිපිනය.
MLproject ගොනුවේ ඇති හැකි පරාමිති සම්පූර්ණ ලැයිස්තුවක් සොයා ගත හැක.

5. ඉගෙනුම් ප්රතිඵල ඇගයීම

පුහුණුව අවසන් වූ පසු, අපට අපගේ සේවාදායකයේ ලිපිනයට බ්‍රව්සරයට යා හැකිය http://server_host:server_port

MLOps - කුක් පොත, 1 පරිච්ඡේදය

මෙහිදී අපි සියලු අත්හදා බැලීම් ලැයිස්තුවක් (ඉහළ වමේ), මෙන්ම ධාවන පිළිබඳ තොරතුරු (මැද) දකිමු. එක් එක් දියත් කිරීම සඳහා අපට වඩාත් සවිස්තරාත්මක තොරතුරු (පරාමිතීන්, ප්‍රමිතික, පුරාවස්තු සහ අමතර තොරතුරු) නැරඹිය හැක.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

එක් එක් මෙට්රික් සඳහා වෙනස්කම් ඉතිහාසය නිරීක්ෂණය කළ හැක

MLOps - කුක් පොත, 1 පරිච්ඡේදය

එම. මේ මොහොතේ, අපට "අත්පොත" ආකාරයෙන් ප්‍රතිඵල විශ්ලේෂණය කළ හැකි අතර, ඔබට MLflow API භාවිතයෙන් ස්වයංක්‍රීය වලංගුකරණයද සැකසිය හැක.

6. ආකෘතිය ලියාපදිංචි කරන්න

අපි අපගේ ආකෘතිය විශ්ලේෂණය කර එය සටනට සූදානම් බව තීරණය කළ පසු, අපි එය ලියාපදිංචි කිරීමට ඉදිරියට යන්නෙමු, මේ සඳහා අපි අපට අවශ්‍ය දියත් කිරීම තෝරා ගනිමු (පෙර ඡේදයේ පෙන්වා ඇති පරිදි) සහ පහළට යන්න.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

අපි අපේ මොඩල් එකට නමක් දුන්නට පස්සේ ඒකට වර්ශන් එකක් තියෙනවා. ඔබ එකම නම සහිත වෙනත් ආකෘතියක් සුරැකුවහොත්, අනුවාදය ස්වයංක්‍රීයව යාවත්කාලීන වේ.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

සෑම ආකෘතියක් සඳහාම, අපට විස්තරයක් එකතු කර ප්‍රාන්ත තුනෙන් එකක් තෝරා ගත හැකිය (වේදිකාගත කිරීම, නිෂ්පාදනය, සංරක්ෂිත); පසුව, API භාවිතයෙන්, අපට මෙම තත්වයන් වෙත ප්‍රවේශ විය හැකිය, එය අනුවාද සමඟ අමතර නම්‍යශීලී බවක් ලබා දෙයි.

MLOps - කුක් පොත, 1 පරිච්ඡේදය

සියලුම මාදිලි සඳහා අපට පහසු ප්‍රවේශයක් ද ඇත

MLOps - කුක් පොත, 1 පරිච්ඡේදය

සහ ඔවුන්ගේ අනුවාද

MLOps - කුක් පොත, 1 පරිච්ඡේදය

පෙර ඡේදයේ මෙන්, සියලුම මෙහෙයුම් 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) සංවර්ධකයින්ට පහසුවෙන් ආකෘතිය වැඩිදියුණු කිරීමට සහ නව අනුවාද ප්‍රකාශ කිරීමට හැකිය.

අවසාන වශයෙන්

මම ඉඩ දෙන පද්ධතියක් ඉදිරිපත් කළෙමි:

  • ML ආකෘති, පුහුණු ප්‍රගතිය සහ ප්‍රතිඵල පිළිබඳ තොරතුරු මධ්‍යගතව ගබඩා කිරීම;
  • ඉක්මනින් සංවර්ධන පරිසරයක් යෙදවීම;
  • ආකෘතිවල කාර්යයේ ප්රගතිය නිරීක්ෂණය කිරීම සහ විශ්ලේෂණය කිරීම;
  • මාදිලිවල තත්වය සංස්කරණය කිරීම සහ කළමනාකරණය කිරීම පහසුය;
  • එහි ප්රතිඵලයක් ලෙස ආකෘති යෙදවීම පහසුය.

මෙම උදාහරණය සෙල්ලම් බඩුවක් වන අතර ඔබේම පද්ධතියක් ගොඩනැගීමේ ආරම්භක ලක්ෂ්‍යයක් ලෙස ක්‍රියා කරයි, එයට ප්‍රතිඵල ඇගයීමේ ස්වයංක්‍රීයකරණය සහ ආකෘති ලියාපදිංචි කිරීම (පිළිවෙලින් ලකුණු 5 සහ 6) ඇතුළත් විය හැකිය, නැතහොත් ඔබ දත්ත කට්ටලවල අනුවාද එකතු කරනු ඇත, නැතහොත් වෙනත් දෙයක් විය හැකිද? මම කියන්නට උත්සාහ කළ කාරණය නම් ඔබට සමස්තයක් ලෙස MLOps අවශ්‍ය වේ, MLflow යනු අවසානයක් සඳහා මාධ්‍යයක් පමණි.

මා නොපෙන්වූ ඔබට මුහුණ දුන් ගැටළු මොනවාදැයි ලියන්න?
ඔබේ අවශ්‍යතා සපුරාලීම සඳහා ඔබ පද්ධතියට එකතු කරන්නේ කුමක්ද?
ගැටළු සියල්ල හෝ කොටසක් විසඳීමට ඔබ භාවිතා කරන මෙවලම් සහ ප්‍රවේශයන් මොනවාද?

PS මම සබැඳි කිහිපයක් තබන්නම්:
github ව්‍යාපෘතිය - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
ප්‍රශ්න සඳහා මගේ වැඩ ඊමේල් - [විද්‍යුත් ආරක්‍ෂිත]

අපගේ සමාගම වරින් වර තොරතුරු තාක්ෂණ විශේෂඥයින් සඳහා විවිධ සිදුවීම් පවත්වයි, උදාහරණයක් ලෙස: ජූලි 8 වන දින මොස්කව් වේලාවෙන් 19:00 ට මාර්ගගත ආකෘතියකින් CV හමුවීමක් සිදුවනු ඇත, ඔබ කැමති නම්, ඔබට සහභාගී විය හැකිය, ලියාපදිංචිය මෙහි .

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න