MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Γεια σε όλους! Είμαι προγραμματιστής βιογραφικών στο CROC. Εδώ και 3 χρόνια υλοποιούμε έργα στον τομέα του βιογραφικού. Κατά τη διάρκεια αυτής της περιόδου, κάναμε πολλά πράγματα, για παράδειγμα: παρακολουθούσαμε τους οδηγούς, ώστε κατά την οδήγηση να μην έπιναν, να μην κάπνιζαν, να μην μιλούσαν στο τηλέφωνο, να κοιτούσαν το δρόμο και όχι τα όνειρα ή τα σύννεφα ; Καταγράψαμε ανθρώπους που οδηγούν σε αποκλειστικές λωρίδες και καταλαμβάνουν πολλές θέσεις στάθμευσης. εξασφάλισε ότι οι εργαζόμενοι φορούσαν κράνη, γάντια κ.λπ. εντόπισε έναν υπάλληλο που θέλει να εισέλθει στην εγκατάσταση· Μετρήσαμε ό,τι μπορούσαμε.

Γιατί τα κάνω όλα αυτά;

Κατά τη διαδικασία υλοποίησης των έργων, έχουμε χτυπήματα, πολλά προβλήματα, μερικά από τα προβλήματα που είτε είστε εξοικειωμένοι είτε θα γνωρίσετε στο μέλλον.

Ας προσομοιώσουμε την κατάσταση

Ας φανταστούμε ότι πιάσαμε δουλειά σε μια νέα εταιρεία «Ν», της οποίας οι δραστηριότητες σχετίζονται με την ML. Εργαζόμαστε σε ένα έργο ML (DL, CV), στη συνέχεια για κάποιο λόγο μεταβαίνουμε σε άλλη δουλειά, γενικά κάνουμε ένα διάλειμμα και επιστρέφουμε στον δικό μας ή στον νευρώνα κάποιου άλλου.

  1. Έρχεται η στιγμή της αλήθειας, πρέπει με κάποιο τρόπο να θυμάστε πού σταματήσατε, ποιες υπερπαραμέτρους δοκιμάσατε και, το πιο σημαντικό, σε ποια αποτελέσματα οδήγησαν. Μπορεί να υπάρχουν πολλές επιλογές για το ποιος αποθήκευσε πληροφορίες σε όλες τις εκκινήσεις: στο κεφάλι, ρυθμίσεις παραμέτρων, σημειωματάριο, σε περιβάλλον εργασίας στο cloud. Έτυχε να δω μια επιλογή όταν οι υπερπαράμετροι αποθηκεύτηκαν ως γραμμές σχολιασμού στον κώδικα, γενικά, μια φανταχτερή. Τώρα φανταστείτε ότι δεν επιστρέψατε στο έργο σας, αλλά στο έργο ενός ατόμου που έφυγε από την εταιρεία και κληρονομήσατε έναν κωδικό και ένα μοντέλο που ονομάζεται 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 κ.λπ., και ίσως βρείτε ένα που ταιριάζει καλύτερα στις ανάγκες σας.

«Δημιουργία» MLOps χρησιμοποιώντας το παράδειγμα χρήσης του εργαλείου MLFlow

Το MLFlow είναι μια πλατφόρμα ανοιχτού κώδικα για τη διαχείριση του κύκλου ζωής των μοντέλων ml (https://mlflow.org/).

Το MLflow περιλαμβάνει τέσσερα στοιχεία:

  • Παρακολούθηση ροής ML - καλύπτει τα θέματα καταγραφής αποτελεσμάτων και παραμέτρων που οδήγησαν σε αυτό το αποτέλεσμα.
  • MLflow Project - σας επιτρέπει να πακετάρετε κώδικα και να τον αναπαράγετε σε οποιαδήποτε πλατφόρμα.
  • Μοντέλα MLflow - υπεύθυνα για την ανάπτυξη μοντέλων στην παραγωγή.
  • Μητρώο MLflow - σας επιτρέπει να αποθηκεύετε μοντέλα και να διαχειρίζεστε την κατάστασή τους σε ένα κεντρικό αποθετήριο.

Το MLflow λειτουργεί σε δύο οντότητες:

  • Το launch είναι ένας πλήρης κύκλος εκπαίδευσης, παραμέτρων και μετρήσεων βάσει των οποίων θέλουμε να εγγραφούμε.
  • Ένα πείραμα είναι ένα «θέμα» που τρέχει μαζί.

Όλα τα βήματα του παραδείγματος υλοποιούνται στο λειτουργικό σύστημα Ubuntu 18.04.

1. Αναπτύξτε τον διακομιστή

Προκειμένου να διαχειριστούμε εύκολα το έργο μας και να λάβουμε όλες τις απαραίτητες πληροφορίες, θα αναπτύξουμε έναν διακομιστή. Ο διακομιστής παρακολούθησης MLflow έχει δύο κύρια στοιχεία:

  • backend store - υπεύθυνος για την αποθήκευση πληροφοριών σχετικά με εγγεγραμμένα μοντέλα (υποστηρίζει 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

Καθώς η κατάστημα 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 (συνιστώ να δημιουργήσετε ένα ξεχωριστό εικονικό περιβάλλον):

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 στο 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. MlflowClient (το έφτιαξα για ευκολία), με τη βοήθεια του οποίου δημιουργώ ένα πείραμα και το τρέχω στον διακομιστή. Στη συνέχεια, υποδεικνύω πού πρέπει να συγχωνευτούν τα αποτελέσματα εκκίνησης (mlflow.set_tracking_uri(self.tracking_uri)). Ενεργοποιώ την αυτόματη καταγραφή mlflow.keras.autolog(). Επί του παρόντος, το MLflow Tracking υποστηρίζει αυτόματη καταγραφή για TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Εάν δεν έχετε βρει το πλαίσιο ή τη βιβλιοθήκη σας, τότε μπορείτε πάντα να συνδεθείτε ρητά. Ξεκινάμε προπονήσεις. Καταχωρίστε ετικέτες και παραμέτρους εισαγωγής στον απομακρυσμένο διακομιστή.

Μερικές γραμμές και εσείς, όπως όλοι οι άλλοι, έχετε πρόσβαση σε πληροφορίες για όλες τις εκκινήσεις. Δροσερός?

3. Συντάσσουμε το έργο

Τώρα ας διευκολύνουμε την έναρξη του έργου. Για να το κάνετε αυτό, προσθέστε το αρχείο 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 Project έχει πολλές ιδιότητες:

  • Όνομα - το όνομα του έργου σας.
  • Περιβάλλον - στην περίπτωσή μου, το 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 ως περιβάλλον χρόνου εκτέλεσης, για περισσότερες λεπτομέρειες, ανατρέξτε στο τεκμηρίωση.

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 .

Μετά την εισαγωγή της εντολής, θα δημιουργηθεί αυτόματα ένα περιβάλλον conda και θα ξεκινήσει η εκπαίδευση.
Στο παραπάνω παράδειγμα, πέρασα τον αριθμό των εποχών για εκπαίδευση, τις κατηγορίες στις οποίες θέλουμε να τμηματοποιήσουμε (μπορείτε να δείτε την πλήρη λίστα εδώ) και τη διεύθυνση του απομακρυσμένου διακομιστή μας.
Μια πλήρης λίστα πιθανών παραμέτρων μπορεί να βρεθεί στο αρχείο MLproject.

5. Αξιολογήστε τα μαθησιακά αποτελέσματα

Μετά την ολοκλήρωση της εκπαίδευσης, μπορούμε να μεταβούμε στο πρόγραμμα περιήγησης στη διεύθυνση του διακομιστή μας http://server_host:server_port

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Εδώ βλέπουμε μια λίστα με όλα τα πειράματα (επάνω αριστερά), καθώς και πληροφορίες για εκτελέσεις (μέση). Μπορούμε να δούμε πιο λεπτομερείς πληροφορίες (παραμέτρους, μετρήσεις, τεχνουργήματα και ορισμένες πρόσθετες πληροφορίες) για κάθε κυκλοφορία.

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Για κάθε μέτρηση μπορούμε να παρατηρήσουμε το ιστορικό των αλλαγών

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Εκείνοι. Αυτή τη στιγμή μπορούμε να αναλύσουμε τα αποτελέσματα σε μια "χειροκίνητη" λειτουργία και μπορείτε επίσης να ρυθμίσετε την αυτόματη επικύρωση χρησιμοποιώντας το API MLflow.

6. Καταχωρίστε το μοντέλο

Αφού αναλύσουμε το μοντέλο μας και αποφασίσουμε ότι είναι έτοιμο για μάχη, προχωράμε στην εγγραφή του, για αυτό επιλέγουμε την εκτόξευση που χρειαζόμαστε (όπως φαίνεται στην προηγούμενη παράγραφο) και κατεβαίνουμε.

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Αφού δώσουμε στο μοντέλο μας ένα όνομα, έχει μια έκδοση. Εάν αποθηκεύσετε ένα άλλο μοντέλο με το ίδιο όνομα, η έκδοση θα αναβαθμιστεί αυτόματα.

MLOps - Βιβλίο μαγειρικής, κεφάλαιο 1

Για κάθε μοντέλο, μπορούμε να προσθέσουμε μια περιγραφή και να επιλέξουμε μία από τις τρεις καταστάσεις (Staging, Production, Archived)· στη συνέχεια, χρησιμοποιώντας το 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 είναι απλώς ένα μέσο για έναν σκοπό.

Γράψτε τι προβλήματα αντιμετωπίσατε και δεν τα εμφάνισα;
Τι θα προσθέτατε στο σύστημα για να καλύψει τις ανάγκες σας;
Ποια εργαλεία και προσεγγίσεις χρησιμοποιείτε για να λύσετε όλα ή μέρος των προβλημάτων;

Υ.Γ. Θα αφήσω δύο συνδέσμους:
έργο github - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
Το email της εργασίας μου για ερωτήσεις - [προστασία μέσω email]

Η εταιρεία μας φιλοξενεί περιοδικά διάφορες εκδηλώσεις για ειδικούς πληροφορικής, για παράδειγμα: στις 8 Ιουλίου στις 19:00 ώρα Μόσχας θα πραγματοποιηθεί συνάντηση βιογραφικών σε ηλεκτρονική μορφή, εάν ενδιαφέρεστε, μπορείτε να λάβετε μέρος, εγγραφή εδώ .

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο