إدارة دورة حياة النموذج في كتالوج Unity
هام
- توثق هذه المقالة النماذج في كتالوج Unity، والتي يوصي بها Databricks لتنظيم النماذج ونشرها. إذا لم يتم تمكين مساحة العمل الخاصة بك كتالوج Unity، فلن تتوفر الوظيفة على هذه الصفحة. بدلا من ذلك، راجع إدارة دورة حياة النموذج باستخدام سجل نموذج مساحة العمل (قديم) . للحصول على إرشادات حول كيفية الترقية من Workspace Model Registry إلى كتالوج Unity، راجع ترحيل مهام سير العمل والنماذج إلى كتالوج Unity.
- لا تتوفر النماذج في كتالوج Unity في مناطق Azure Government.
توضح هذه المقالة كيفية استخدام النماذج في كتالوج Unity كجزء من سير عمل التعلم الآلي لإدارة دورة الحياة الكاملة لنماذج التعلم الآلي. يوفر Databricks إصدارا مستضافا من سجل نموذج MLflow في كتالوج Unity. توسع النماذج في كتالوج Unity فوائد كتالوج Unity لتشمل نماذج التعلم الآلي، بما في ذلك التحكم المركزي في الوصول والتدقيق والنسل واكتشاف النموذج عبر مساحات العمل. تتوافق النماذج في كتالوج Unity مع عميل MLflow Python مفتوح المصدر.
للحصول على نظرة عامة على مفاهيم Model Registry، راجع إدارة دورة حياة التعلم الآلي باستخدام MLflow.
المتطلبات
يجب تمكين كتالوج Unity في مساحة العمل الخاصة بك. راجع بدء استخدام كتالوج Unity لإنشاء Metastore كتالوج Unity وتمكينه في مساحة عمل وإنشاء كتالوج. إذا لم يتم تمكين كتالوج Unity، فاستخدم سجل نموذج مساحة العمل.
يجب استخدام مورد حساب لديه حق الوصول إلى كتالوج Unity. بالنسبة لأحمال عمل التعلم الآلي، هذا يعني أن وضع الوصول للحساب يجب أن يكون مستخدما واحدا. لمزيد من المعلومات، راجع أوضاع Access.
لإنشاء نماذج مسجلة جديدة، تحتاج إلى الامتيازات التالية:
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",
)
تسجيل نموذج باستخدام واجهة المستخدم
اتبع الخطوات التالية:
من صفحة تشغيل التجربة، انقر فوق Register model في الزاوية العلوية اليسرى من واجهة المستخدم.
في مربع الحوار، حدد كتالوج Unity، وحدد نموذج وجهة من القائمة المنسدلة.
انقر فوق تسجيل.
يمكن أن يستغرق تسجيل نموذج وقتا. لمراقبة التقدم، انتقل إلى نموذج الوجهة في كتالوج 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.
نسخ إصدار نموذج باستخدام واجهة المستخدم
اتبع الخطوات التالية:
من صفحة إصدار النموذج، انقر فوق نسخ هذا الإصدار في الزاوية العلوية اليسرى من واجهة المستخدم.
حدد نموذج وجهة من القائمة المنسدلة وانقر فوق نسخ.
قد يستغرق نسخ نموذج وقتا. لمراقبة التقدم، انتقل إلى نموذج الوجهة في كتالوج 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، اتبع الخطوات التالية.
في صفحة النموذج أو صفحة إصدار النموذج، انقر فوق قائمة الكباب في الزاوية العلوية اليسرى.
من صفحة النموذج:
من صفحة إصدار النموذج:
حدد حذف.
يظهر حوار التأكيد. انقر فوق حذف للتأكيد.
حذف إصدار نموذج أو نموذج باستخدام واجهة برمجة التطبيقات
لحذف إصدار نموذج، استخدم أسلوب 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.
إضافة وصف إلى نموذج باستخدام واجهة المستخدم
لإضافة وصف لنموذج، يمكنك استخدام التعليقات التي تم إنشاؤها الذكاء الاصطناعي، أو يمكنك إدخال تعليقاتك الخاصة. يمكنك تحرير التعليقات التي تم إنشاؤها الذكاء الاصطناعي حسب الضرورة.
- لإضافة تعليقات تم إنشاؤها تلقائيا، انقر فوق الزر الذكاء الاصطناعي إنشاء .
- لإضافة تعليقاتك الخاصة، انقر فوق إضافة. أدخل تعليقاتك في مربع الحوار، وانقر فوق حفظ.
إضافة وصف إلى إصدار نموذج باستخدام واجهة المستخدم
لإضافة وصف إلى إصدار نموذج في كتالوج Unity، اتبع الخطوات التالية:
في صفحة إصدار النموذج، انقر فوق أيقونة القلم الرصاص ضمن الوصف.
أدخل تعليقاتك في مربع الحوار، وانقر فوق حفظ.
إضافة وصف إلى نموذج أو إصدار نموذج باستخدام واجهة برمجة التطبيقات
لتحديث وصف نموذج مسجل، استخدم أسلوب 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
توصي 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 لسرد النماذج في مخطط.