MLOps - ڪڪ ڪتاب، باب 1

MLOps - ڪڪ ڪتاب، باب 1

هيلو سڀ! مان CROC ۾ CV ڊولپر آهيان. اسان 3 سالن کان CV جي ميدان ۾ منصوبن تي عمل ڪري رهيا آهيون. ان دوران، اسان ڪيتريون ئي شيون ڪيون، مثال طور: اسان ڊرائيورن جي نگراني ڪئي ته جيئن ڊرائيونگ دوران اهي نه پيئندا، تماڪ نه پيون، فون تي نه ڳالهائي، روڊ ڏانهن نه ڏسن، ۽ نه خوابن يا بادلن تي. ؛ اسان انهن ماڻهن کي رڪارڊ ڪيو جيڪي وقف ٿيل لينن ۾ ڊرائيو ڪندا آهن ۽ ڪيترن ئي پارڪنگ جا هنڌ کڻندا آهن؛ انهي ڳالهه کي يقيني بڻايو وڃي ته مزدور هيلمٽ، دستانا، وغيره. هڪ ملازم کي سڃاڻي ٿو جيڪو سهولت ۾ داخل ٿيڻ چاهي ٿو؛ اسان سڀ ڪجهه ڳڻيندا هئاسين.

مان هي سڀ ڇا لاءِ ڪري رهيو آهيان؟

پروجيڪٽ تي عمل ڪرڻ جي عمل ۾، اسان کي ڌڪ لڳندا آهن، تمام گهڻو ڌڪ، ڪجهه مسئلا جيڪي توهان يا ته واقف آهيو يا مستقبل ۾ واقف ٿي ويندا.

اچو ته صورتحال کي نقل ڪريون

اچو ته تصور ڪريو ته اسان کي هڪ نوجوان ڪمپني “N” ۾ نوڪري ملي آهي، جنهن جون سرگرميون ML سان لاڳاپيل آهن. اسان هڪ ML (DL، CV) پروجيڪٽ تي ڪم ڪريون ٿا، پوءِ ڪنهن سبب جي ڪري اسان ٻئي نوڪري ڏانهن رخ ڪريون ٿا، عام طور تي هڪ وقفو وٺون ٿا، ۽ پنهنجي يا ڪنهن ٻئي جي نيورون ڏانهن واپس وڃون ٿا.

  1. سچائي جو لمحو اچي ٿو، توهان کي ڪنهن به طرح ياد رکڻ جي ضرورت آهي ته توهان ڪٿي روڪيو، توهان ڪهڙي هائپرپراميٽر جي ڪوشش ڪئي ۽، سڀ کان اهم، انهن جا نتيجا ڪهڙا آهن. اتي ڪيترائي اختيار ٿي سگھن ٿا جن سڀني لانچن تي معلومات محفوظ ڪئي: ھيڊ ۾، ترتيب، نوٽ پيڊ، ڪلائوڊ ۾ ڪم ڪندڙ ماحول ۾. مون کي هڪ اختيار ڏسڻ ۾ آيو جڏهن هائپرپراميٽرز کي ڪوڊ ۾ تبصري لائنن جي طور تي ذخيرو ڪيو ويو، عام طور تي، فينسي جي پرواز. ھاڻي تصور ڪريو ته توھان پنھنجي پروجيڪٽ ڏانھن واپس نه آيا آھيو، پر ھڪڙي شخص جي پروجيڪٽ ڏانھن جنھن ڪمپني ڇڏي آھي ۽ توھان کي وراثت ۾ ھڪڙو ڪوڊ ۽ ھڪڙو ماڊل مليو آھي جنھن کي model_1.pb سڏيو ويندو آھي. تصوير کي مڪمل ڪرڻ ۽ سڀني دردن کي پهچائڻ لاء، اچو ته تصور ڪريو ته توهان پڻ هڪ ابتدائي ماهر آهيو.
  2. اڳتي وڃو. ڪوڊ کي هلائڻ لاءِ، اسان ۽ هر ڪو جيڪو ان سان گڏ ڪم ڪندو، ماحول ٺاهڻ جي ضرورت آهي. اهو اڪثر ٿئي ٿو ته ڪنهن سبب جي ڪري هن کي اسان جي ميراث طور نه ڇڏيو آهي. اهو پڻ هڪ غير معمولي ڪم بڻجي سگهي ٿو. توهان هن قدم تي وقت ضايع ڪرڻ نٿا چاهيو، ڇا توهان؟
  3. اسان هڪ ماڊل ٽريننگ (مثال طور، هڪ ڪار detector). اسان ان نقطي تي پهتا آهيون جتي اهو تمام سٺو ٿي ويندو آهي - اهو نتيجو بچائڻ جو وقت آهي. اچو ته ان کي سڏين car_detection_v1.pb. ان کان پوء اسان هڪ ٻئي کي ٽرين ڪندا آهيون - car_detection_v2.pb. ڪجهه وقت کان پوء، اسان جا ساٿي يا اسان پاڻ کي وڌيڪ سيکاريندا آهيون، مختلف فن تعمير کي استعمال ڪندي. نتيجي طور، نمونن جو ھڪڙو گروپ ٺھيل آھي، جنھن بابت ڄاڻ ڏاڍي محنت سان گڏ ڪرڻ گھرجي (پر اسان اھو بعد ۾ ڪنداسين، ڇاڪاڻ⁠تہ ھاڻي اسان وٽ وڌيڪ ترجيحات آھن).
  4. ٺيڪ آهي هاڻي سڀ ختم ٿي ويو آهي! اسان وٽ ھڪڙو نمونو آھي! ڇا اسان ايندڙ ماڊل جي تربيت شروع ڪري سگھون ٿا، نئين مسئلي کي حل ڪرڻ لاءِ فن تعمير کي ترقي ڪري سگھون ٿا، يا ڇا اسان چانهه پيئڻ لاءِ وڃي سگھون ٿا؟ ۽ ڪير مقرر ڪندو؟

