إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تسجيل عوامل الذكاء الاصطناعي باستخدام إطار عمل عامل الذكاء الاصطناعي الفسيفساء. تسجيل عامل هو أساس عملية التطوير. يسجل التسجيل "نقطة زمنية" من التعليمات البرمجية للعامل وتكوينه حتى تتمكن من تقييم جودة التكوين.
المتطلبات
إنشاء عامل الذكاء الاصطناعي قبل تسجيله.
التسجيل المستند إلى التعليمات البرمجية مقابل التسجيل المستند إلى التسلسل
يمكنك استخدام تسجيل MLflow المستند إلى التعليمات البرمجية أو تسجيل MLflow المستند إلى التسلسل. توصي Databricks باستخدام التسجيل المستند إلى التعليمات البرمجية.
تسجيل MLflow المستند إلى التعليمات البرمجية: يتم التقاط التعليمات البرمجية للسلسلة كملف Python. يتم التقاط بيئة Python ك قائمة بالحزم. عند نشر السلسلة، تتم استعادة بيئة Python، ويتم تنفيذ التعليمات البرمجية للسلسلة لتحميل السلسلة في الذاكرة بحيث يمكن استدعاؤها عند استدعاء نقطة النهاية.
تسجيل MLflow المستند إلى التسلسل: يتم تسلسل التعليمات البرمجية للسلسلة والحالة الحالية في بيئة Python إلى القرص، وغالبا ما تستخدم مكتبات مثل pickle أو joblib. عند نشر السلسلة، تتم استعادة بيئة Python، ويتم تحميل الكائن التسلسلي في الذاكرة بحيث يمكن استدعاؤه عند استدعاء نقطة النهاية.
يوضح الجدول مزايا وعيوب كل أسلوب.
| الطريقة | المزايا | أضرار |
|---|---|---|
| تسجيل MLflow المستند إلى التعليمات البرمجية | - يتغلب على القيود المتأصلة في التسلسل، والتي لا تدعمها العديد من مكتبات GenAI الشائعة. - حفظ نسخة من التعليمات البرمجية الأصلية للرجوع إليها لاحقا. - لا حاجة لإعادة هيكلة التعليمات البرمجية الخاصة بك إلى كائن واحد يمكن تسلسله. |
log_model(...) يجب استدعاء من دفتر ملاحظات مختلف عن التعليمات البرمجية للسلسلة (تسمى دفتر ملاحظات برنامج التشغيل). |
| تسجيل MLflow المستند إلى التسلسل | log_model(...) يمكن استدعاء من نفس دفتر الملاحظات حيث يتم تعريف النموذج. |
- التعليمات البرمجية الأصلية غير متوفرة. - يجب أن تدعم كافة المكتبات والكائنات المستخدمة في السلسلة التسلسل. |
للتسجيل المستند إلى التعليمات البرمجية، يجب أن تكون التعليمات البرمجية التي تسجل الوكيل أو السلسلة في دفتر ملاحظات منفصل عن التعليمات البرمجية للسلسلة. يسمى دفتر الملاحظات هذا دفتر ملاحظات برنامج تشغيل. للحصول على مثال لدفتر الملاحظات، راجع أمثلة على دفاتر الملاحظات.
التسجيل المستند إلى التعليمات البرمجية باستخدام LangChain
- إنشاء دفتر ملاحظات أو ملف Python باستخدام التعليمات البرمجية الخاصة بك. لأغراض هذا المثال، يسمى
chain.pyدفتر الملاحظات أو الملف . يجب أن يحتوي دفتر الملاحظات أو الملف على سلسلة LangChain، يشار إليها هنا باسمlc_chain. - تضمين
mlflow.models.set_model(lc_chain)في دفتر الملاحظات أو الملف. - إنشاء دفتر ملاحظات جديد ليكون بمثابة دفتر ملاحظات برنامج التشغيل (يسمى
driver.pyفي هذا المثال). - في دفتر ملاحظات برنامج التشغيل، استخدم
mlflow.lang_chain.log_model(lc_model=”/path/to/chain.py”)لتشغيلchain.pyالنتائج وتسجيلها إلى نموذج MLflow. - نشر النموذج. راجع نشر عامل لتطبيق الذكاء الاصطناعي التوليدي.
قد يعتمد نشر العامل الخاص بك على موارد Databricks الأخرى مثل فهرس بحث المتجهات ونقاط نهاية خدمة النموذج. بالنسبة لوكلاء LangChain:
- يستنتج MLflow
log_modelالتبعيات المطلوبة من قبل السلسلة ويسجلها إلىMLmodelالملف في أداة النموذج المسجل. بدءا من Mlflow الإصدار 2.17.0، يمكنك تجاوز هذه التبعيات المستنتجة. راجع تحديد الموارد لعامل PyFunc أو LangChain. - أثناء النشر،
databricks.agents.deployينشئ تلقائيا رموز M2M OAuth المميزة المطلوبة للوصول إلى تبعيات الموارد المستنتجة هذه والتواصل معها.
- يستنتج MLflow
- عند تحميل بيئة التقديم،
chain.pyيتم تنفيذها. - عند تقديم طلب خدمة،
lc_chain.invoke(...)يتم استدعاؤه.
import mlflow
code_path = "/Workspace/Users/first.last/chain.py"
config_path = "/Workspace/Users/first.last/config.yml"
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using LangChain
with mlflow.start_run():
logged_chain_info = mlflow.langchain.log_model(
lc_model=code_path,
model_config=config_path, # If you specify this parameter, this is the configuration that is used for training the model. The development_config is overwritten.
artifact_path="chain", # This string is used as the path inside the MLflow model where artifacts are stored
input_example=input_example, # Must be a valid input to your chain
example_no_conversion=True, # Required
)
print(f"MLflow Run: {logged_chain_info.run_id}")
print(f"Model URI: {logged_chain_info.model_uri}")
# To verify that the model has been logged correctly, load the chain and call `invoke`:
model = mlflow.langchain.load_model(logged_chain_info.model_uri)
model.invoke(example)
التسجيل المستند إلى التعليمات البرمجية باستخدام PyFunc
- إنشاء دفتر ملاحظات أو ملف Python باستخدام التعليمات البرمجية الخاصة بك. لأغراض هذا المثال، يسمى
chain.pyدفتر الملاحظات أو الملف . يجب أن يحتوي دفتر الملاحظات أو الملف على فئة PyFunc، يشار إليها هنا باسمPyFuncClass. - تضمين
mlflow.models.set_model(PyFuncClass)في دفتر الملاحظات أو الملف. - إنشاء دفتر ملاحظات جديد ليكون بمثابة دفتر ملاحظات برنامج التشغيل (يسمى
driver.pyفي هذا المثال). - في دفتر ملاحظات برنامج التشغيل، استخدم
mlflow.pyfunc.log_model(python_model=”/path/to/chain.py”, resources=”/path/to/resources.yaml”)لتشغيلchain.pyالنتائج وتسجيلها إلى نموذج MLflow.resourcesتعلن المعلمة عن أي موارد مطلوبة لخدمة النموذج مثل فهرس بحث متجه أو نقطة نهاية خدمة تخدم نموذج أساسي. للحصول على مثال لملف الموارد ل PyFunc، راجع تحديد الموارد لعامل PyFunc أو LangChain. - نشر النموذج. راجع نشر عامل لتطبيق الذكاء الاصطناعي التوليدي.
- عند تحميل بيئة التقديم،
chain.pyيتم تنفيذها. - عند تقديم طلب خدمة،
PyFuncClass.predict(...)يتم استدعاؤه.
import mlflow
code_path = "/Workspace/Users/first.last/chain.py"
config_path = "/Workspace/Users/first.last/config.yml"
input_example = {
"messages": [
{
"role": "user",
"content": "What is Retrieval-augmented Generation?",
}
]
}
# example using PyFunc model
resources_path = "/Workspace/Users/first.last/resources.yml"
with mlflow.start_run():
logged_chain_info = mlflow.pyfunc.log_model(
python_model=chain_notebook_path,
artifact_path="chain",
input_example=input_example,
resources=resources_path,
example_no_conversion=True,
)
print(f"MLflow Run: {logged_chain_info.run_id}")
print(f"Model URI: {logged_chain_info.model_uri}")
# To verify that the model has been logged correctly, load the chain and call `invoke`:
model = mlflow.pyfunc.load_model(logged_chain_info.model_uri)
model.invoke(example)
تحديد الموارد لعامل PyFunc أو LangChain
يمكنك تحديد الموارد، مثل فهرس بحث متجه ونقطة نهاية خدمة، المطلوبة لخدمة النموذج.
بالنسبة إلى LangChain، يتم الكشف عن الموارد تلقائيا وتسجيلها مع النموذج باستخدام نهج أفضل جهد. بدءا من الإصدار 2.17.0 من MLflow، يمكنك تجاوز هذه الموارد المستنتجة تلقائيا باستخدام تعليمات برمجية مشابهة لتلك الموضحة أدناه. يوصى بذلك لحالات استخدام الإنتاج لأنه يسمح لك بالتأكد من تسجيل العوامل باستخدام التبعيات الضرورية.
عند نشر pyfunc عامل بنكهة، يجب إضافة أي تبعيات موارد للعامل المنشور يدويا. يتم إنشاء رمز OAuth المميز M2M مع الوصول إلى جميع الموارد المحددة في المعلمة resources وتوفيرها إلى العامل المنشور.
إشعار
يمكنك تجاوز الموارد التي تمتلك نقطة النهاية إذنا لها عن طريق تحديد الموارد يدويا عند تسجيل السلسلة.
تحدد التعليمات البرمجية التالية التبعيات باستخدام المعلمة resources .
import mlflow
from mlflow.models.resources import (
DatabricksFunction,
DatabricksServingEndpoint,
DatabricksSQLWarehouse,
DatabricksVectorSearchIndex,
)
with mlflow.start_run():
logged_chain_info = mlflow.pyfunc.log_model(
python_model=chain_notebook_path,
artifact_path="chain",
input_example=input_example,
example_no_conversion=True,
resources=[
DatabricksServingEndpoint(endpoint_name="databricks-mixtral-8x7b-instruct"),
DatabricksServingEndpoint(endpoint_name="databricks-bge-large-en"),
DatabricksVectorSearchIndex(index_name="prod.agents.databricks_docs_index"),
DatabricksSQLWarehouse(warehouse_id="your_warehouse_id"),
DatabricksFunction(function_name="ml.tools.python_exec"),
]
)
يمكنك أيضا إضافة موارد عن طريق تحديدها في resources.yaml ملف. يمكنك الرجوع إلى مسار الملف هذا في المعلمة resources . يتم إنشاء رمز OAuth المميز M2M مع الوصول إلى جميع الموارد المحددة في resources.yaml ويتم توفيره إلى العامل المنشور.
فيما يلي مثال resources.yaml على ملف يحدد نقاط نهاية خدمة النموذج وفهرس بحث متجه.
api_version: "1"
databricks:
vector_search_index:
- name: "catalog.schema.my_vs_index"
serving_endpoint:
- name: databricks-dbrx-instruct
- name: databricks-bge-large-en
تسجيل السلسلة في كتالوج Unity
قبل نشر السلسلة، يجب عليك تسجيل السلسلة في كتالوج Unity. عند تسجيل السلسلة، يتم حزمها كنموذج في كتالوج Unity، ويمكنك استخدام أذونات كتالوج Unity للتخويل للموارد في السلسلة.
import mlflow
mlflow.set_registry_uri("databricks-uc")
catalog_name = "test_catalog"
schema_name = "schema"
model_name = "chain_name"
model_name = catalog_name + "." + schema_name + "." + model_name
uc_model_info = mlflow.register_model(model_uri=logged_chain_info.model_uri, name=model_name)
الخطوات التالية
- إضافة تتبعات إلى عامل الذكاء الاصطناعي.
- نشر عامل الذكاء الاصطناعي.