ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

بيانات تعريف ML

ML Metadata (MLMD) عبارة عن مكتبة لتسجيل واسترداد البيانات الوصفية المرتبطة بسير عمل مطور ML وعالم البيانات. يعد MLMD جزءًا لا يتجزأ من TensorFlow Extended (TFX) ، ولكنه مصمم بحيث يمكن استخدامه بشكل مستقل.

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

يساعدك MLMD على فهم وتحليل جميع الأجزاء المترابطة لخط أنابيب ML الخاص بك بدلاً من تحليلها بشكل منفصل ويمكن أن تساعدك في الإجابة عن الأسئلة حول خط أنابيب ML الخاص بك مثل:

  • ما مجموعة البيانات التي تدرب عليها النموذج؟
  • ما هي المعلمات الفائقة المستخدمة لتدريب النموذج؟
  • ما هو مسار خط الأنابيب الذي أنشأ النموذج؟
  • ما هو مسار التدريب الذي أدى إلى هذا النموذج؟
  • ما هو إصدار TensorFlow الذي أنشأ هذا النموذج؟
  • متى تم دفع النموذج الفاشل؟

مخزن البيانات الوصفية

يسجل MLMD الأنواع التالية من البيانات الوصفية في قاعدة بيانات تسمى Metadata Store .

  1. بيانات وصفية حول القطع الأثرية التي تم إنشاؤها من خلال مكونات / خطوات خطوط أنابيب ML
  2. بيانات وصفية حول عمليات تنفيذ هذه المكونات / الخطوات
  3. البيانات الوصفية حول خطوط الأنابيب ومعلومات النسب المرتبطة بها

يوفر متجر البيانات الوصفية واجهات برمجة التطبيقات (API) لتسجيل واسترداد البيانات الوصفية من وإلى الواجهة الخلفية للتخزين. الواجهة الخلفية للتخزين قابلة للتوصيل ويمكن تمديدها. يوفر MLMD تطبيقات مرجعية لـ SQLite (التي تدعم الذاكرة الداخلية والقرص) و MySQL خارج الصندوق.

يُظهر هذا الرسم نظرة عامة عالية المستوى على المكونات المختلفة التي تشكل جزءًا من MLMD.

نظرة عامة على بيانات تعريف ML

خلفيات تخزين البيانات الوصفية وتخزين تكوين الاتصال

يتلقى كائن MetadataStore تكوين اتصال يتوافق مع الواجهة الخلفية للتخزين المستخدمة.

  • توفر قاعدة البيانات المزيفة قاعدة بيانات في الذاكرة (باستخدام SQLite) لإجراء التجارب السريعة والتشغيل المحلي. يتم حذف قاعدة البيانات عند إتلاف كائن المخزن.
import ml_metadata as mlmd
from ml_metadata.proto import metadata_store_pb2

connection_config = metadata_store_pb2.ConnectionConfig()
connection_config.fake_database.SetInParent() # Sets an empty fake database proto.
store = metadata_store.MetadataStore(connection_config)
  • سكليتي يقرأ ويكتب الملفات من القرص.
connection_config = metadata_store_pb2.ConnectionConfig()
connection_config.sqlite.filename_uri = '...'
connection_config.sqlite.connection_mode = 3 # READWRITE_OPENCREATE
store = metadata_store.MetadataStore(connection_config)
  • الخلية يصل إلى خادم ماي.
connection_config = metadata_store_pb2.ConnectionConfig()
connection_config.mysql.host = '...'
connection_config.mysql.port = '...'
connection_config.mysql.database = '...'
connection_config.mysql.user = '...'
connection_config.mysql.password = '...'
store = metadata_store.MetadataStore(connection_config)

نموذج البيانات

يستخدم متجر البيانات الوصفية نموذج البيانات التالي لتسجيل واسترداد البيانات الوصفية من خلفية التخزين.

  • يصف ArtifactType نوع الأداة وخصائصها المخزنة في مخزن البيانات الأولية. يمكنك تسجيل هذه الأنواع على الفور باستخدام مخزن البيانات الوصفية في رمز ، أو يمكنك تحميلها في المتجر من تنسيق متسلسل. بمجرد تسجيل نوع ، يصبح تعريفه متاحًا طوال عمر المتجر.
  • يصف Artifact محددًا من ArtifactType وخصائصه المكتوبة في مخزن البيانات الأولية.
  • يصف ExecutionType نوع المكون أو الخطوة في سير العمل ، ومعلمات وقت التشغيل الخاصة به.
  • Execution هو سجل تشغيل مكون أو خطوة في سير عمل ML ومعلمات وقت التشغيل. يمكن اعتبار التنفيذ كمثيل لـ ExecutionType . يتم تسجيل عمليات التنفيذ عند تشغيل خط أنابيب أو خطوة ML.
  • Event هو سجل للعلاقة بين المصنوعات اليدوية وعمليات التنفيذ. عندما يحدث التنفيذ ، تسجل الأحداث كل قطعة أثرية استخدمها التنفيذ وكل قطعة أثرية تم إنتاجها. تسمح هذه السجلات بتتبع النسب خلال سير العمل. من خلال النظر في جميع الأحداث ، يعرف MLMD عمليات الإعدام التي حدثت وما هي القطع الأثرية التي تم إنشاؤها نتيجة لذلك. يمكن أن يتكرر MLMD مرة أخرى من أي قطعة أثرية إلى كافة مدخلات المنبع.
  • يصف ContextType نوعًا من المجموعة المفاهيمية للعناصر والتنفيذات في سير العمل ، وخصائصه الهيكلية. على سبيل المثال: المشاريع ، خطوط الأنابيب ، التجارب ، الملاك ، إلخ.
  • و Context هو مثيل ContextType . يلتقط المعلومات المشتركة داخل المجموعة. على سبيل المثال: اسم المشروع ، ومعرف الالتزام بقائمة التغيير ، والتعليقات التوضيحية للتجربة وما إلى ذلك ، وله اسم فريد يحدده المستخدم ضمن نوع ContextType الخاص به.
  • Attribution هو سجل للعلاقة بين المصنوعات والسياقات.
  • Association هي سجل للعلاقة بين عمليات الإعدام والسياقات.

وظائف MLMD

يتيح تتبع مدخلات ومخرجات جميع المكونات / الخطوات في سير عمل ML ونسبها لمنصات التعلم الآلي تمكين العديد من الميزات المهمة. توفر القائمة التالية نظرة عامة غير شاملة على بعض الفوائد الرئيسية.

  • قائمة بجميع القطع الأثرية من نوع معين. مثال: جميع النماذج التي تم تدريبها.
  • قم بتحميل قطعتين من نفس النوع للمقارنة. مثال: قارن نتائج تجربتين.
  • اعرض DAG لجميع عمليات التنفيذ ذات الصلة ومدخلاتها ومخرجاتها من السياق. مثال: تصور سير عمل تجربة لتصحيح الأخطاء والاكتشاف.
  • كرر مرة أخرى خلال جميع الأحداث لترى كيف تم إنشاء قطعة أثرية. أمثلة: انظر ما هي البيانات التي تم إدخالها في النموذج ؛ فرض خطط الاحتفاظ بالبيانات.
  • حدد كل القطع الأثرية التي تم إنشاؤها باستخدام قطعة أثرية معينة. أمثلة: راجع جميع النماذج المدربة من مجموعة بيانات محددة ؛ نماذج علامة على أساس البيانات السيئة.
  • تحديد ما إذا كان قد تم تنفيذ التنفيذ على نفس المدخلات من قبل. مثال: حدد ما إذا كان المكون / الخطوة قد أكمل بالفعل نفس العمل ويمكن إعادة استخدام المخرجات السابقة.
  • سجل واستعلام سياق سير العمل يعمل. أمثلة: تعقب المالك وقائمة التغيير المستخدمة لتشغيل سير العمل ؛ جمع النسب بالتجارب ؛ إدارة القطع الأثرية بالمشاريع.

راجع البرنامج التعليمي MLMD للحصول على مثال يوضح لك كيفية استخدام MLMD API ومخزن البيانات الوصفية لاسترداد معلومات النسب.

دمج البيانات الوصفية ML في مهام سير عمل ML الخاصة بك

إذا كنت مطور نظام أساسي مهتم بدمج MLMD في نظامك ، فاستخدم مثال سير العمل أدناه لاستخدام واجهات برمجة تطبيقات MLMD منخفضة المستوى لتتبع تنفيذ مهمة تدريبية. يمكنك أيضًا استخدام واجهات برمجة تطبيقات Python ذات المستوى الأعلى في بيئات دفتر الملاحظات لتسجيل البيانات الأولية للتجربة.

مثال تدفق بيانات تعريف ML

1) تسجيل أنواع القطع الأثرية

# Create ArtifactTypes, e.g., Data and Model
data_type = metadata_store_pb2.ArtifactType()
data_type.name = "DataSet"
data_type.properties["day"] = metadata_store_pb2.INT
data_type.properties["split"] = metadata_store_pb2.STRING
data_type_id = store.put_artifact_type(data_type)

model_type = metadata_store_pb2.ArtifactType()
model_type.name = "SavedModel"
model_type.properties["version"] = metadata_store_pb2.INT
model_type.properties["name"] = metadata_store_pb2.STRING
model_type_id = store.put_artifact_type(model_type)

2) تسجيل أنواع التنفيذ لجميع خطوات سير عمل ML

# Create an ExecutionType, e.g., Trainer
trainer_type = metadata_store_pb2.ExecutionType()
trainer_type.name = "Trainer"
trainer_type.properties["state"] = metadata_store_pb2.STRING
trainer_type_id = store.put_execution_type(trainer_type)

3) إنشاء قطعة أثرية من DataSet ArtifactType

# Create an input artifact of type DataSet
data_artifact = metadata_store_pb2.Artifact()
data_artifact.uri = 'path/to/data'
data_artifact.properties["day"].int_value = 1
data_artifact.properties["split"].string_value = 'train'
data_artifact.type_id = data_type_id
data_artifact_id = store.put_artifacts([data_artifact])[0]

4) قم tfx.components.Trainer تنفيذ tfx.components.Trainer المدرب (عادةً ما يكون tfx.components.Trainer ExecutionType)

trainer_run = metadata_store_pb2.Execution()
trainer_run.type_id = trainer_type_id
trainer_run.properties["state"].string_value = "RUNNING"
run_id = store.put_executions([trainer_run])[0]

5) تحديد حدث الإدخال وقراءة البيانات

# Define the input event
input_event = metadata_store_pb2.Event()
input_event.artifact_id = data_artifact_id
input_event.execution_id = run_id
input_event.type = metadata_store_pb2.Event.DECLARED_INPUT

# Record the input event in the metadata store
store.put_events([input_event])

6) قم بتعريف الأداة الناتجة

# Declare the output artifact of type SavedModel
model_artifact = metadata_store_pb2.Artifact()
model_artifact.uri = 'path/to/model/file'
model_artifact.properties["version"].int_value = 1
model_artifact.properties["name"].string_value = 'MNIST-v1'
model_artifact.type_id = model_type_id
model_artifact_id = store.put_artifacts([model_artifact])[0]

7) سجل حدث الإخراج

# Declare the output event
output_event = metadata_store_pb2.Event()
output_event.artifact_id = model_artifact_id
output_event.execution_id = run_id
output_event.type = metadata_store_pb2.Event.DECLARED_OUTPUT

# Submit output event to the Metadata Store
store.put_events([output_event])

8) ضع علامة على التنفيذ على أنه مكتمل

trainer_run.id = run_id
trainer_run.properties["state"].string_value = "COMPLETED"
store.put_executions([trainer_run])

9) تجميع القطع الأثرية وعمليات الإعدام في سياق باستخدام عناصر الإسناد والتأكيدات

04 ج 4762510

استخدم MLMD مع خادم gRPC بعيد

يمكنك استخدام MLMD مع خوادم gRPC البعيدة كما هو موضح أدناه:

  • ابدأ الخادم
bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server
  • أنشئ كعب العميل واستخدمه في Python
01 ديفاف 910
  • استخدم MLMD مع مكالمات RPC
# Create ArtifactTypes, e.g., Data and Model
data_type = metadata_store_pb2.ArtifactType()
data_type.name = "DataSet"
data_type.properties["day"] = metadata_store_pb2.INT
data_type.properties["split"] = metadata_store_pb2.STRING

request = metadata_store_service_pb2.PutArtifactTypeRequest()
request.all_fields_match = True
request.artifact_type.CopyFrom(data_type)
stub.PutArtifactType(request)

model_type = metadata_store_pb2.ArtifactType()
model_type.name = "SavedModel"
model_type.properties["version"] = metadata_store_pb2.INT
model_type.properties["name"] = metadata_store_pb2.STRING

request.artifact_type.CopyFrom(model_type)
stub.PutArtifactType(request)

مصادر

تحتوي مكتبة MLMD على واجهة برمجة تطبيقات عالية المستوى يمكنك استخدامها بسهولة مع خطوط أنابيب ML الخاصة بك. راجع وثائق MLMD API لمزيد من التفاصيل.

تحقق أيضًا من البرنامج التعليمي MLMD لمعرفة كيفية استخدام MLMD لتتبع نسب مكونات خط الأنابيب الخاص بك.