مسئلن جي نشاندهي ڪرڻ

هڪ منصوبي يا پيداوار تي ڪم ڪرڻ ڪيترن ئي ماڻهن جو ڪم آهي. ۽ وقت سان گڏ، ماڻهو ڇڏيندا آهن ۽ ايندا آهن، اتي وڌيڪ منصوبا آهن، ۽ منصوبا پاڻ کي وڌيڪ پيچيده ٿي ويندا آهن. هڪ طريقو يا ٻيو، مٿي بيان ڪيل چڪر مان حالتون (۽ نه رڳو) ڪجهه خاص مجموعن ۾ iteration کان iteration تائين ٿينديون. هي سڀ نتيجا ضايع ٿيڻ وقت، مونجهارو، اعصاب، ممڪن طور تي گراهڪ جي عدم اطمينان، ۽ آخرڪار، گم ٿيل پئسا. جيتوڻيڪ اسان سڀ عام طور تي ساڳئي پراڻي ريڪ جي پيروي ڪندا آهيون، مون کي يقين آهي ته ڪو به انهن لمحن کي ٻيهر بار بار ڪرڻ نه چاهيندو آهي.

MLOps - ڪڪ ڪتاب، باب 1

تنهن ڪري، اسان هڪ ترقي جي چڪر مان گذري چڪا آهيون ۽ اسان ڏسون ٿا ته اهڙا مسئلا آهن جن کي حل ڪرڻ جي ضرورت آهي. هن کي ڪرڻ لاء توهان کي ضرورت آهي:

  • آساني سان ڪم جا نتيجا ذخيرو؛
  • نون ملازمن کي شامل ڪرڻ جي عمل کي سادو بڻايو؛
  • ترقياتي ماحول کي ترتيب ڏيڻ جي عمل کي آسان بڻائي؛
  • ماڊل ورجننگ جي عمل کي ترتيب ڏيو؛
  • ماڊل جي تصديق ڪرڻ لاء هڪ آسان طريقو آهي؛
  • ھڪڙي نموني رياست جي انتظام جو اوزار ڳولھيو؛
  • پيداوار لاء ماڊل پهچائڻ جو هڪ طريقو ڳوليو.

ظاهري طور تي اهو ضروري آهي ته هڪ ڪم فلو سان گڏ اچي جيڪا توهان کي آساني سان ۽ آساني سان هن زندگي جي چڪر کي منظم ڪرڻ جي اجازت ڏئي ٿي؟ اهو مشق MLOps سڏيو ويندو آهي

MLOps، يا مشين لرننگ لاءِ DevOps، ڊيٽا سائنس ۽ آئي ٽي ٽيمن کي اجازت ڏئي ٿو ته تعاون ڪرڻ ۽ ماڊل ڊولپمينٽ جي رفتار کي وڌائڻ ۽ مشيني سکيا جي ماڊلز جي نگراني، تصديق، ۽ گورننس ذريعي.

توهان ڪري سگهو ٿا پڙهوگوگل وارن جو ڇا خيال آهي ان بابت؟ مضمون مان اهو واضح ٿئي ٿو ته MLOps هڪ وڏي شيء آهي.

MLOps - ڪڪ ڪتاب، باب 1

وڌيڪ منهنجي مضمون ۾ آئون صرف پروسيس جو حصو بيان ڪندس. عمل درآمد لاء، مان استعمال ڪندس MLflow اوزار، ڇاڪاڻ ته ... هي هڪ اوپن سورس پروجيڪٽ آهي، ڳنڍڻ لاءِ ٿورڙي مقدار جو ڪوڊ گهربل آهي ۽ مشهور ايم ايل فريم ورڪ سان انضمام آهي. توھان انٽرنيٽ تي ٻين اوزارن جي ڳولا ڪري سگھو ٿا، جھڙوڪ Kubeflow، SageMaker، Trains، وغيره، ۽ شايد ھڪڙو ڳولھيو جيڪو توھان جي ضرورتن کي بھتر ڪري.

"بلڊنگ" MLOps استعمال ڪندي مثال طور استعمال ڪندي MLFlow اوزار

