Διαχείριση μοντέλων MLflow σε χώρους εργασίας και πλατφόρμες

Η μηχανική εκμάθηση παραγωγής απαιτεί περισσότερα από την εκπαίδευση ενός καλού μοντέλου. Χρειάζεστε αξιόπιστες ροές εργασίας για να μεταφέρετε μοντέλα από την ανάπτυξη μέσω της επικύρωσης στην παραγωγή. Η καταγραφή μεταξύ χώρων εργασίας στο Microsoft Fabric επιτρέπει δύο βασικά σενάρια:

  • Δημιουργήστε ολοκληρωμένες ροές εργασίας MLOps. Εκπαιδεύστε και πειραματιστείτε σε έναν χώρο εργασίας ανάπτυξης, επικυρώστε σε έναν δοκιμαστικό χώρο εργασίας και αναπτύξτε σε έναν χώρο εργασίας που εξυπηρετεί την παραγωγή χρησιμοποιώντας τυπικά API MLflow. Αυτός ο διαχωρισμός των περιβαλλόντων βοηθά τις ομάδες να επιβάλλουν πύλες ποιότητας και να διατηρούν σαφείς διαδρομές ελέγχου από τον πειραματισμό έως την παραγωγή.

  • Μεταφέρετε υπάρχοντα στοιχεία εκμάθησης μηχανής στο Fabric. Εάν έχετε ήδη εκπαιδεύσει μοντέλα σε Azure Databricks, Azure Machine Learning, ένα τοπικό περιβάλλον ή οποιαδήποτε άλλη πλατφόρμα που υποστηρίζει MLflow, μπορείτε να καταγράψετε αυτά τα πειράματα και τα μοντέλα απευθείας σε έναν χώρο εργασίας Fabric. Μπορείτε εύκολα να ενοποιήσετε τα τεχνουργήματα μηχανικής εκμάθησης σε ένα μέρος χωρίς να δημιουργήσετε ξανά τους αγωγούς εκπαίδευσής σας.

Η καταγραφή μεταξύ χώρων εργασίας λειτουργεί μέσω του πακέτου synapseml-mlflow, το οποίο παρέχει μια προσθήκη παρακολούθησης MLflow συμβατή με Fabric. Μπορείτε να πραγματοποιήσετε έλεγχο ταυτότητας με τον χώρο εργασίας προορισμού, να ορίσετε το URI παρακολούθησης και να χρησιμοποιήσετε τυπικές εντολές MLflow.

Σημείωμα

Η καταγραφή μεταξύ χώρων εργασίας εστιάζει στην εμπειρία του κώδικα. Η ενοποίηση περιβάλλοντος εργασίας χρήστη για σενάρια μεταξύ χώρων εργασίας θα εξεταστεί σε μελλοντική έκδοση.

Προϋποθέσεις

Για σενάρια σημειωματαρίου Fabric, δημιουργήστε ένα νέο σημειωματάριο και επισυνάψτε ένα lakehouse πριν εκτελέσετε οποιονδήποτε κώδικα.

Συμβουλή

Η καταγραφή μεταξύ χώρων εργασίας υποστηρίζεται σε χώρους εργασίας με ενεργοποιημένη την προστασία εξερχόμενης πρόσβασης . Η καταγραφή μεταξύ χώρων εργασίας σε διαφορετικό χώρο εργασίας απαιτεί ένα διαχειριζόμενο ιδιωτικό τελικό σημείο. Η καταγραφή εντός του ίδιου χώρου εργασίας και εκτός του Fabric λειτουργεί χωρίς πρόσθετη ρύθμιση παραμέτρων.

Εγκαταστήστε την προσθήκη MLflow

Το πακέτο synapseml-mlflow επιτρέπει την καταγραφή μεταξύ χώρων εργασίας παρέχοντας την προσθήκη παρακολούθησης MLflow Fabric. Επιλέξτε την εντολή εγκατάστασης με βάση το περιβάλλον σας.

Σημείωμα

Το synapseml-mlflow πακέτο υποστηρίζει τώρα το MLflow 3. Δεν χρειάζεται πλέον να καρφιτσώνετε mlflow-skinny στην έκδοση 2.22.2. Για μια επισκόπηση των δυνατοτήτων του MLflow 3 στο Fabric, ανατρέξτε στο MLflow 3 στο Fabric Data Science.

Για ένα σημειωματάριο Fabric, χρησιμοποιήστε αυτήν την εντολή για να εγκαταστήσετε το πακέτο με εξαρτήσεις ηλεκτρονικού σημειωματαρίου:

%pip install -U "synapseml-mlflow[online-notebook]"

Μετά την εγκατάσταση, επανεκκινήστε τον πυρήνα πριν εκτελέσετε τον υπόλοιπο κώδικα.

Καταγραφή αντικειμένων MLflow σε άλλο χώρο εργασίας Fabric

Σε αυτό το σενάριο, εκτελείτε ένα σημειωματάριο σε έναν χώρο εργασίας Fabric (προέλευση) και καταγράφετε πειράματα και μοντέλα σε διαφορετικό χώρο εργασίας Fabric (προορισμός).

Ορισμός του χώρου εργασίας προορισμού

Τοποθετήστε το δείκτη του ποντικιού στον χώρο εργασίας προορισμού ορίζοντας τη μεταβλητή MLFLOW_TRACKING_URI περιβάλλοντος:

import os

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

Καταγραφή πειραμάτων και μοντέλων

Δημιουργήστε ένα πείραμα και καταγράψτε μια εκτέλεση με παραμέτρους, μετρήσεις και ένα μοντέλο:

import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

# Create or set the experiment in the target workspace
EXP_NAME = "my-cross-workspace-experiment"
MODEL_NAME = "my-cross-workspace-model"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    score = lr.score(X, y)
    signature = infer_signature(X, y)

    mlflow.log_params({
        "objective": "classification",
        "learning_rate": 0.05,
    })
    mlflow.log_metric("score", score)

    mlflow.sklearn.log_model(lr, "model", signature=signature)

    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        MODEL_NAME
    )

Μετά την ολοκλήρωση της εκτέλεσης, το πείραμα και το καταχωρημένο μοντέλο εμφανίζονται στον χώρο εργασίας προορισμού.

Μετακίνηση αντικειμένων MLflow μεταξύ χώρων εργασίας Fabric

Σε αυτό το σενάριο, καταγράφετε πρώτα αντικείμενα στον χώρο εργασίας προέλευσης και, στη συνέχεια, κάνετε λήψη των αντικειμένων σχεδίασης και τα καταγράφετε ξανά στον χώρο εργασίας προορισμού. Αυτή η μέθοδος είναι χρήσιμη όταν χρειάζεται να προωθήσετε ένα εκπαιδευμένο μοντέλο από έναν χώρο εργασίας ανάπτυξης σε έναν χώρο εργασίας παραγωγής.

Βήμα 1: Καταγραφή αντικειμένων στον χώρο εργασίας προέλευσης

import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

# Log to the current (source) workspace
EXP_NAME = "source-experiment"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    signature = infer_signature(X, y)
    mlflow.sklearn.log_model(lr, "model", signature=signature)

    source_run_id = run.info.run_id

Βήμα 2: Λήψη τεχνουργημάτων από την εκτέλεση προέλευσης

import mlflow.artifacts

# Download the model artifacts locally
local_artifact_path = mlflow.artifacts.download_artifacts(
    run_id=source_run_id,
    artifact_path="model"
)

Βήμα 3: Επανασύνδεση αντικειμένων σχεδίασης στον χώρο εργασίας προορισμού

import os

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

TARGET_EXP_NAME = "promoted-experiment"
TARGET_MODEL_NAME = "promoted-model"
mlflow.set_experiment(TARGET_EXP_NAME)

with mlflow.start_run() as run:
    mlflow.log_artifacts(local_artifact_path, "model")
    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        TARGET_MODEL_NAME
    )

Καταγραφή αντικειμένων MLflow εκτός του Fabric

Μπορείτε να καταγράψετε πειράματα και μοντέλα MLflow σε έναν χώρο εργασίας Fabric από οποιοδήποτε περιβάλλον όπου δημιουργείτε τα μοντέλα σας, συμπεριλαμβανομένων των εξής:

  • Τοπικά μηχανήματα. VS Code, σημειωματάρια Jupyter ή οποιοδήποτε τοπικό περιβάλλον Python.
  • Azure Databricks. Σημειωματάρια και εργασίες Azure Databricks.
  • Azure Machine Learning. Η Azure Machine Learning υπολογίζει παρουσίες και διοχετεύσεις.
  • Οποιαδήποτε άλλη πλατφόρμα. Οποιοδήποτε περιβάλλον υποστηρίζει Python και MLflow.

Βήμα 1: Εγκαταστήστε το πακέτο

Εγκαταστήστε το synapseml-mlflow πακέτο στο περιβάλλον σας:

pip install -U "synapseml-mlflow" "mlflow-skinny<=2.22.2"

Βήμα 2: Έλεγχος ταυτότητας με Fabric

Επιλέξτε μια μέθοδο ελέγχου ταυτότητας με βάση το περιβάλλον σας:

Χρησιμοποιήστε αυτήν τη μέθοδο για περιβάλλοντα τοπικής ανάπτυξης με πρόσβαση στο πρόγραμμα περιήγησης, όπως το VS Code ή το Jupyter.

from fabric.analytics.environment.credentials import SetFabricAnalyticsDefaultTokenCredentialsGlobally
from azure.identity import DefaultAzureCredential

SetFabricAnalyticsDefaultTokenCredentialsGlobally(
    credential=DefaultAzureCredential(exclude_interactive_browser_credential=False)
)

Βήμα 3: Ορισμός του χώρου εργασίας προορισμού και καταγραφή αντικειμένων MLflow

Μετά τον έλεγχο ταυτότητας, ορίστε το URI παρακολούθησης ώστε να οδηγεί στον χώρο εργασίας Fabric προορισμού και να καταγράφει πειράματα και μοντέλα χρησιμοποιώντας τυπικά API MLflow:

import os
import mlflow
import mlflow.sklearn
import numpy as np
from sklearn.linear_model import LogisticRegression
from mlflow.models.signature import infer_signature

target_workspace_id = "<your-target-workspace-id>"
target_uri = f"sds://api.fabric.microsoft.com/v1/workspaces/{target_workspace_id}/mlflow"
os.environ["MLFLOW_TRACKING_URI"] = target_uri

EXP_NAME = "external-experiment"
MODEL_NAME = "external-model"
mlflow.set_experiment(EXP_NAME)

with mlflow.start_run() as run:
    lr = LogisticRegression()
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr.fit(X, y)

    signature = infer_signature(X, y)
    mlflow.log_metric("score", lr.score(X, y))
    mlflow.sklearn.log_model(lr, "model", signature=signature)

    mlflow.register_model(
        f"runs:/{run.info.run_id}/model",
        MODEL_NAME
    )

Χρήση καταγραφής μεταξύ χώρων εργασίας με προστασία εξερχόμενης πρόσβασης

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

Η καταγραφή εντός του ίδιου χώρου εργασίας και η καταγραφή εκτός του Fabric (τοπικοί υπολογιστές, Azure Databricks, Azure Machine Learning) λειτουργούν χωρίς πρόσθετη ρύθμιση παραμέτρων.

Για λεπτομέρειες σχετικά με τα υποστηριζόμενα σενάρια και την απαιτούμενη ρύθμιση παραμέτρων, ανατρέξτε στο θέμα Προστασία εξερχόμενης πρόσβασης χώρου εργασίας για Fabric Data Science.

Εγκατάσταση του πακέτου σε χώρο εργασίας με δυνατότητα OAP

Η τυπική %pip install εντολή απαιτεί εξερχόμενη πρόσβαση στο Διαδίκτυο, η οποία αποκλείεται σε χώρους εργασίας με ενεργοποιημένη την προστασία εξερχόμενης πρόσβασης (OAP). Για να εγκαταστήσετε το synapseml-mlflow πακέτο, κάντε πρώτα λήψη του από ένα περιβάλλον που δεν είναι OAP και, στη συνέχεια, αποστείλετε το στο lakehouse.

  1. Κατεβάστε το synapseml-mlflow πακέτο από ένα μηχάνημα που έχει πρόσβαση στο Διαδίκτυο.

    pip download synapseml-mlflow[online-notebook]
    
  2. Αποστείλετε τα ληφθέντα αρχεία στο lakehouse στον χώρο εργασίας σας με δυνατότητα OAP. Αποστείλετε όλα τα .whl αρχεία στην ενότητα Αρχεία του lakehouse (για παράδειγμα, /lakehouse/default/Files).

  3. Εγκατάσταση από τη διαδρομή lakehouse στο σημειωματάριο Fabric:

    %pip install --no-index --find-links=/lakehouse/default/Files "synapseml-mlflow[online-notebook]>2.0.0" "mlflow-skinny<=2.22.2" --pre
    
  4. Ορίστε το URI παρακολούθησης ώστε να χρησιμοποιεί το διαχειριζόμενο ιδιωτικό τελικό σημείο. Εάν ο τρέχων χώρος εργασίας σας έχει ενεργοποιημένο το OAP, πρέπει να ρυθμίσετε τις παραμέτρους ενός ιδιωτικού τελικού σημείου διαχειριζόμενου μεταξύ χώρων εργασίας από τον χώρο εργασίας προέλευσης στον χώρο εργασίας προορισμού. Στη συνέχεια, δρομολογήστε το URI παρακολούθησης μέσω του ιδιωτικού τελικού σημείου.

    import os
    from fabric.analytics.environment.context import FabricContext, InternalContext
    
    context = FabricContext(workspace_id=target_workspace_id, internal_context=InternalContext(is_wspl_enabled=True))
    print(context.pbi_shared_host)
    # You need to set up and use this private endpoint if your current workspace has OAP enabled
    
    os.environ["MLFLOW_TRACKING_URI"] = f"sds://{context.pbi_shared_host}/v1/workspaces/{target_workspace_id}/mlflow"
    

Γνωστοί περιορισμοί

  • Απαιτείται άδεια εγγραφής. Πρέπει να έχετε δικαίωμα εγγραφής στον χώρο εργασίας προορισμού.
  • Η διαχρονική γραμμή μεταξύ χώρων εργασίας δεν υποστηρίζεται. Δεν μπορείτε να προβάλετε σχέσεις μεταξύ σημειωματαρίων, πειραμάτων και μοντέλων όταν αυτά τα αντικείμενα καταγράφονται από διαφορετικούς χώρους εργασίας.
  • Το σημειωματάριο προέλευσης δεν είναι ορατό στον χώρο εργασίας προορισμού. Το σημειωματάριο προέλευσης δεν εμφανίζεται στον χώρο εργασίας προορισμού. Στις λεπτομέρειες τεχνουργημάτων και στις σελίδες λίστας, η σύνδεση προς το σημειωματάριο προέλευσης είναι κενή.
  • Τα στιγμιότυπα στοιχείων δεν υποστηρίζονται. Τα πειράματα ή τα μοντέλα εκμάθησης μηχανής που έχουν καταγραφεί σε έναν άλλο χώρο εργασίας δεν εμφανίζονται στο στιγμιότυπο του στοιχείου σημειωματαρίου που εκτελείται από την προέλευση.
  • Τα μεγάλα γλωσσικά μοντέλα δεν υποστηρίζονται. Η καταγραφή μεταξύ χώρων εργασίας δεν υποστηρίζει μεγάλα γλωσσικά μοντέλα (LLM).