امروز برای رویداد محلی TensorFlow خود در همه جا پاسخ دهید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

ML فراداده

ML Metadata (MLMD) کتابخانه ای برای ضبط و بازیابی فراداده مربوط به ML و روند کار دانشمند داده است. MLMD بخشی جدایی ناپذیر از TensorFlow Extended (TFX) است ، اما به گونه ای طراحی شده است که می تواند به طور مستقل مورد استفاده قرار گیرد.

هر اجرای خط لوله تولید ML فراداده ای را در بر می گیرد که حاوی اطلاعاتی درباره اجزای مختلف خط لوله ، اجرای آنها (به عنوان مثال اجرای آموزش) و مصنوعات حاصله (به عنوان مثال مدل های آموزش دیده) است. در صورت بروز رفتار یا خطاهای غیرمنتظره خط لوله ، می توان از این فراداده برای تجزیه و تحلیل اصل و نسب اجزای خط لوله و اشکال زدایی استفاده کرد. درباره این فراداده به عنوان معادل ورود به سیستم در توسعه نرم افزار فکر کنید.

MLMD به شما کمک می کند تا به جای تجزیه و تحلیل جداگانه ، تمام قسمتهای بهم پیوسته ML خود را درک و تجزیه و تحلیل کنید و می تواند به شما در پاسخ به س questionsالات مربوط به خط لوله ML مانند موارد زیر کمک کند:

  • کدام مدل مجموعه را آموزش داد؟
  • ابر پارامترهای مورد استفاده برای آموزش مدل چیست؟
  • کدام خط لوله اجرا شده مدل را ایجاد کرده است؟
  • کدام یک از تمرینات منجر به این مدل شده است؟
  • کدام نسخه از TensorFlow این مدل را ایجاد کرده است؟
  • چه زمانی مدل شکست خورده تحت فشار قرار گرفت؟

فروشگاه فراداده

MLMD انواع زیر داده را در پایگاه داده ای به نام Metadata Store ثبت می کند .

  1. فراداده مربوط به مصنوعات تولید شده از طریق اجزای سازنده / مراحل خطوط لوله ML شما
  2. فراداده مربوط به اجرای این م componentsلفه ها / مراحل
  3. فراداده مربوط به خطوط لوله و اطلاعات مربوط به تبار

فروشگاه Metadata API ها را برای ضبط و بازیابی فراداده به داخل و خارج از فضای ذخیره سازی فراهم می کند. فضای ذخیره سازی قابل اتصال است و قابل تمدید است. MLMD پیاده سازی مرجع SQLite (که از حافظه و دیسک پشتیبانی می کند) و MySQL را خارج از جعبه ارائه می دهد.

این گرافیک نمای کلی از اجزای مختلفی را که بخشی از MLMD هستند ، نشان می دهد.

ML Metadata Overview

پیکربندی ذخیره سازی متادیتا باطله و ذخیره می شود

شی MetadataStore پیکربندی اتصال را دریافت می کند که مربوط به فضای ذخیره سازی مورد استفاده است.

  • پایگاه داده جعلی یک DB حافظه (با استفاده از SQLite) را برای آزمایش سریع و اجرای محلی فراهم می کند. با تخریب شی ذخیره ، پایگاه داده حذف می شود.
import ml_metadata as mlmd
from ml_metadata.metadata_store import metadata_store
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)
  • SQLite پرونده ها را از روی دیسک می خواند و می نویسد.
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)
  • MySQL به یک سرور MySQL متصل می شود.
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)

مدل داده

Metadata Store از مدل داده زیر برای ضبط و بازیابی فراداده از فضای ذخیره سازی استفاده می کند.

  • ArtifactType نوع مصنوع و خصوصیات آن را که در فروشگاه فراداده ذخیره می شوند ، توصیف می کند. می توانید این نوع ها را هنگام پرواز با فروشگاه متادیتا به صورت کد ثبت کنید ، یا می توانید آنها را از یک قالب سریال در فروشگاه بارگیری کنید. به محض ثبت نام ، تعریف آن در طول عمر فروشگاه در دسترس است.
  • Artifact نمونه خاصی از ArtifactType و خصوصیات آن را که در فروشگاه فراداده نوشته می شود ، توصیف می کند.
  • ExecutionType نوعی م ofلفه یا مرحله از گردش کار و پارامترهای زمان اجرا را توصیف می کند.
  • Execution یک رکورد از اجرای یک م componentلفه یا یک مرحله از گردش کار ML و پارامترهای زمان اجرا است. می توان یک اجرا را به عنوان نمونه ای از ExecutionType . هنگام اجرای خط لوله یا مرحله ML ، اعدام ها ثبت می شوند.
  • یک Event سابقه ای از رابطه بین مصنوعات و اعدام ها است. هنگامی که یک اعدام اتفاق می افتد ، حوادث هر مصنوعی را که توسط اعدام استفاده شده است ، و هر مصنوعی را که تولید شده است ضبط می کنند. این سوابق امکان ردیابی نسب را در سراسر گردش کار فراهم می کند. MLMD با نگاهی به همه وقایع می داند که چه اعدامی اتفاق افتاده و در نتیجه چه مصنوعاتی ایجاد شده است. سپس MLMD می تواند از هر مصنوع به تمام ورودی های بالادستی خود بازگردد.
  • ContextType نوعی گروه مفهومی از مصنوعات و اعدامها را در یک گردش کار و خصوصیات ساختاری آن را توصیف می کند. به عنوان مثال: پروژه ها ، اجرای خطوط لوله ، آزمایشات ، مالکان و غیره
  • Context نمونه ای از ContextType . این اطلاعات مشترک در گروه را ضبط می کند. به عنوان مثال: نام پروژه ، شناسه متغیر changelist ، حاشیه نویسی آزمایش و غیره. این یک نام منحصر به فرد تعریف شده توسط کاربر در ContextType خود دارد.
  • Attribution سابقه ای از رابطه بین مصنوعات و زمینه هاست.
  • Association سوابقی از رابطه بین اعدامها و زمینه هاست.

عملکرد MLMD

ردیابی ورودی ها و خروجی های همه اجزا steps / مراحل در گردش کار ML و تبار آنها به سیستم عامل های ML امکان می دهد چندین ویژگی مهم را فعال کنند. لیست زیر نمای کلی غیرمجاز از برخی از مزایای اصلی را ارائه می دهد.

  • لیست تمام مصنوعات از یک نوع خاص. مثال: همه مدل هایی که آموزش دیده اند.
  • دو مصنوعات از همان نوع را برای مقایسه بارگیری کنید. مثال: مقایسه نتایج حاصل از دو آزمایش.
  • یک DAG از همه اعدامهای مرتبط و مصنوعات ورودی و خروجی آنها از یک زمینه نشان دهید. مثال: گردش کار یک آزمایش را برای اشکال زدایی و کشف تجسم کنید.
  • برای دیدن چگونگی ایجاد یک مصنوع ، به همه رویدادها برگردید. مثالها: ببینید چه داده هایی به یک مدل وارد شده اند. برنامه های نگهداری اطلاعات را اجرا کنید.
  • تمام مصنوعاتی را که با استفاده از یک مصنوع داده شده ایجاد شده اند شناسایی کنید. مثالها: همه مدلهای آموزش دیده از یک مجموعه داده خاص را ببینید. مدل ها را بر اساس داده های بد علامت گذاری کنید.
  • تعیین کنید که اعدامی قبلاً روی همان ورودی ها اجرا شده باشد یا خیر. مثال: تعیین اینکه آیا یک جز component / مرحله قبلاً کار مشابهی را به پایان رسانده است یا خیر ، می توان از خروجی قبلی مجدداً استفاده کرد.
  • ضبط و جستجوی زمینه های گردش کار. مثالها: مالک و لیست تغییرات مورد استفاده برای اجرای گردش کار را ردیابی کنید. نسب را با آزمایش گروه بندی کنید. مدیریت مصنوعات توسط پروژه ها.

برای مثال به آموزش MLMD مراجعه کنید که به شما نشان می دهد چگونه از MLMD API و فروشگاه فراداده برای بازیابی اطلاعات نسب استفاده کنید.

ML Metadata را در گردش کار ML خود ادغام کنید

اگر شما یک توسعه دهنده پلت فرم هستید که می خواهید MLMD را در سیستم خود ادغام کنید ، از مثال گردش کار زیر برای استفاده از API های سطح پایین MLMD برای پیگیری اجرای یک کار آموزشی استفاده کنید. همچنین می توانید از API سطح بالاتر 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) اجرا را برای اجرای 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) مصنوعات و اعدامها را با استفاده از اسناد انتساب و ادعا در یک زمینه گروه بندی کنید

# Create a ContextType, e.g., Experiment with a note property
experiment_type = metadata_store_pb2.ContextType()
experiment_type.name = "Experiment"
experiment_type.properties["note"] = metadata_store_pb2.STRING
experiment_type_id = store.put_context_type(experiment_type)

# Group the model and the trainer run to an experiment.
my_experiment = metadata_store_pb2.Context()
my_experiment.type_id = experiment_type_id
# Give the experiment a name
my_experiment.name = "exp1"
my_experiment.properties["note"].string_value = "My first experiment."
experiment_id = store.put_contexts([my_experiment])[0]

attribution = metadata_store_pb2.Attribution()
attribution.artifact_id = model_artifact_id
attribution.context_id = experiment_id

association = metadata_store_pb2.Association()
association.execution_id = run_id
association.context_id = experiment_id

store.put_attributions_and_associations([attribution], [association])

از MLMD با یک سرور gRPC از راه دور استفاده کنید

مطابق شکل زیر می توانید از MLMD با سرورهای gRPC از راه دور استفاده کنید:

  • یک سرور راه اندازی کنید
bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server
  • مقاله خرد مشتری را ایجاد کنید و از آن در پایتون استفاده کنید
09defaf910
  • از 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 دارای یک API سطح بالا است که می توانید به راحتی با خطوط لوله ML خود استفاده کنید. برای جزئیات بیشتر به اسناد MLMD API مراجعه کنید.

همچنین آموزش MLMD را بررسی کنید تا بیاموزید چگونه از MLMD برای ردیابی نسب اجزای خط لوله خود استفاده کنید.