MLFlow هڪ اوپن سورس پليٽ فارم آهي لائف سائيڪل مينيجمينٽ لاءِ ايم ايل ماڊلز (https://mlflow.org/).

MLflow ۾ چار حصا شامل آھن:

  • MLflow ٽريڪنگ - رڪارڊنگ جا نتيجا ۽ پيرا ميٽرز جي مسئلن کي پکڙيل آهي جيڪي هن نتيجي ڏانهن ويا آهن؛
  • MLflow پروجيڪٽ - توهان کي ڪوڊ پيڪيج ڪرڻ جي اجازت ڏئي ٿو ۽ ان کي ڪنهن به پليٽ فارم تي ٻيهر پيدا ڪرڻ؛
  • MLflow ماڊلز - پيداوار لاءِ ماڊلز کي ترتيب ڏيڻ جا ذميوار؛
  • MLflow رجسٽري - توهان کي ماڊلز کي ذخيرو ڪرڻ ۽ انهن جي رياست کي مرڪزي مخزن ۾ منظم ڪرڻ جي اجازت ڏئي ٿي.

MLflow ٻن ادارن تي هلندي آهي:

  • لانچ ٽريننگ، پيرا ميٽرز ۽ ميٽرڪس جو هڪ مڪمل چڪر آهي جنهن جي ذريعي اسان رجسٽر ڪرڻ چاهيون ٿا؛
  • ھڪڙو تجربو ھڪڙو "موضوع" آھي جيڪو گڏجي ھلندو آھي.

مثال جا سڀئي مرحلا Ubuntu 18.04 آپريٽنگ سسٽم تي لاڳو ڪيا ويا آهن.

1. سرور کي ترتيب ڏيو

اسان جي پروجيڪٽ کي آساني سان منظم ڪرڻ ۽ تمام ضروري معلومات حاصل ڪرڻ لاء، اسان هڪ سرور کي ترتيب ڏينداسين. MLflow ٽريڪنگ سرور جا ٻه مکيه حصا آهن:

  • backend اسٽور - رجسٽرڊ ماڊلز جي باري ۾ معلومات محفوظ ڪرڻ جو ذميوار (4 DBMSs: mysql, mssql, sqlite, and postgresql)؛
  • آرٽيڪل اسٽور - آرٽيڪل اسٽور ڪرڻ جو ذميوار (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 
  • ڪجھ رسائي سيٽنگون ترتيب ڏيڻ
    $ 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

هڪ جيئن پس منظر اسٽور اچو ته وٺو 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

سرور کي شروع ڪرڻ لاءِ، توھان کي ھيٺين پيٿون پيڪيجز کي انسٽال ڪرڻ جي ضرورت آھي (آءٌ ھڪ الڳ ورچوئل ماحول ٺاھڻ جي صلاح ڏيان ٿو):

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 ٽريڪنگ TensorFlow، Keras، Gluon XGBoost، LightGBM، Spark لاءِ خودڪار لاگنگ کي سپورٽ ڪري ٿي. جيڪڏهن توهان کي پنهنجو فريم ورڪ يا لائبريري نه ملي آهي، ته توهان هميشه واضح طور تي لاگ ان ڪري سگهو ٿا. اسان تربيت شروع ڪري رهيا آهيون. ريموٽ سرور تي ٽيگ ۽ ان پٽ پيٽرول رجسٽر ڪريو.

ڪجھ لائينون ۽ توھان، ٻين وانگر، سڀني لانچن بابت معلومات تائين رسائي حاصل ڪريو. عمده؟

3. اسان پروجيڪٽ ٺاھيو

هاڻي اچو ته منصوبي کي شروع ڪرڻ آسان بڻائي. هن کي ڪرڻ لاء، شامل ڪريو MLproject ۽ conda.yaml فائل پروجيڪٽ جي روٽ ۾.
ايم ايل پروجيڪٽ

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. ماڊل کي ترتيب ڏيو

هن مرحلي تي، اسان وٽ اڳ ۾ ئي هڪ تربيت يافته (ڪيرا) ماڊل آهي. هڪ مثال توهان ڪيئن استعمال ڪري سگهو ٿا:

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) ڊولپرز آساني سان ماڊل کي بهتر ڪري سگھن ٿا ۽ نوان ورزن شايع ڪري سگھن ٿا.

نتيجو

مون هڪ سسٽم پيش ڪيو جيڪو اجازت ڏئي ٿو:

  • مرڪزي طور تي ايم ايل ماڊلز، تربيتي پيش رفت ۽ نتيجن بابت معلومات کي ذخيرو ڪرڻ؛
  • جلدي ترقي جي ماحول کي ترتيب ڏيو؛
  • مانيٽر ۽ ماڊل تي ڪم جي ترقي جو تجزيو؛
  • اهو نسخو ڪرڻ آسان آهي ۽ ماڊل جي حالت کي منظم ڪرڻ؛
  • اهو نتيجو ماڊل کي ترتيب ڏيڻ آسان آهي.

هي مثال هڪ رانديڪو آهي ۽ توهان جي پنهنجي سسٽم جي تعمير لاء هڪ شروعاتي نقطي جي طور تي ڪم ڪري ٿو، جنهن ۾ شامل ٿي سگھي ٿو آٽوميشن جي نتيجن جي تشخيص ۽ ماڊل جي رجسٽريشن (پوائنٽ 5 ۽ 6، ترتيب سان) يا توهان ڊيٽا سيٽن جي ورزننگ شامل ڪندا، يا شايد ڪجهه ٻيو؟ اهو نقطو جيڪو مان ٺاهڻ جي ڪوشش ڪري رهيو هو اهو آهي ته توهان کي مجموعي طور تي MLOps جي ضرورت آهي، MLflow صرف هڪ وسيلو آهي ختم ٿيڻ جو.

لکو ته توهان کي ڪهڙيون مشڪلاتون پيش آيون جيڪي مون ظاهر نه ڪيون؟
توهان سسٽم ۾ ڇا شامل ڪندا ته اهو توهان جي ضرورتن کي پورو ڪرڻ لاء؟
مسئلن جي سڀني يا حصي کي حل ڪرڻ لاءِ توهان ڪهڙن اوزار ۽ طريقا استعمال ڪندا آهيو؟

پي ايس مان ڪجهه لنڪ ڇڏيندس:
github پروجيڪٽ - https://github.com/simbakot/mlflow_example
ايم فلو- https://mlflow.org/
سوالن لاءِ منهنجو ڪم اي ميل - [ايميل محفوظ ٿيل]

اسان جي ڪمپني وقتي طور تي آئي ٽي ماهرن لاءِ مختلف واقعن جي ميزباني ڪندي آهي، مثال طور: 8 جولاءِ تي 19:00 ماسڪو وقت تي هڪ آن لائن فارميٽ ۾ هڪ CV ملاقات ٿيندي، جيڪڏهن توهان دلچسپي رکو ٿا، توهان حصو وٺي سگهو ٿا، رجسٽريشن هتي .

جو ذريعو: www.habr.com

تبصرو شامل ڪريو