MLOps - کک بک، باب 1

MLOps - کک بک، باب 1

سب کو سلام! میں CROC میں CV ڈویلپر ہوں۔ ہم 3 سالوں سے CV کے میدان میں پروجیکٹس پر عمل درآمد کر رہے ہیں۔ اس دوران، ہم نے بہت ساری چیزیں کیں، مثال کے طور پر: ہم نے ڈرائیوروں کی نگرانی کی تاکہ ڈرائیونگ کے دوران وہ شراب نہ پییں، سگریٹ نہیں پیتے، فون پر بات نہیں کرتے، سڑک کی طرف دیکھتے ہیں، اور خوابوں یا بادلوں کو نہیں دیکھتے۔ ; ہم نے ایسے لوگوں کو ریکارڈ کیا جو مخصوص لین میں گاڑی چلاتے ہیں اور پارکنگ کی کئی جگہیں لیتے ہیں۔ اس بات کو یقینی بنایا کہ کارکنوں نے ہیلمٹ، دستانے وغیرہ پہنے۔ ایک ملازم کی شناخت کی جو سہولت میں داخل ہونا چاہتا ہے؛ ہم نے سب کچھ گن لیا جو ہم کر سکتے تھے۔

میں یہ سب کس لیے کر رہا ہوں؟

پراجیکٹس کو لاگو کرنے کے عمل میں، ہمیں ٹکرانے پڑتے ہیں، بہت سارے ٹکراؤ، کچھ مسائل جن سے آپ یا تو واقف ہیں یا مستقبل میں ان سے واقف ہو جائیں گے۔

آئیے صورتحال کی نقل کرتے ہیں۔

آئیے تصور کریں کہ ہمیں ایک نوجوان کمپنی "N" میں ملازمت ملی ہے، جس کی سرگرمیاں ML سے متعلق ہیں۔ ہم ایک ML (DL, CV) پراجیکٹ پر کام کرتے ہیں، پھر کسی وجہ سے ہم کسی دوسرے کام پر چلے جاتے ہیں، عام طور پر ایک وقفہ لیتے ہیں، اور اپنے یا کسی اور کے نیوران پر واپس آتے ہیں۔

  1. سچائی کا لمحہ آتا ہے، آپ کو کسی نہ کسی طرح یاد رکھنے کی ضرورت ہے کہ آپ کہاں رکے ہیں، آپ نے کون سے ہائپرپیرامیٹر آزمائے ہیں اور سب سے اہم بات یہ ہے کہ ان کے نتیجے میں کیا نتیجہ نکلا ہے۔ تمام لانچوں پر معلومات کو کس نے ذخیرہ کیا اس کے لیے بہت سے اختیارات ہوسکتے ہیں: ہیڈ میں، کنفیگرز، نوٹ پیڈ، کلاؤڈ میں کام کرنے والے ماحول میں۔ مجھے ایک آپشن نظر آیا جب ہائپر پیرامیٹر کو کوڈ میں تبصرہ کردہ لائنوں کے طور پر ذخیرہ کیا گیا تھا، عام طور پر، فینسی کی پرواز۔ اب تصور کریں کہ آپ اپنے پروجیکٹ پر نہیں بلکہ ایک ایسے شخص کے پروجیکٹ کی طرف لوٹے ہیں جس نے کمپنی چھوڑ دی اور آپ کو ایک کوڈ اور ماڈل وراثت میں ملا جسے model_1.pb کہتے ہیں۔ تصویر کو مکمل کرنے اور تمام درد کو پہنچانے کے لیے، آئیے تصور کریں کہ آپ بھی ایک ابتدائی ماہر ہیں۔
  2. آگے بڑھو. کوڈ کو چلانے کے لیے، ہمیں اور ہر وہ شخص جو اس کے ساتھ کام کرے گا ایک ماحول بنانے کی ضرورت ہے۔ اکثر ایسا ہوتا ہے کہ کسی وجہ سے انہوں نے اسے ہماری میراث کے طور پر نہیں چھوڑا۔ یہ ایک غیر معمولی کام بھی بن سکتا ہے۔ آپ اس قدم پر وقت ضائع نہیں کرنا چاہتے، کیا آپ؟
  3. ہم ایک ماڈل کو تربیت دیتے ہیں (مثال کے طور پر، کار کا پتہ لگانے والا)۔ ہم اس مقام پر پہنچ جاتے ہیں جہاں یہ بہت اچھا ہو جاتا ہے – یہ نتیجہ بچانے کا وقت ہے۔ آئیے اسے car_detection_v1.pb کہتے ہیں۔ پھر ہم ایک اور کو تربیت دیتے ہیں - car_detection_v2.pb۔ کچھ عرصے بعد، ہمارے ساتھی یا ہم خود مختلف فن تعمیرات کا استعمال کرتے ہوئے زیادہ سے زیادہ سکھاتے ہیں۔ نتیجے کے طور پر، نمونے کا ایک گروپ تشکیل دیا جاتا ہے، جس کے بارے میں معلومات کو بڑی محنت سے جمع کرنا ضروری ہے (لیکن ہم یہ بعد میں کریں گے، کیونکہ ابھی ہمارے پاس زیادہ ترجیحی معاملات ہیں)۔
  4. ٹھیک ہے اب سب ختم ہو گیا ہے! ہمارے پاس ایک ماڈل ہے! کیا ہم اگلے ماڈل کی تربیت شروع کر سکتے ہیں، کسی نئے مسئلے کو حل کرنے کے لیے ایک فن تعمیر تیار کر سکتے ہیں، یا کیا ہم چائے پینے جا سکتے ہیں؟ اور کون تعینات کرے گا؟

مسائل کی نشاندہی کرنا

کسی پروجیکٹ یا پروڈکٹ پر کام کرنا بہت سے لوگوں کا کام ہے۔ اور وقت گزرنے کے ساتھ، لوگ چلے جاتے ہیں اور آتے ہیں، مزید منصوبے ہوتے ہیں، اور منصوبے خود مزید پیچیدہ ہو جاتے ہیں۔ کسی نہ کسی طرح، اوپر بیان کردہ سائیکل سے حالات (اور نہ صرف) بعض امتزاج میں تکرار سے تکرار تک واقع ہوں گے۔ اس سب کے نتیجے میں وقت ضائع ہوتا ہے، الجھنیں، اعصاب، ممکنہ طور پر گاہک کی عدم اطمینان، اور بالآخر، پیسہ ضائع ہوتا ہے۔ اگرچہ ہم سب عام طور پر اسی پرانے ریک کی پیروی کرتے ہیں، مجھے یقین ہے کہ کوئی بھی ان لمحات کو بار بار زندہ نہیں کرنا چاہتا۔

MLOps - کک بک، باب 1

لہذا، ہم ترقی کے ایک دور سے گزرے ہیں اور ہم دیکھتے ہیں کہ ایسے مسائل ہیں جنہیں حل کرنے کی ضرورت ہے۔ ایسا کرنے کے لیے آپ کو ضرورت ہے:

  • کام کے نتائج کو آسانی سے ذخیرہ کریں؛
  • نئے ملازمین کو شامل کرنے کے عمل کو آسان بنائیں؛
  • ترقیاتی ماحول کی تعیناتی کے عمل کو آسان بنانا؛
  • ماڈل ورژن بنانے کے عمل کو ترتیب دیں؛
  • ماڈلز کی توثیق کرنے کا ایک آسان طریقہ ہے؛
  • ایک ماڈل اسٹیٹ مینجمنٹ ٹول تلاش کریں۔
  • ماڈلز کو پروڈکشن تک پہنچانے کا طریقہ تلاش کریں۔

بظاہر ایک ورک فلو کے ساتھ آنا ضروری ہے جو آپ کو اس لائف سائیکل کو آسانی سے اور آسانی سے منظم کرنے کی اجازت دے؟ اس مشق کو MLOps کہتے ہیں۔

مشین لرننگ کے لیے MLOps، یا DevOps، ڈیٹا سائنس اور IT ٹیموں کو مشین لرننگ ماڈلز کی نگرانی، توثیق، اور گورننس کے ذریعے ماڈل کی ترقی اور تعیناتی کی رفتار کو بڑھانے اور تعاون کرنے کی اجازت دیتا ہے۔

تم کر سکتے ہو پڑھنے کے لئےگوگل والے اس سب کے بارے میں کیا سوچتے ہیں؟ مضمون سے یہ واضح ہے کہ MLOps ایک بہت بڑی چیز ہے۔

MLOps - کک بک، باب 1

مزید میں اپنے مضمون میں اس عمل کا صرف ایک حصہ بیان کروں گا۔ نفاذ کے لیے، میں MLflow ٹول استعمال کروں گا، کیونکہ... یہ ایک اوپن سورس پروجیکٹ ہے، جوڑنے کے لیے تھوڑی مقدار میں کوڈ درکار ہے اور مقبول ایم ایل فریم ورک کے ساتھ انضمام ہے۔ آپ انٹرنیٹ پر دوسرے ٹولز، جیسے کیوب فلو، سیج میکر، ٹرینز، وغیرہ کے لیے تلاش کر سکتے ہیں، اور شاید آپ کی ضروریات کے مطابق کوئی ایک تلاش کر سکتے ہیں۔

ایم ایل فلو ٹول استعمال کرنے کی مثال استعمال کرتے ہوئے ایم ایل او پی کی "بلڈنگ"

ایم ایل فلو ایم ایل ماڈلز کے لائف سائیکل مینجمنٹ کے لیے ایک اوپن سورس پلیٹ فارم ہے (https://mlflow.org/).

MLflow میں چار اجزاء شامل ہیں:

  • MLflow ٹریکنگ - ریکارڈنگ کے نتائج اور پیرامیٹرز کے مسائل کا احاطہ کرتا ہے جس کی وجہ سے یہ نتیجہ نکلا۔
  • ایم ایل فلو پروجیکٹ - آپ کو کوڈ پیک کرنے اور اسے کسی بھی پلیٹ فارم پر دوبارہ پیش کرنے کی اجازت دیتا ہے۔
  • ایم ایل فلو ماڈلز - پروڈکشن میں ماڈلز کی تعیناتی کے لیے ذمہ دار؛
  • MLflow Registry - آپ کو ماڈلز کو اسٹور کرنے اور ان کی حالت کو مرکزی ذخیرے میں منظم کرنے کی اجازت دیتا ہے۔

MLflow دو اداروں پر کام کرتا ہے:

  • لانچ ٹریننگ، پیرامیٹرز اور میٹرکس کا ایک مکمل چکر ہے جس کے ذریعے ہم رجسٹر کرنا چاہتے ہیں۔
  • ایک تجربہ ایک "موضوع" ہے جو ایک ساتھ چلتا ہے۔

مثال کے تمام مراحل Ubuntu 18.04 آپریٹنگ سسٹم پر لاگو ہوتے ہیں۔

1. سرور تعینات کریں۔

ہم اپنے پروجیکٹ کو آسانی سے منظم کرنے اور تمام ضروری معلومات حاصل کرنے کے لیے، ہم ایک سرور تعینات کریں گے۔ ایم ایل فلو ٹریکنگ سرور کے دو اہم اجزاء ہیں:

  • بیک اینڈ اسٹور - رجسٹرڈ ماڈلز کے بارے میں معلومات ذخیرہ کرنے کا ذمہ دار (4 DBMSs کی حمایت کرتا ہے: mysql, mssql, sqlite, اور postgresql)؛
  • آرٹفیکٹ اسٹور - نمونے کو ذخیرہ کرنے کے لیے ذمہ دار (7 اسٹوریج کے اختیارات کو سپورٹ کرتا ہے: Amazon S3، Azure Blob Storage، Google Cloud Storage، FTP سرور، SFTP سرور، NFS، HDFS)۔

جیسا کہ آرٹفیکٹ کی دکان سادگی کے لیے، آئیے ایک ایس ایف ٹی پی سرور لیں۔

  • ایک گروپ بنائیں
    $ 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

سرور کو شروع کرنے کے لیے، آپ کو مندرجہ ذیل 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. ٹریکنگ شامل کریں۔

تاکہ ہماری تربیت کے نتائج ضائع نہ ہوں، ڈویلپرز کی آنے والی نسلیں یہ سمجھ سکیں کہ کیا ہو رہا ہے، اور بوڑھے ساتھیوں اور آپ کے سیکھنے کے عمل کا سکون سے تجزیہ کرنے کے قابل ہونے کے لیے، ہمیں ٹریکنگ شامل کرنے کی ضرورت ہے۔ ٹریکنگ کا مطلب ہے پیرامیٹرز، میٹرکس، نمونے اور تربیت کے آغاز کے بارے میں کوئی اضافی معلومات، ہمارے معاملے میں، سرور پر محفوظ کرنا۔

مثال کے طور پر، میں نے ایک چھوٹا سا بنایا گیتوب پر پروجیکٹ ہر چیز کو الگ کرنے کے لیے کیراس پر 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 اشارہ کرتا ہے کہ ایناکونڈا کو چلانے کے لیے استعمال کیا جاتا ہے اور انحصار کی تفصیل 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 استعمال کرتا ہوں، ایناکونڈا آپ کے کمپیوٹر پر انسٹال ہونا چاہیے (لیکن آپ تمام ضروری پیکجز خود انسٹال کرکے اور لانچ کے پیرامیٹرز کے ساتھ کھیل کر اس کو حاصل کرسکتے ہیں)۔

تمام تیاری کے مراحل مکمل ہو چکے ہیں اور ہم تربیت شروع کرنا شروع کر سکتے ہیں۔ پروجیکٹ کی جڑ سے:

$ 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 - کک بک، باب 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 صرف اختتام کا ایک ذریعہ ہے۔

لکھیں کہ آپ کو کون سے مسائل کا سامنا کرنا پڑا جو میں نے ظاہر نہیں کیا؟
آپ سسٹم کو اپنی ضروریات کو پورا کرنے کے لیے اس میں کیا اضافہ کریں گے؟
مسائل کے تمام یا کچھ حصے کو حل کرنے کے لیے آپ کون سے اوزار اور طریقے استعمال کرتے ہیں؟

PS میں کچھ لنکس چھوڑوں گا:
گیتوب پروجیکٹ - https://github.com/simbakot/mlflow_example
ایم ایل فلو - https://mlflow.org/
سوالات کے لیے میرا کام ای میل - [ای میل محفوظ]

ہماری کمپنی وقتاً فوقتاً آئی ٹی ماہرین کے لیے مختلف تقریبات کی میزبانی کرتی ہے، مثال کے طور پر: 8 جولائی کو ماسکو کے وقت 19:00 بجے آن لائن فارمیٹ میں سی وی میٹنگ ہوگی، اگر آپ دلچسپی رکھتے ہیں، تو آپ حصہ لے سکتے ہیں، رجسٹریشن یہاں .

ماخذ: www.habr.com

نیا تبصرہ شامل کریں