إدارة دورة حياة النموذج في كتالوج Unity

هام

توضح هذه المقالة كيفية استخدام النماذج في كتالوج Unity كجزء من سير عمل التعلم الآلي لإدارة دورة الحياة الكاملة لنماذج التعلم الآلي. يوفر Databricks إصدارا مستضافا من سجل نموذج MLflow في كتالوج Unity. توسع النماذج في كتالوج Unity فوائد كتالوج Unity لتشمل نماذج التعلم الآلي، بما في ذلك التحكم المركزي في الوصول والتدقيق والنسل واكتشاف النموذج عبر مساحات العمل. تتوافق النماذج في كتالوج Unity مع عميل MLflow Python مفتوح المصدر.

للحصول على نظرة عامة على مفاهيم Model Registry، راجع إدارة دورة حياة التعلم الآلي باستخدام MLflow.

المتطلبات

  1. يجب تمكين كتالوج Unity في مساحة العمل الخاصة بك. راجع بدء استخدام كتالوج Unity لإنشاء Metastore كتالوج Unity وتمكينه في مساحة عمل وإنشاء كتالوج. إذا لم يتم تمكين كتالوج Unity، فاستخدم سجل نموذج مساحة العمل.

  2. يجب استخدام مورد حساب لديه حق الوصول إلى كتالوج Unity. بالنسبة لأحمال عمل التعلم الآلي، هذا يعني أن وضع الوصول للحساب يجب أن يكون مستخدما واحدا. لمزيد من المعلومات، راجع أوضاع Access.

  3. لإنشاء نماذج مسجلة جديدة، تحتاج إلى الامتيازات التالية:

    • USE SCHEMA وامتيازات USE CATALOG على المخطط والكتالوج المرفق الخاص به.
    • CREATE_MODEL امتياز على المخطط. لمنح هذا الامتياز، استخدم واجهة مستخدم مستكشف الكتالوج أو أمر SQL GRANT التالي:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

إشعار

يجب إرفاق مساحة العمل الخاصة بك بمخزن بيانات تعريف كتالوج Unity الذي يدعم توريث الامتيازات. ينطبق هذا على جميع المخازن الوصفية التي تم إنشاؤها بعد 25 أغسطس 2022. إذا كان يعمل على metastore أقدم، فاتبع المستندات للترقية.

تثبيت عميل MLflow وتكوينه ل Unity Catalog

يتضمن هذا القسم إرشادات لتثبيت وتكوين عميل MLflow للكتالوج Unity.

تثبيت عميل MLflow Python

يمكنك أيضا استخدام النماذج في كتالوج Unity على Databricks Runtime 11.3 LTS وما فوق عن طريق تثبيت أحدث إصدار من عميل MLflow Python في دفتر الملاحظات الخاص بك، باستخدام التعليمات البرمجية التالية.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

تكوين عميل MLflow للوصول إلى النماذج في كتالوج Unity

إذا كان الكتالوج الافتراضي لمساحة العمل في كتالوج Unity (بدلا من hive_metastore) وكنت تقوم بتشغيل مجموعة باستخدام Databricks Runtime 13.3 LTS أو أعلى (Databricks Runtime 15.0 أو أعلى في مناطق Azure China)، يتم إنشاء النماذج تلقائيا وتحميلها من الكتالوج الافتراضي. ليس عليك تنفيذ هذه الخطوة.

بالنسبة لمساحات العمل الأخرى، ينشئ عميل MLflow Python نماذج في سجل نموذج مساحة عمل Databricks. للترقية إلى النماذج في كتالوج Unity، استخدم التعليمات البرمجية التالية في دفاتر الملاحظات لتكوين عميل MLflow:

import mlflow
mlflow.set_registry_uri("databricks-uc")

بالنسبة لعدد صغير من مساحات العمل حيث تم تكوين كل من الكتالوج الافتراضي إلى كتالوج في كتالوج Unity قبل يناير 2024 وتم استخدام سجل نموذج مساحة العمل قبل يناير 2024، يجب تعيين الكتالوج الافتراضي يدويا إلى كتالوج Unity باستخدام الأمر الموضح أعلاه.

تدريب وتسجيل النماذج المتوافقة مع كتالوج Unity

الأذونات المطلوبة: لإنشاء نموذج مسجل جديد، تحتاج إلى CREATE_MODEL الامتيازات و USE SCHEMA على المخطط المرفق، والامتياز USE CATALOG على الكتالوج المرفق. لإنشاء إصدارات نموذج جديدة ضمن نموذج مسجل، يجب أن تكون مالك النموذج المسجل وأن يكون لديك USE SCHEMA وامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

يجب أن يكون لإصدارات نموذج التعلم الآلي في UC توقيع نموذج. إذا لم تكن تقوم بالفعل بتسجيل نماذج MLflow بالتوقيعات في أحمال عمل تدريب النموذج، يمكنك إما:

  • استخدم التسجيل التلقائي ل Databricks، الذي يسجل النماذج تلقائيا بالتوقيعات للعديد من أطر عمل التعلم الآلي الشائعة. راجع أطر العمل المدعومة في مستندات MLflow.
  • باستخدام MLflow 2.5.0 وما فوق، يمكنك تحديد مثال إدخال في مكالمتك mlflow.<flavor>.log_model ، ويتم استنتاج توقيع النموذج تلقائيا. لمزيد من المعلومات، راجع وثائق MLflow.

بعد ذلك، مرر اسم النموذج ثلاثي المستويات إلى واجهات برمجة تطبيقات MLflow، في النموذج <catalog>.<schema>.<model>.

تقوم الأمثلة في هذا القسم بإنشاء نماذج والوصول إليها في ml_team المخطط ضمن الكتالوج prod .

تنشئ أمثلة تدريب النموذج في هذا القسم إصدار نموذج جديد وتسجله في الكتالوج prod . لا يعني استخدام الكتالوج prod بالضرورة أن إصدار النموذج يخدم حركة مرور الإنتاج. يعكس الكتالوج والمخطط والنموذج المسجل لإصدار النموذج بيئته (prod) وقواعد الحوكمة المقترنة به (على سبيل المثال، يمكن إعداد الامتيازات بحيث يمكن للمسؤولين فقط الحذف من الكتالوج prod )، ولكن ليس حالة النشر الخاصة به. لإدارة حالة النشر، استخدم الأسماء المستعارة للنموذج.

تسجيل نموذج في كتالوج Unity باستخدام التسجيل التلقائي

لتسجيل نموذج، استخدم أسلوب MLflow Client API register_model() . راجع mlflow.register_model.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)

# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")

تسجيل نموذج باستخدام واجهة برمجة التطبيقات

mlflow.register_model(
  "runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)

تسجيل نموذج في كتالوج Unity بالتوقيع المستنتج تلقائيا

يتوفر دعم التواقيع المستنتجة تلقائيا في MLflow الإصدار 2.5.0 وما فوق، وهو مدعوم في Databricks Runtime 11.3 LTS ML وما فوق. لاستخدام التواقيع المستنتجة تلقائيا، استخدم التعليمات البرمجية التالية لتثبيت أحدث عميل MLflow Python في دفتر ملاحظاتك:

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

تعرض التعليمات البرمجية التالية مثالا للتوقيع المستنتج تلقائيا.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

with mlflow.start_run():
    # Train a sklearn model on the iris dataset
    X, y = datasets.load_iris(return_X_y=True, as_frame=True)
    clf = RandomForestClassifier(max_depth=7)
    clf.fit(X, y)
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_model",
    )

تسجيل نموذج باستخدام واجهة المستخدم

اتبع الخطوات التالية:

  1. من صفحة تشغيل التجربة، انقر فوق Register model في الزاوية العلوية اليسرى من واجهة المستخدم.

  2. في مربع الحوار، حدد كتالوج Unity، وحدد نموذج وجهة من القائمة المنسدلة.

    تسجيل مربع حوار إصدار النموذج مع القائمة المنسدلة

  3. انقر فوق تسجيل.

    تسجيل مربع حوار إصدار النموذج باستخدام الزر

يمكن أن يستغرق تسجيل نموذج وقتا. لمراقبة التقدم، انتقل إلى نموذج الوجهة في كتالوج Unity وقم بالتحديث بشكل دوري.

توزيع النماذج باستخدام الأسماء المستعارة

تسمح لك الأسماء المستعارة للنموذج بتعيين مرجع مسمى قابل للتغيير إلى إصدار معين من نموذج مسجل. يمكنك استخدام الأسماء المستعارة للإشارة إلى حالة نشر إصدار نموذج. على سبيل المثال، يمكنك تخصيص اسم مستعار "بطل" لإصدار النموذج قيد الإنتاج حاليا واستهداف هذا الاسم المستعار في أحمال العمل التي تستخدم نموذج الإنتاج. يمكنك بعد ذلك تحديث نموذج الإنتاج عن طريق إعادة تعيين الاسم المستعار "البطل" إلى إصدار نموذج مختلف.

تعيين الأسماء المستعارة وحذفها على النماذج

الأذونات المطلوبة: مالك النموذج المسجل، بالإضافة إلى USE SCHEMA والامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

يمكنك تعيين الأسماء المستعارة وتحديثها وإزالتها للنماذج في كتالوج Unity باستخدام مستكشف الكتالوج. يمكنك إدارة الأسماء المستعارة عبر نموذج مسجل في صفحة تفاصيل النموذج وتكوين الأسماء المستعارة لإصدار نموذج معين في صفحة تفاصيل إصدار النموذج.

لتعيين الأسماء المستعارة وتحديثها وحذفها باستخدام واجهة برمجة تطبيقات عميل MLflow، راجع الأمثلة أدناه:

from mlflow import MlflowClient
client = MlflowClient()

# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)

# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)

# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")

# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")

لمزيد من التفاصيل حول واجهات برمجة تطبيقات العميل المستعارة، راجع وثائق واجهة برمجة تطبيقات MLflow.

تحميل إصدار النموذج بالاسم المستعار لأحمال عمل الاستدلال

الأذونات المطلوبة: EXECUTE امتياز على النموذج المسجل، بالإضافة إلى USE SCHEMA وامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

يمكن أن تشير أحمال عمل الاستدلال الدفعي إلى إصدار نموذج بالاسم المستعار. تقوم القصاصة البرمجية أدناه بتحميل وتطبيق إصدار نموذج "البطل" للاستدلال الدفعي. إذا تم تحديث إصدار "البطل" للإشارة إلى إصدار نموذج جديد، فإن حمل عمل الاستدلال الدفعي يلتقطه تلقائيا عند تنفيذه التالي. يسمح لك هذا بفصل عمليات توزيع النموذج عن أحمال عمل الاستدلال الدفعي.

import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)

يمكن أن تشير نقاط نهاية خدمة النموذج أيضا إلى إصدار نموذج بالاسم المستعار. يمكنك كتابة مهام سير عمل التوزيع للحصول على إصدار نموذج بالاسم المستعار وتحديث نقطة نهاية خدمة نموذج لخدمة هذا الإصدار، باستخدام النموذج الذي يخدم واجهة برمجة تطبيقات REST. على سبيل المثال:

import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)

تحميل إصدار النموذج حسب رقم الإصدار لأحمال عمل الاستدلال

يمكنك أيضا تحميل إصدارات النموذج حسب رقم الإصدار:

import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)

مشاركة النماذج عبر مساحات العمل

مشاركة النماذج مع المستخدمين في نفس المنطقة

طالما أن لديك الامتيازات المناسبة، يمكنك الوصول إلى النماذج في كتالوج Unity من أي مساحة عمل مرفقة بمخزن metastore الذي يحتوي على النموذج. على سبيل المثال، يمكنك الوصول إلى النماذج من الكتالوج prod في مساحة عمل التطوير، لتسهيل مقارنة النماذج المطورة حديثا بخط أساس الإنتاج.

للتعاون مع مستخدمين آخرين (مشاركة امتيازات الكتابة) على نموذج مسجل قمت بإنشائه، يجب منح ملكية النموذج لمجموعة تحتوي على نفسك والمستخدمين الذين ترغب في التعاون معهم. يجب أن يكون لدى USE CATALOG المتعاونين أيضا امتيازات و USE SCHEMA على الكتالوج والمخطط الذي يحتوي على النموذج. راجع امتيازات كتالوج Unity والكائنات القابلة للتأمين للحصول على التفاصيل.

مشاركة النماذج مع مستخدمين في منطقة أو حساب آخر

لمشاركة النماذج مع المستخدمين في مناطق أو حسابات أخرى، استخدم تدفق مشاركة Databricks-to-Databricks دلتا. راجع إضافة نماذج إلى مشاركة (للموفرين) والحصول على حق الوصول في نموذج Databricks-to-Databricks (للمستلمين). كمستلم، بعد إنشاء كتالوج من مشاركة، يمكنك الوصول إلى النماذج في هذا الكتالوج المشترك بنفس الطريقة مثل أي نموذج آخر في كتالوج Unity.

تعقب دورة حياة البيانات لنموذج في كتالوج Unity

إشعار

يتوفر دعم الجدول إلى دورة حياة النموذج في كتالوج Unity في MLflow 2.11.0 والإصدارات الأحدث.

عند تدريب نموذج على جدول في كتالوج Unity، يمكنك تتبع دورة حياة النموذج إلى مجموعة (مجموعات) البيانات الأولية التي تم تدريبها وتقييمها عليها. للقيام بذلك، استخدم mlflow.log_input. يؤدي هذا إلى حفظ معلومات جدول الإدخال مع تشغيل MLflow الذي أنشأ النموذج. يتم أيضا التقاط دورة حياة البيانات تلقائيا للنماذج التي تم تسجيلها باستخدام واجهات برمجة تطبيقات مخزن الميزات. راجع إدارة الميزات والنواة.

عند تسجيل النموذج في كتالوج Unity، يتم حفظ معلومات دورة الحياة تلقائيا وتكون مرئية في علامة تبويب دورة الحياة لواجهة مستخدم إصدار النموذج في مستكشف الكتالوج.

يبين الرمز التالي مثالاً.

import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor

# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
  columns = {
    'sepal length (cm)':'sepal_length',
    'sepal width (cm)':'sepal_width',
    'petal length (cm)':'petal_length',
    'petal width (cm)':'petal_width'},
  inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")

# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
    clf = RandomForestRegressor(n_estimators=100)
    clf.fit(X, y)
    mlflow.log_input(dataset, "training")
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_classifier",
    )

التحكم في الوصول إلى النماذج

في كتالوج Unity، النماذج المسجلة هي نوع فرعي للكائن FUNCTION القابل للتأمين. لمنح حق الوصول إلى نموذج مسجل في كتالوج Unity، يمكنك استخدام GRANT ON FUNCTION. للحصول على التفاصيل، راجع امتيازات كتالوج Unity والكائنات القابلة للتأمين. للحصول على أفضل الممارسات حول تنظيم النماذج عبر الكتالوجات والمخططات، راجع تنظيم بياناتك.

يمكنك تكوين أذونات النموذج برمجيا باستخدام واجهة برمجة تطبيقات Rest للمنح. عند تكوين أذونات النموذج، قم بتعيين securable_type إلى "FUNCTION" في طلبات واجهة برمجة تطبيقات REST. على سبيل المثال، استخدم PATCH /api/2.1/unity-catalog/permissions/function/{full_name} لتحديث أذونات النموذج المسجل.

عرض النماذج في واجهة المستخدم

الأذونات المطلوبة: لعرض نموذج مسجل وإصدارات نموذجه في واجهة المستخدم، تحتاج إلى EXECUTE امتياز على النموذج المسجل، بالإضافة إلى USE SCHEMA USE CATALOG امتيازات على المخطط والكتالوج الذي يحتوي على النموذج

يمكنك عرض وإدارة النماذج المسجلة وإصدارات النموذج في كتالوج Unity باستخدام مستكشف الكتالوج.

إعادة تسمية نموذج

الأذونات المطلوبة: مالك النموذج المسجل، CREATE_MODEL والامتياز على المخطط الذي يحتوي على النموذج المسجل، والامتيازات USE SCHEMA USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

لإعادة تسمية نموذج مسجل، استخدم أسلوب MLflow Client API rename_registered_model() :

client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")

نسخ إصدار نموذج

يمكنك نسخ إصدار نموذج من نموذج إلى آخر في كتالوج Unity.

نسخ إصدار نموذج باستخدام واجهة المستخدم

اتبع الخطوات التالية:

  1. من صفحة إصدار النموذج، انقر فوق نسخ هذا الإصدار في الزاوية العلوية اليسرى من واجهة المستخدم.

  2. حدد نموذج وجهة من القائمة المنسدلة وانقر فوق نسخ.

    مربع حوار نسخ إصدار النموذج

قد يستغرق نسخ نموذج وقتا. لمراقبة التقدم، انتقل إلى نموذج الوجهة في كتالوج Unity وقم بالتحديث بشكل دوري.

نسخ إصدار نموذج باستخدام واجهة برمجة التطبيقات

لنسخ إصدار نموذج، استخدم واجهة برمجة تطبيقات Python copy_model_version() الخاصة ب MLflow:

client = MlflowClient()
client.copy_model_version(
  "models:/<source-model-name>/<source-model-version>",
  "<destination-model-name>",
)

حذف نموذج أو إصدار نموذج

الأذونات المطلوبة: مالك النموذج المسجل، بالإضافة إلى USE SCHEMA والامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

يمكنك حذف نموذج مسجل أو إصدار نموذج داخل نموذج مسجل باستخدام واجهة مستخدم مستكشف الكتالوج أو واجهة برمجة التطبيقات.

تحذير

لا يمكنك التراجع عن هذا الإجراء. عند حذف نموذج، يتم حذف جميع البيانات الاصطناعية للنموذج المخزنة بواسطة كتالوج Unity وجميع بيانات التعريف المقترنة بالنموذج المسجل.

حذف إصدار نموذج أو نموذج باستخدام واجهة المستخدم

لحذف نموذج أو إصدار نموذج في كتالوج Unity، اتبع الخطوات التالية.

  1. في صفحة النموذج أو صفحة إصدار النموذج، انقر فوق قائمة قائمة كباب الكباب في الزاوية العلوية اليسرى.

    من صفحة النموذج:

    قائمة kebab لصفحة النموذج مع حذف

    من صفحة إصدار النموذج:

    قائمة kebab لصفحة إصدار النموذج مع حذف

  2. حدد حذف.

  3. يظهر حوار التأكيد. انقر فوق حذف للتأكيد.

حذف إصدار نموذج أو نموذج باستخدام واجهة برمجة التطبيقات

لحذف إصدار نموذج، استخدم أسلوب MLflow Client API delete_model_version() :

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

لحذف نموذج، استخدم أسلوب MLflow Client API delete_registered_model() :

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

استخدام العلامات على النماذج

العلامات هي أزواج قيم المفاتيح التي تقوم بإقرانها بالنماذج المسجلة وإصدارات النموذج، ما يسمح لك بتسمية وتصنيفها حسب الوظيفة أو الحالة. على سبيل المثال، يمكنك تطبيق علامة ذات مفتاح "task" وقيمة "question-answering" (معروضة في واجهة المستخدم ك task:question-answering) على النماذج المسجلة المخصصة لمهام الإجابة على الأسئلة. على مستوى إصدار النموذج، يمكنك وضع علامة على الإصدارات التي تخضع للتحقق من صحة ما قبل التوزيع مع validation_status:pending وتلك التي تم مسحها للتوزيع باستخدام validation_status:approved.

الأذونات المطلوبة: مالك أو لديه APPLY_TAG امتياز على النموذج المسجل، بالإضافة إلى USE SCHEMA الامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

راجع إضافة وتحديث العلامات باستخدام مستكشف الكتالوج حول كيفية تعيين العلامات وحذفها باستخدام واجهة المستخدم.

لتعيين العلامات وحذفها باستخدام واجهة برمجة تطبيقات عميل MLflow، راجع الأمثلة أدناه:

from mlflow import MlflowClient
client = MlflowClient()

# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")

# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")

# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")

# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")

يجب أن تفي كل من علامات إصدار النموذج والنموذج المسجلة بالقيود على مستوى النظام الأساسي.

لمزيد من التفاصيل حول واجهات برمجة تطبيقات عميل العلامة ، راجع وثائق MLflow API.

إضافة وصف (تعليقات) إلى نموذج أو إصدار نموذج

الأذونات المطلوبة: مالك النموذج المسجل، بالإضافة إلى USE SCHEMA والامتيازات USE CATALOG على المخطط والكتالوج الذي يحتوي على النموذج.

يمكنك تضمين وصف نصي لأي نموذج أو إصدار نموذج في كتالوج Unity. على سبيل المثال، يمكنك تقديم نظرة عامة على المشكلة أو معلومات حول المنهجية والخوارزمية المستخدمة.

بالنسبة للنماذج، لديك أيضا خيار استخدام التعليقات التي تم إنشاؤها الذكاء الاصطناعي. راجع إضافة تعليقات تم إنشاؤها الذكاء الاصطناعي إلى كائنات كتالوج Unity.

إضافة وصف إلى نموذج باستخدام واجهة المستخدم

لإضافة وصف لنموذج، يمكنك استخدام التعليقات التي تم إنشاؤها الذكاء الاصطناعي، أو يمكنك إدخال تعليقاتك الخاصة. يمكنك تحرير التعليقات التي تم إنشاؤها الذكاء الاصطناعي حسب الضرورة.

  • لإضافة تعليقات تم إنشاؤها تلقائيا، انقر فوق الزر الذكاء الاصطناعي إنشاء .
  • لإضافة تعليقاتك الخاصة، انقر فوق إضافة. أدخل تعليقاتك في مربع الحوار، وانقر فوق حفظ.

أزرار وصف نموذج uc

إضافة وصف إلى إصدار نموذج باستخدام واجهة المستخدم

لإضافة وصف إلى إصدار نموذج في كتالوج Unity، اتبع الخطوات التالية:

  1. في صفحة إصدار النموذج، انقر فوق أيقونة القلم الرصاص ضمن الوصف.

    أيقونة القلم الرصاص لإضافة تعليقات إلى إصدار نموذج

  2. أدخل تعليقاتك في مربع الحوار، وانقر فوق حفظ.

إضافة وصف إلى نموذج أو إصدار نموذج باستخدام واجهة برمجة التطبيقات

لتحديث وصف نموذج مسجل، استخدم أسلوب MLflow Client API update_registered_model() :

client = MlflowClient()
client.update_registered_model(
  name="<model-name>",
  description="<description>"
)

لتحديث وصف إصدار نموذج، استخدم أسلوب MLflow Client API update_model_version() :

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

نماذج القوائم والبحث

للحصول على قائمة بالنماذج المسجلة في كتالوج Unity، استخدم واجهة برمجة تطبيقات Python search_registered_models() الخاصة ب MLflow:

client=MlflowClient()
client.search_registered_models()

للبحث عن اسم نموذج معين والحصول على معلومات حول إصدارات هذا النموذج، استخدم search_model_versions():

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

إشعار

لا يتم دعم كافة حقول وعوامل تشغيل واجهة برمجة تطبيقات البحث للنماذج في كتالوج Unity. راجع القيود للحصول على التفاصيل.

تنزيل ملفات النموذج (حالة الاستخدام المتقدمة)

في معظم الحالات، لتحميل النماذج، يجب عليك استخدام واجهات برمجة تطبيقات MLflow مثل mlflow.pyfunc.load_model أو mlflow.<flavor>.load_model (على سبيل المثال، mlflow.transformers.load_model لنماذج HuggingFace).

في بعض الحالات قد تحتاج إلى تنزيل ملفات النموذج لتصحيح سلوك النموذج أو مشكلات تحميل النموذج. يمكنك تنزيل ملفات النموذج باستخدام mlflow.artifacts.download_artifacts، كما يلي:

import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)

ترقية نموذج عبر البيئات

توصي Databricks بنشر مسارات التعلم الآلي كتعليبة برمجية. وهذا يلغي الحاجة إلى تعزيز النماذج عبر البيئات، حيث يمكن إنتاج جميع نماذج الإنتاج من خلال سير عمل التدريب التلقائي في بيئة الإنتاج.

ومع ذلك، في بعض الحالات، قد يكون من المكلف جدا إعادة تدريب النماذج عبر البيئات. بدلا من ذلك، يمكنك نسخ إصدارات النموذج عبر النماذج المسجلة في كتالوج Unity للترويج لها عبر البيئات.

تحتاج إلى الامتيازات التالية لتنفيذ مثال التعليمات البرمجية أدناه:

  • USE CATALOG على الكتالوجات staging و prod .
  • USE SCHEMA على staging.ml_team المخططات و prod.ml_team .
  • EXECUTE في staging.ml_team.fraud_detection.

بالإضافة إلى ذلك، يجب أن تكون مالك النموذج prod.ml_team.fraud_detectionالمسجل .

يستخدم مقتطف التعليمات البرمجية copy_model_version التالي واجهة برمجة تطبيقات عميل MLflow المتوفرة في إصدار MLflow 2.8.0 والإصدارات الأحدث.

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

بعد أن يكون إصدار النموذج في بيئة الإنتاج، يمكنك إجراء أي تحقق ضروري قبل التوزيع. بعد ذلك، يمكنك وضع علامة على إصدار النموذج للنشر باستخدام الأسماء المستعارة.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

في المثال أعلاه، يمكن فقط للمستخدمين الذين يمكنهم القراءة من staging.ml_team.fraud_detection النموذج المسجل والكتابة إلى prod.ml_team.fraud_detection النموذج المسجل الترويج لنماذج التقسيم المرحلي إلى بيئة الإنتاج. يمكن للمستخدمين نفسهم أيضا استخدام الأسماء المستعارة لإدارة إصدارات النموذج التي يتم نشرها داخل بيئة الإنتاج. لا تحتاج إلى تكوين أي قواعد أو نهج أخرى لتنظيم ترقية النموذج ونشره.

يمكنك تخصيص هذا التدفق لتعزيز إصدار النموذج عبر بيئات متعددة تطابق الإعداد الخاص بك، مثل devو qaو prod. يتم فرض التحكم في الوصول كما تم تكوينه في كل بيئة.

مثال

يوضح هذا المثال كيفية استخدام النماذج في كتالوج Unity لإنشاء تطبيق التعلم الآلي.

نماذج في مثال كتالوج Unity

ترحيل مهام سير العمل والنماذج إلى كتالوج Unity

توصي Databricks باستخدام النماذج في كتالوج Unity لتحسين الحوكمة، والمشاركة السهلة عبر مساحات العمل والبيئات، وسير عمل MLOps أكثر مرونة. يقارن الجدول قدرات Workspace Model Registry وUnity Catalog.

الإمكانية سجل نموذج مساحة العمل (قديم) النماذج في كتالوج Unity (مستحسن)
إصدارات النموذج المرجعي حسب الأسماء المستعارة المسماة Model Registry Stages: انقل إصدارات النموذج إلى واحدة من أربع مراحل ثابتة للإشارة إليها حسب تلك المرحلة. يتعذر إعادة تسمية المراحل أو إضافتها. الأسماء المستعارة لسجل النموذج: إنشاء ما يصل إلى 10 مراجع مسماة مخصصة وقابلة لإعادة التعيين إلى إصدارات النموذج لكل نموذج مسجل.
إنشاء بيئات خاضعة للتحكم بالوصول للنماذج Model Registry Stages: استخدم المراحل داخل نموذج مسجل واحد للإشارة إلى بيئة إصدارات النموذج الخاصة به، مع عناصر التحكم في الوصول لمرحلتين فقط من المراحل الثابتة الأربع (Staging و Production). النماذج المسجلة: إنشاء نموذج مسجل لكل بيئة في سير عمل MLOps الخاص بك، باستخدام مساحات أسماء ثلاثية المستوى وأذونات كتالوج Unity للتعبير عن الحوكمة.
ترقية النماذج عبر البيئات (توزيع النموذج) transition_model_version_stage() استخدم واجهة برمجة تطبيقات عميل MLflow لنقل إصدار نموذج إلى مرحلة مختلفة، مما قد يؤدي إلى قطع مهام سير العمل التي تشير إلى المرحلة السابقة. copy_model_version() استخدم واجهة برمجة تطبيقات عميل MLflow لنسخ إصدار نموذج من نموذج مسجل إلى آخر.
الوصول إلى النماذج ومشاركتها عبر مساحات العمل تصدير النماذج واستيرادها يدويا عبر مساحات العمل، أو تكوين الاتصالات بسجلات النماذج البعيدة باستخدام رموز الوصول الشخصية والنطاقات السرية لمساحة العمل. الوصول خارج الصندوق إلى النماذج عبر مساحات العمل في نفس الحساب. لا يلزم وجود التكوين.
تكوين الأذونات تعيين الأذونات على مستوى مساحة العمل. تعيين الأذونات على مستوى الحساب، والذي يطبق حوكمة متسقة عبر مساحات العمل.
الوصول إلى النماذج في Databricks markplace غير متوفر. تحميل النماذج من سوق Databricks إلى مخزن بيانات تعريف كتالوج Unity والوصول إليها عبر مساحات العمل.

تصف المقالات المرتبطة أدناه كيفية ترحيل مهام سير العمل (تدريب النموذج ووظائف الاستدلال الدفعي) والنماذج من سجل نموذج مساحة العمل إلى كتالوج Unity.

القيود

  • المراحل غير مدعومة للنماذج في كتالوج Unity. توصي Databricks باستخدام مساحة الاسم ثلاثية المستويات في كتالوج Unity للتعبير عن البيئة التي يوجد بها النموذج، واستخدام الأسماء المستعارة لتعزيز النماذج للتوزيع. راجع ترقية نموذج عبر البيئات للحصول على التفاصيل.
  • خطافات الويب غير مدعومة للنماذج في كتالوج Unity. راجع البدائل المقترحة في دليل الترقية.
  • بعض حقول وعوامل تشغيل واجهة برمجة تطبيقات البحث غير مدعومة للنماذج في كتالوج Unity. يمكن التخفيف من هذا عن طريق استدعاء واجهات برمجة تطبيقات البحث باستخدام عوامل التصفية المدعومة ومسح النتائج ضوئيا. فيما يلي بعض الأمثلة:
    • order_by المعلمة غير معتمدة في واجهات برمجة تطبيقات العميل search_model_versions أو search_registered_models.
    • عوامل التصفية المستندة إلى العلامة (tags.mykey = 'myvalue') غير مدعومة ل search_model_versions أو search_registered_models.
    • عوامل التشغيل الأخرى غير المساواة الدقيقة (على سبيل المثال، LIKE، ، !=ILIKE) غير مدعومة ل search_model_versions أو search_registered_models.
    • البحث عن النماذج المسجلة حسب الاسم (على سبيل المثال، MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") غير معتمد. لإحضار نموذج مسجل معين بالاسم، استخدم get_registered_model.
  • لا يتم دعم إعلامات البريد الإلكتروني ومؤشرات ترابط مناقشة التعليقات على النماذج المسجلة وإصدارات النموذج في كتالوج Unity.
  • سجل النشاط غير مدعوم للنماذج في كتالوج Unity. لتعقب النشاط على النماذج في كتالوج Unity، استخدم سجلات التدقيق.
  • search_registered_models قد ترجع نتائج قديمة للنماذج المشتركة من خلال Delta Sharing. لضمان أحدث النتائج، استخدم Databricks CLI أو SDK لسرد النماذج في مخطط.