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

ML ابرداده

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

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

  • داده های مربوط به مصنوعات تولید شده از طریق مؤلفه ها / مراحل خطوط لوله
  • داده های مربوط به اجرای این مؤلفه ها / مراحل
  • داده های مربوط به خط لوله و اطلاعات مربوط به خطوط مرتبط

مفاهیم با جزئیات بیشتر در زیر توضیح داده شده است.

بررسی اجمالی فوق العاده ML

عملکردی که توسط MLMD فعال شده است

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

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

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

قبل از راه اندازی datastore ، باید واردات را تنظیم کنید.

from ml_metadata import metadata_store
from ml_metadata.proto import metadata_store_pb2

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

  • پایگاه داده Fake یک DB در حافظه (با استفاده از SQLite) را برای آزمایش سریع و اجرای محلی فراهم می کند. با از بین رفتن شیء فروشگاه ، پایگاه داده حذف می شود.
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 از مدل داده زیر برای ضبط و بازیابی ابرداده از باطن ذخیره سازی استفاده می کند.

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

ردیابی گردش کار ML با ML ابرداده

در زیر یک نمودار وجود دارد که نشان می دهد چگونه می توان از API های سطح پایین ML Metadata برای ردیابی اجرای یک کار آموزشی استفاده کرد و به دنبال آن نمونه هایی از کد را مشاهده کرد. توجه داشته باشید که کد موجود در این بخش ، API های ML Metadata را نشان می دهد که توسط سازندگان پلتفرم ML برای ادغام سکوی خود با ML Metadata استفاده می شود ، و نه مستقیماً توسط توسعه دهندگان. علاوه بر این ، ما API های سطح بالاتری را برای Python ارائه خواهیم داد که توسط دانشمندان داده در محیط های نوت بوک استفاده می شود تا ابرداده های آزمایش خود را ثبت کنند.

جریان مثال ML متادیتا

1) قبل از ثبت اعدام ، ArtifactTypes باید ثبت شود.

# 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) قبل از ثبت اعدام ها ، ExceptionTypes برای کلیه مراحل گردش کار ML ما باید ثبت شود.

# Create 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) پس از ثبت انواع ، ما یک Artefact DataSet ایجاد می کنیم.

# Declare 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) با ایجاد DataSet Artifact ، می توانیم برای اجرای Trainer یک Exception ایجاد کنیم

# Register the Execution of a Trainer run
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) رویداد ورودی را اعلام کرده و داده را بخوانید.

# Declare 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

# Submit input event to the Metadata Store
store.put_events([input_event])

6) اکنون که ورودی خوانده شده است ، ما مصنوع خروجی را اعلام می کنیم.

# Declare 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) با ایجاد مدل Artifact ، می توانیم رویداد خروجی را ضبط کنیم.

# 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) سپس آثار و اعدامها را می توان به یک متن طبقه بندی کرد (به عنوان مثال ، آزمایش).

# Similarly, 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])

با سرور grpc از راه دور

1) سرور را با

bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server

2) خرد مشتری را ایجاد کرده و از آن در پایتون استفاده کنید

from grpc import insecure_channel
from ml_metadata.proto import metadata_store_pb2
from ml_metadata.proto import metadata_store_service_pb2
from ml_metadata.proto import metadata_store_service_pb2_grpc
channel = insecure_channel('localhost:8080')
stub = metadata_store_service_pb2_grpc.MetadataStoreServiceStub(channel)

3) با تماس های RPC از MLMD استفاده کنید

# 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)