MLOps - కుక్ బుక్, అధ్యాయం 1

MLOps - కుక్ బుక్, అధ్యాయం 1

అందరికి వందనాలు! నేను CROCలో CV డెవలపర్‌ని. మేము ఇప్పుడు 3 సంవత్సరాలుగా CV రంగంలో ప్రాజెక్టులను అమలు చేస్తున్నాము. ఈ సమయంలో, మేము చాలా పనులు చేసాము, ఉదాహరణకు: మేము డ్రైవర్లను పర్యవేక్షించాము, తద్వారా డ్రైవింగ్ చేసేటప్పుడు వారు తాగకుండా, పొగ త్రాగకుండా, ఫోన్‌లో మాట్లాడకుండా, రహదారి వైపు చూసారు మరియు కలలు లేదా మేఘాల వద్ద కాదు. ; మేము ప్రత్యేక లేన్లలో డ్రైవ్ చేసే మరియు అనేక పార్కింగ్ స్థలాలను తీసుకునే వ్యక్తులను రికార్డ్ చేసాము; కార్మికులు హెల్మెట్లు, చేతి తొడుగులు మొదలైనవాటిని ధరించారని నిర్ధారించారు; సదుపాయంలోకి ప్రవేశించాలనుకునే ఉద్యోగిని గుర్తించింది; మేము చేయగలిగినదంతా లెక్కించాము.

నేను ఇదంతా దేనికోసం చేస్తున్నాను?

ప్రాజెక్ట్‌లను అమలు చేసే ప్రక్రియలో, మేము బంప్‌లను కొట్టాము, చాలా గడ్డలు, మీకు తెలిసిన కొన్ని సమస్యలు లేదా భవిష్యత్తులో మీకు పరిచయం అవుతాయి.

పరిస్థితిని అనుకరిద్దాం

MLకి సంబంధించిన కార్యకలాపాలు ఉన్న "N" అనే యువ కంపెనీలో మాకు ఉద్యోగం వచ్చిందని ఊహించుకుందాం. మేము ML (DL, CV) ప్రాజెక్ట్‌లో పని చేస్తాము, కొన్ని కారణాల వల్ల మేము మరొక ఉద్యోగానికి మారాము, సాధారణంగా విశ్రాంతి తీసుకుంటాము మరియు మా స్వంత లేదా మరొకరి న్యూరాన్‌కి తిరిగి వస్తాము.

  1. నిజం యొక్క క్షణం వస్తుంది, మీరు ఎక్కడ ఆగిపోయారో, మీరు ఏ హైపర్‌పారామీటర్‌లను ప్రయత్నించారో మరియు ముఖ్యంగా, అవి ఏ ఫలితాలకు దారితీశాయి అని మీరు గుర్తుంచుకోవాలి. అన్ని లాంచ్‌లలో సమాచారాన్ని ఎవరు నిల్వ చేశారనే దాని కోసం అనేక ఎంపికలు ఉండవచ్చు: హెడ్‌లో, కాన్ఫిగర్‌లు, నోట్‌ప్యాడ్, క్లౌడ్‌లో పని వాతావరణంలో. హైపర్‌పారామీటర్‌లు కోడ్‌లో వ్యాఖ్యానించిన పంక్తులుగా నిల్వ చేయబడినప్పుడు నేను ఒక ఎంపికను చూడగలిగాను, సాధారణంగా, ఒక ఫాన్సీ. ఇప్పుడు మీరు మీ ప్రాజెక్ట్‌కి కాదు, కంపెనీని విడిచిపెట్టిన వ్యక్తి యొక్క ప్రాజెక్ట్‌కి తిరిగి వచ్చినట్లు ఊహించుకోండి మరియు మోడల్_1.pb అనే కోడ్ మరియు మోడల్‌ను మీరు వారసత్వంగా పొందారు. చిత్రాన్ని పూర్తి చేయడానికి మరియు అన్ని బాధలను తెలియజేయడానికి, మీరు కూడా అనుభవం లేని నిపుణుడని ఊహించుకుందాం.
  2. ముందుకి వెళ్ళు. కోడ్‌ని అమలు చేయడానికి, మేము మరియు దానితో పని చేసే ప్రతి ఒక్కరూ వాతావరణాన్ని సృష్టించాలి. కొన్ని కారణాల వల్ల వారు అతనిని మన వారసత్వంగా విడిచిపెట్టలేదని తరచుగా జరుగుతుంది. ఇది పనికిమాలిన పని కూడా కావచ్చు. మీరు ఈ దశలో సమయాన్ని వృథా చేయకూడదనుకుంటున్నారా?
  3. మేము మోడల్‌కు శిక్షణ ఇస్తాము (ఉదాహరణకు, కార్ డిటెక్టర్). ఇది చాలా మంచిగా మారే స్థానానికి మేము చేరుకుంటాము - ఇది ఫలితాన్ని సేవ్ చేయడానికి సమయం. దీన్ని car_detection_v1.pb అని పిలుద్దాం. తర్వాత మేము మరొకరికి శిక్షణ ఇస్తాము - car_detection_v2.pb. కొంత సమయం తరువాత, మా సహోద్యోగులు లేదా మనమే విభిన్న నిర్మాణాలను ఉపయోగించి మరింత ఎక్కువగా బోధిస్తాము. తత్ఫలితంగా, కళాఖండాల సమూహం ఏర్పడుతుంది, వాటి గురించి సమాచారాన్ని చాలా శ్రమతో సేకరించాలి (కానీ మేము దీన్ని తరువాత చేస్తాము, ఎందుకంటే ప్రస్తుతానికి మనకు ఎక్కువ ప్రాధాన్యతా అంశాలు ఉన్నాయి).
  4. సరే ఇప్పుడు అంతా అయిపోయింది! మాకు ఒక మోడల్ ఉంది! మేము తదుపరి మోడల్‌కు శిక్షణ ఇవ్వడం ప్రారంభించగలమా, కొత్త సమస్యను పరిష్కరించడానికి నిర్మాణాన్ని అభివృద్ధి చేయవచ్చా లేదా మనం కొంచెం టీ తాగవచ్చా? మరియు ఎవరు మోహరిస్తారు?

సమస్యలను గుర్తించడం

ప్రాజెక్ట్ లేదా ఉత్పత్తిపై పని చేయడం చాలా మంది వ్యక్తుల పని. మరియు కాలక్రమేణా, ప్రజలు విడిచిపెట్టి వస్తారు, మరిన్ని ప్రాజెక్టులు ఉన్నాయి మరియు ప్రాజెక్టులు మరింత క్లిష్టంగా మారతాయి. ఒక మార్గం లేదా మరొకటి, కొన్ని కలయికలలో పైన వివరించిన (మరియు మాత్రమే కాదు) చక్రం నుండి సందర్భాలు పునరావృతం నుండి పునరావృతం వరకు సంభవిస్తాయి. ఇవన్నీ వృధా సమయం, గందరగోళం, నరాలు, బహుశా కస్టమర్ అసంతృప్తి మరియు చివరికి డబ్బును కోల్పోతాయి. మనమందరం సాధారణంగా అదే పాత రేక్‌ని అనుసరిస్తున్నప్పటికీ, ఎవరూ ఈ క్షణాలను మళ్లీ మళ్లీ పునరుద్ధరించాలని కోరుకోరని నేను నమ్ముతున్నాను.

MLOps - కుక్ బుక్, అధ్యాయం 1

కాబట్టి, మేము ఒక అభివృద్ధి చక్రం ద్వారా వెళ్ళాము మరియు పరిష్కరించాల్సిన సమస్యలు ఉన్నాయని మేము చూస్తున్నాము. దీన్ని చేయడానికి మీకు ఇది అవసరం:

  • పని ఫలితాలను సౌకర్యవంతంగా నిల్వ చేయండి;
  • కొత్త ఉద్యోగులను చేర్చే ప్రక్రియను సులభతరం చేయండి;
  • అభివృద్ధి వాతావరణాన్ని అమలు చేసే ప్రక్రియను సులభతరం చేయండి;
  • మోడల్ సంస్కరణ ప్రక్రియను కాన్ఫిగర్ చేయండి;
  • నమూనాలను ధృవీకరించడానికి అనుకూలమైన మార్గాన్ని కలిగి ఉండండి;
  • మోడల్ స్టేట్ మేనేజ్‌మెంట్ సాధనాన్ని కనుగొనండి;
  • ఉత్పత్తికి నమూనాలను అందించడానికి ఒక మార్గాన్ని కనుగొనండి.

ఈ జీవిత చక్రాన్ని సులభంగా మరియు సౌకర్యవంతంగా నిర్వహించడానికి మిమ్మల్ని అనుమతించే వర్క్‌ఫ్లోతో ముందుకు రావడం అవసరమా? ఈ అభ్యాసాన్ని MLOps అంటారు

