التدريب
الوحدة النمطية
تسجيل نموذج MLflow في Azure التعلم الآلي - Training
تعرف على كيفية تسجيل نموذج Mlflow في Azure التعلم الآلي.
لم يعد هذا المتصفح مدعومًا.
بادر بالترقية إلى Microsoft Edge للاستفادة من أحدث الميزات والتحديثات الأمنية والدعم الفني.
هام
توضح هذه المقالة كيفية استخدام النماذج في كتالوج 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.
يمكنك أيضا استخدام النماذج في كتالوج Unity على Databricks Runtime 11.3 LTS وما فوق عن طريق تثبيت أحدث إصدار من عميل MLflow Python في دفتر الملاحظات الخاص بك، باستخدام التعليمات البرمجية التالية.
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
إذا كان الكتالوج الافتراضي لمساحة العمل في كتالوج 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 باستخدام الأمر الموضح أعلاه.
الأذونات المطلوبة: لإنشاء نموذج مسجل جديد، تحتاج إلى CREATE_MODEL
الامتيازات و USE SCHEMA
على المخطط المرفق، والامتياز USE CATALOG
على الكتالوج المرفق. لإنشاء إصدارات نموذج جديدة ضمن نموذج مسجل، يجب أن تكون مالك النموذج المسجل وأن يكون لديك USE SCHEMA
وامتيازات USE CATALOG
على المخطط والكتالوج الذي يحتوي على النموذج.
يجب أن يكون لإصدارات نموذج التعلم الآلي في UC توقيع نموذج. إذا لم تكن تقوم بالفعل بتسجيل نماذج MLflow بالتوقيعات في أحمال عمل تدريب النموذج، يمكنك إما:
mlflow.<flavor>.log_model
، ويتم استنتاج توقيع النموذج تلقائيا. لمزيد من المعلومات، راجع وثائق MLflow.بعد ذلك، مرر اسم النموذج ثلاثي المستويات إلى واجهات برمجة تطبيقات MLflow، في النموذج <catalog>.<schema>.<model>
.
تقوم الأمثلة في هذا القسم بإنشاء نماذج والوصول إليها في ml_team
المخطط ضمن الكتالوج prod
.
تنشئ أمثلة تدريب النموذج في هذا القسم إصدار نموذج جديد وتسجله في الكتالوج prod
. لا يعني استخدام الكتالوج prod
بالضرورة أن إصدار النموذج يخدم حركة مرور الإنتاج. يعكس الكتالوج والمخطط والنموذج المسجل لإصدار النموذج بيئته (prod
) وقواعد الحوكمة المقترنة به (على سبيل المثال، يمكن إعداد الامتيازات بحيث يمكن للمسؤولين فقط الحذف من الكتالوج prod
)، ولكن ليس حالة النشر الخاصة به. لإدارة حالة النشر، استخدم الأسماء المستعارة للنموذج.
لتسجيل نموذج، استخدم أسلوب 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"
)
يتوفر دعم التواقيع المستنتجة تلقائيا في 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 في 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 لإنشاء تطبيق التعلم الآلي.
توصي 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.
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.search_registered_models
قد ترجع نتائج قديمة للنماذج المشتركة من خلال Delta Sharing. لضمان أحدث النتائج، استخدم Databricks CLI أو SDK لسرد النماذج في مخطط.التدريب
الوحدة النمطية
تسجيل نموذج MLflow في Azure التعلم الآلي - Training
تعرف على كيفية تسجيل نموذج Mlflow في Azure التعلم الآلي.
الوثائق
إدارة دورة حياة النموذج باستخدام Workspace Model Registry (قديم) - Azure Databricks
تعرف على كيفية إدارة دورة حياة نماذج MLflow في سجل نموذج مساحة العمل (قديم).
تعقب التعلم الآلي وتشغيل التدريب على التعلم العميق - Azure Databricks
تعرف على التجارب وتتبع عمليات تشغيل التدريب على التعلم الآلي باستخدام MLflow.
Databricks Autologging - Azure Databricks
تعرف على Azure Databricks Autologging باستخدام MLflow، وهو حل بدون تعليمات برمجية يوسع حل التسجيل التلقائي ل MLflow لتتبع تجارب التدريب على التعلم الآلي.