مشاركة عبر


تسجيل وتسجيل وكلاء الذكاء الاصطناعي

هام

هذه الميزة في المعاينة العامة.

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

المتطلبات

إنشاء عامل الذكاء الاصطناعي قبل تسجيله.

التسجيل المستند إلى التعليمات البرمجية مقابل التسجيل المستند إلى التسلسل

يمكنك استخدام تسجيل MLflow المستند إلى التعليمات البرمجية أو تسجيل MLflow المستند إلى التسلسل. توصي Databricks باستخدام التسجيل المستند إلى التعليمات البرمجية.

تسجيل MLflow المستند إلى التعليمات البرمجية: يتم التقاط التعليمات البرمجية للسلسلة كملف Python. يتم التقاط بيئة Python ك قائمة بالحزم. عند نشر السلسلة، تتم استعادة بيئة Python، ويتم تنفيذ التعليمات البرمجية للسلسلة لتحميل السلسلة في الذاكرة بحيث يمكن استدعاؤها عند استدعاء نقطة النهاية.

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

يوضح الجدول مزايا وعيوب كل أسلوب.

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

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

التسجيل المستند إلى التعليمات البرمجية باستخدام LangChain

  1. إنشاء دفتر ملاحظات أو ملف Python باستخدام التعليمات البرمجية الخاصة بك. لأغراض هذا المثال، يسمى chain.pyدفتر الملاحظات أو الملف . يجب أن يحتوي دفتر الملاحظات أو الملف على سلسلة LangChain، يشار إليها هنا باسم lc_chain.
  2. تضمين mlflow.models.set_model(lc_chain) في دفتر الملاحظات أو الملف.
  3. إنشاء دفتر ملاحظات جديد ليكون بمثابة دفتر ملاحظات برنامج التشغيل (يسمى driver.py في هذا المثال).
  4. في دفتر ملاحظات برنامج التشغيل، استخدم mlflow.lang_chain.log_model(lc_model=”/path/to/chain.py”)لتشغيل chain.py النتائج وتسجيلها إلى نموذج MLflow.
  5. نشر النموذج. راجع نشر عامل لتطبيق الذكاء الاصطناعي التوليدي. قد يعتمد نشر العامل الخاص بك على موارد Databricks الأخرى مثل فهرس بحث المتجهات ونقاط نهاية خدمة النموذج. بالنسبة لوكلاء LangChain:
    • يستنتج MLflow log_model التبعيات المطلوبة من قبل السلسلة ويسجلها إلى MLmodel الملف في أداة النموذج المسجل. بدءا من Mlflow الإصدار 2.17.0، يمكنك تجاوز هذه التبعيات المستنتجة. راجع تحديد الموارد لعامل PyFunc أو LangChain.
    • أثناء النشر، databricks.agents.deploy ينشئ تلقائيا رموز M2M OAuth المميزة المطلوبة للوصول إلى تبعيات الموارد المستنتجة هذه والتواصل معها.
  6. عند تحميل بيئة التقديم، chain.py يتم تنفيذها.
  7. عند تقديم طلب خدمة، 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

  1. إنشاء دفتر ملاحظات أو ملف Python باستخدام التعليمات البرمجية الخاصة بك. لأغراض هذا المثال، يسمى chain.pyدفتر الملاحظات أو الملف . يجب أن يحتوي دفتر الملاحظات أو الملف على فئة PyFunc، يشار إليها هنا باسم PyFuncClass.
  2. تضمين mlflow.models.set_model(PyFuncClass) في دفتر الملاحظات أو الملف.
  3. إنشاء دفتر ملاحظات جديد ليكون بمثابة دفتر ملاحظات برنامج التشغيل (يسمى driver.py في هذا المثال).
  4. في دفتر ملاحظات برنامج التشغيل، استخدم mlflow.pyfunc.log_model(python_model=”/path/to/chain.py”, resources=”/path/to/resources.yaml”) لتشغيل chain.py النتائج وتسجيلها إلى نموذج MLflow. resources تعلن المعلمة عن أي موارد مطلوبة لخدمة النموذج مثل فهرس بحث متجه أو نقطة نهاية خدمة تخدم نموذج أساسي. للحصول على مثال لملف الموارد ل PyFunc، راجع تحديد الموارد لعامل PyFunc أو LangChain.
  5. نشر النموذج. راجع نشر عامل لتطبيق الذكاء الاصطناعي التوليدي.
  6. عند تحميل بيئة التقديم، chain.py يتم تنفيذها.
  7. عند تقديم طلب خدمة، 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)

الخطوات التالية