MLOps, లేదా మెషీన్ లెర్నింగ్ కోసం DevOps, డేటా సైన్స్ మరియు IT బృందాలు మెషిన్ లెర్నింగ్ మోడల్‌ల కోసం పర్యవేక్షణ, ధ్రువీకరణ మరియు పాలన ద్వారా మోడల్ డెవలప్‌మెంట్ మరియు విస్తరణ యొక్క వేగాన్ని సహకరించడానికి మరియు పెంచడానికి అనుమతిస్తుంది.

మీరు చేయవచ్చు చదవండివీటన్నింటి గురించి Google అబ్బాయిలు ఏమనుకుంటున్నారు? వ్యాసం నుండి MLOps చాలా పెద్ద విషయం అని స్పష్టమవుతుంది.

MLOps - కుక్ బుక్, అధ్యాయం 1

నా వ్యాసంలో నేను ప్రక్రియలో కొంత భాగాన్ని మాత్రమే వివరిస్తాను. అమలు కోసం, నేను MLflow సాధనాన్ని ఉపయోగిస్తాను, ఎందుకంటే... ఇది ఓపెన్ సోర్స్ ప్రాజెక్ట్, కనెక్ట్ చేయడానికి తక్కువ మొత్తంలో కోడ్ అవసరం మరియు ప్రముఖ ml ఫ్రేమ్‌వర్క్‌లతో ఏకీకరణ ఉంది. మీరు Kubeflow, SageMaker, ట్రైన్స్ మొదలైన ఇతర సాధనాల కోసం ఇంటర్నెట్‌లో శోధించవచ్చు మరియు మీ అవసరాలకు బాగా సరిపోయేదాన్ని కనుగొనవచ్చు.

MLFlow సాధనాన్ని ఉపయోగించే ఉదాహరణను ఉపయోగించి "బిల్డింగ్" MLOps

MLFlow అనేది ml మోడల్స్ యొక్క జీవితచక్ర నిర్వహణ కోసం ఒక ఓపెన్ సోర్స్ ప్లాట్‌ఫారమ్ (https://mlflow.org/).

MLflow నాలుగు భాగాలను కలిగి ఉంటుంది:

  • MLflow ట్రాకింగ్ - రికార్డింగ్ ఫలితాలు మరియు ఈ ఫలితానికి దారితీసిన పారామితుల సమస్యలను కవర్ చేస్తుంది;
  • MLflow ప్రాజెక్ట్ - కోడ్‌ని ప్యాకేజీ చేయడానికి మరియు ఏదైనా ప్లాట్‌ఫారమ్‌లో పునరుత్పత్తి చేయడానికి మిమ్మల్ని అనుమతిస్తుంది;
  • MLflow మోడల్స్ - ఉత్పత్తికి నమూనాలను అమలు చేయడానికి బాధ్యత వహిస్తుంది;
  • MLflow రిజిస్ట్రీ - మోడల్‌లను నిల్వ చేయడానికి మరియు వాటి స్థితిని కేంద్రీకృత రిపోజిటరీలో నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది.

MLflow రెండు ఎంటిటీలపై పనిచేస్తుంది:

  • లాంచ్ అనేది శిక్షణ, పారామితులు మరియు మెట్రిక్‌ల యొక్క పూర్తి చక్రం, దీని ద్వారా మేము నమోదు చేయాలనుకుంటున్నాము;
  • ప్రయోగం అనేది కలిసి నడిచే “అంశం”.

ఉదాహరణ యొక్క అన్ని దశలు ఉబుంటు 18.04 ఆపరేటింగ్ సిస్టమ్‌లో అమలు చేయబడతాయి.

1. సర్వర్‌ని అమలు చేయండి

మేము మా ప్రాజెక్ట్‌ను సులభంగా నిర్వహించడానికి మరియు అవసరమైన మొత్తం సమాచారాన్ని స్వీకరించడానికి, మేము సర్వర్‌ని అమలు చేస్తాము. MLflow ట్రాకింగ్ సర్వర్‌లో రెండు ప్రధాన భాగాలు ఉన్నాయి:

  • బ్యాకెండ్ స్టోర్ - నమోదిత నమూనాల గురించి సమాచారాన్ని నిల్వ చేయడానికి బాధ్యత వహిస్తుంది (4 DBMSలకు మద్దతు ఇస్తుంది: mysql, mssql, sqlite మరియు 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. ట్రాకింగ్ జోడించండి

మా శిక్షణ ఫలితాలు కోల్పోకుండా ఉండటానికి, డెవలపర్‌ల భవిష్యత్ తరాలు ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి మరియు పాత సహచరులకు మరియు మీరు అభ్యాస ప్రక్రియను ప్రశాంతంగా విశ్లేషించడానికి, మేము ట్రాకింగ్‌ని జోడించాలి. ట్రాకింగ్ అంటే పారామితులు, కొలమానాలు, కళాఖండాలు మరియు శిక్షణ ప్రారంభం గురించి ఏదైనా అదనపు సమాచారాన్ని, మా విషయంలో, సర్వర్‌లో సేవ్ చేయడం.

ఉదాహరణకు, నేను చిన్నదాన్ని సృష్టించాను గితుబ్‌పై ప్రాజెక్ట్ కేరాస్‌లో ఉన్న ప్రతిదాన్ని విభజించడం కోసం 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 ఫైల్‌ను జోడించండి.
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 అనకొండను అమలు చేయడానికి ఉపయోగించబడుతుందని మరియు డిపెండెన్సీ వివరణ 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) డెవలపర్‌లు మోడల్‌ను సులభంగా మెరుగుపరచవచ్చు మరియు కొత్త వెర్షన్‌లను ప్రచురించవచ్చు.

ముగింపులో

నేను అనుమతించే వ్యవస్థను అందించాను:

  • ML నమూనాలు, శిక్షణ పురోగతి మరియు ఫలితాల గురించి సమాచారాన్ని కేంద్రంగా నిల్వ చేయండి;
  • అభివృద్ధి వాతావరణాన్ని త్వరగా అమలు చేయండి;
  • నమూనాలపై పని పురోగతిని పర్యవేక్షించడం మరియు విశ్లేషించడం;
  • మోడల్స్ యొక్క స్థితిని సంస్కరణ మరియు నిర్వహించడానికి ఇది సౌకర్యవంతంగా ఉంటుంది;
  • ఫలిత నమూనాలను అమలు చేయడం సులభం.

ఈ ఉదాహరణ ఒక బొమ్మ మరియు మీ స్వంత సిస్టమ్‌ను నిర్మించడానికి ఒక ప్రారంభ బిందువుగా పనిచేస్తుంది, ఇందులో ఫలితాల మూల్యాంకనం యొక్క ఆటోమేషన్ మరియు మోడల్‌ల నమోదు (వరుసగా 5 మరియు 6 పాయింట్లు) ఉండవచ్చు లేదా మీరు డేటాసెట్‌ల సంస్కరణను జోడిస్తారా లేదా మరేదైనా ఉండవచ్చు ? నేను చెప్పడానికి ప్రయత్నిస్తున్న విషయం ఏమిటంటే, మీకు మొత్తం MLOps అవసరం, MLflow అనేది ముగింపుకు ఒక సాధనం.

నేను ప్రదర్శించని ఏ సమస్యలను మీరు ఎదుర్కొన్నారో వ్రాయండి?
మీ అవసరాలను తీర్చడానికి మీరు సిస్టమ్‌కు ఏమి జోడిస్తారు?
సమస్యలన్నింటినీ లేదా కొంత భాగాన్ని పరిష్కరించడానికి మీరు ఏ సాధనాలు మరియు విధానాలను ఉపయోగిస్తున్నారు?

PS నేను కొన్ని లింక్‌లను వదిలివేస్తాను:
గితుబ్ ప్రాజెక్ట్ - https://github.com/simbakot/mlflow_example
ML ఫ్లో - https://mlflow.org/
ప్రశ్నల కోసం నా కార్యాలయ ఇమెయిల్ - [ఇమెయిల్ రక్షించబడింది]

మా కంపెనీ IT నిపుణుల కోసం క్రమానుగతంగా వివిధ ఈవెంట్‌లను నిర్వహిస్తుంది, ఉదాహరణకు: జూలై 8న మాస్కో సమయం 19:00 గంటలకు ఆన్‌లైన్ ఫార్మాట్‌లో CV మీట్‌అప్ ఉంటుంది, మీకు ఆసక్తి ఉంటే, మీరు పాల్గొనవచ్చు, నమోదు ఇక్కడ .

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి