Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

ML Meta Verileri

ML Metadata (MLMD) , ML geliştiricisi ve veri bilimcisi iş akışlarıyla ilişkili meta verileri kaydetmek ve almak için kullanılan bir kitaplıktır. MLMD, TensorFlow Extended (TFX) ' in ayrılmaz bir parçasıdır, ancak bağımsız olarak kullanılabilecek şekilde tasarlanmıştır.

Bir üretim ML ardışık düzeninin her çalışması, çeşitli ardışık düzen bileşenleri, bunların yürütülmesi (örn. Eğitim çalışmaları) ve sonuçta ortaya çıkan yapay nesneler (örn. Eğitimli modeller) hakkında bilgi içeren meta veriler üretir. Beklenmeyen boru hattı davranışı veya hataları durumunda, bu meta veriler, ardışık düzen bileşenlerinin soyunu analiz etmek ve hata ayıklama sorunlarını analiz etmek için kullanılabilir.

MLMD, ayrı ayrı analiz etmek yerine, ML ardışık düzeninizin birbirine bağlı tüm bölümlerini anlamanıza ve analiz etmenize yardımcı olur ve ML ardışık düzeninizle ilgili aşağıdaki gibi soruları yanıtlamanıza yardımcı olabilir:

  • Model hangi veri kümesi üzerinde eğitim aldı?
  • Modeli eğitmek için kullanılan hiperparametreler nelerdi?
  • Modeli hangi ardışık düzen çalışması oluşturdu?
  • Hangi eğitim çalışması bu modeli doğurdu?
  • Bu modeli TensorFlow'un hangi sürümü oluşturdu?
  • Başarısız olan model ne zaman itildi?

Meta veri deposu

MLMD, Meta Veri Deposu adı verilen bir veritabanına aşağıdaki meta veri türlerini kaydeder.

  1. Makine öğrenimi ardışık düzenlerinizin bileşenleri / adımları aracılığıyla oluşturulan yapılar hakkındaki meta veriler
  2. Bu bileşenlerin / adımların yürütülmesine ilişkin meta veriler
  3. Ardışık düzenler ve ilişkili köken bilgileri hakkında meta veriler

Meta Veri Deposu, depolama arka ucuna meta verileri kaydetmek ve almak için API'ler sağlar. Depolama arka ucu takılabilir ve genişletilebilir. MLMD, SQLite (bellek içi ve diski destekleyen) ve MySQL için kullanıma hazır referans uygulamaları sağlar.

Bu grafik, MLMD'nin parçası olan çeşitli bileşenlere üst düzey bir genel bakışı gösterir.

ML Meta Verilerine Genel Bakış

Meta veri depolama arka uçları ve mağaza bağlantısı yapılandırması

MetadataStore nesnesi, kullanılan depolama arka ucuna karşılık gelen bir bağlantı yapılandırması alır.

  • Sahte Veritabanı , hızlı deneyler ve yerel çalıştırmalar için bir bellek içi DB (SQLite kullanarak) sağlar. Depo nesnesi yok edildiğinde veritabanı silinir.
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)
  • SQLite , dosyaları diskten okur ve yazar.
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 , bir MySQL sunucusuna bağlanır.
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)

Veri örneği

Meta Veri Deposu, depolama arka ucundan meta verileri kaydetmek ve almak için aşağıdaki veri modelini kullanır.

  • ArtifactType , bir yapının türünü ve meta veri deposunda depolanan özelliklerini açıklar. Bu türleri metadata deposu kodlu olarak anında kaydedebilir veya depoya serileştirilmiş bir formattan yükleyebilirsiniz. Bir türü kaydettiğinizde, tanımı mağazanın ömrü boyunca kullanılabilir.
  • Bir Artifact bir belirli bir örneğini açıklar ArtifactType ve özellikleri meta deposuna yazıldığını.
  • Bir ExecutionType , bir iş akışındaki bir bileşen veya adım türünü ve çalışma zamanı parametrelerini açıklar.
  • Execution , bir ML iş akışında çalıştırılan bir bileşen veya adımın ve çalışma zamanı parametrelerinin kaydıdır. ExecutionType , bir ExecutionType örneği olarak düşünülebilir. Makine öğrenimi ardışık düzenini veya adımını çalıştırdığınızda yürütmeler kaydedilir.
  • Bir Event , eserler ve infazlar arasındaki ilişkinin bir kaydıdır. Bir infaz gerçekleştiğinde, olaylar yürütme tarafından kullanılan her eseri ve üretilen her eseri kaydeder. Bu kayıtlar, bir iş akışı boyunca soy izlemeye izin verir. MLMD, tüm olaylara bakarak hangi infazların gerçekleştiğini ve bunun sonucunda hangi eserlerin yaratıldığını bilir. MLMD daha sonra herhangi bir artefakttan tüm yukarı akış girişlerine geri dönebilir.
  • Bir ContextType , bir iş akışındaki bir kavramsal yapı grubu ve yürütme grubunu ve yapısal özelliklerini tanımlar. Örneğin: projeler, boru hattı çalışmaları, deneyler, sahipler vb.
  • Bir Context , bir ContextType . Grup içinde paylaşılan bilgileri yakalar. Örneğin: proje adı, değişiklik listesi taahhüt kimliği, deney ek açıklamaları vb. ContextType içinde kullanıcı tanımlı benzersiz bir ada ContextType .
  • Bir Attribution , yapılar ve bağlamlar arasındaki ilişkinin bir kaydıdır.
  • Bir Association , infazlar ve bağlamlar arasındaki ilişkinin bir kaydıdır.

MLMD İşlevselliği

Bir makine öğrenimi iş akışındaki tüm bileşenlerin / adımların girişlerini ve çıkışlarını ve bunların kökenini izlemek, makine öğrenimi platformlarının birkaç önemli özelliği etkinleştirmesine olanak tanır. Aşağıdaki liste, bazı önemli avantajlara kapsamlı olmayan bir genel bakış sağlar.

  • Belirli bir türdeki tüm Artefaktları listeleyin. Örnek: eğitilmiş tüm Modeller.
  • Karşılaştırma için aynı türden iki Yapı yükleyin. Örnek: iki deneyin sonuçlarını karşılaştırın.
  • Tüm ilgili yürütmelerin bir DAG'sini ve bir bağlamın girdi ve çıktı yapıtlarını gösterin. Örnek: hata ayıklama ve keşif için bir deneyin iş akışını görselleştirin.
  • Bir yapının nasıl yaratıldığını görmek için tüm olayları tekrarlayın. Örnekler: bir modele hangi verilerin girdiğini görün; veri saklama planlarını uygulamak.
  • Belirli bir yapı kullanılarak oluşturulan tüm yapıları tanımlayın. Örnekler: belirli bir veri kümesinden eğitilen tüm Modelleri görün; kötü verilere dayalı modelleri işaretleyin.
  • Daha önce aynı girişlerde bir yürütmenin çalıştırılıp çalıştırılmadığını belirleyin. Örnek: bir bileşenin / adımın aynı işi zaten tamamlayıp tamamlamadığını ve önceki çıktının yeniden kullanılıp kullanılamayacağını belirleyin.
  • İş akışı çalıştırmalarının bağlamını kaydedin ve sorgulayın. Örnekler: bir iş akışı çalışması için kullanılan sahibi ve değişiklik listesini izleyin; soyu deneylerle gruplandırın; yapıları projelere göre yönetin.

Köken bilgilerini almak için MLMD API'sini ve meta veri deposunu nasıl kullanacağınızı gösteren bir örnek için MLMD eğitimine bakın.

Makine Öğrenimi Meta Verilerini Makine Öğrenimi İş Akışlarınıza entegre edin

MLMD'yi sisteminize entegre etmekle ilgilenen bir platform geliştiriciyseniz, bir eğitim görevinin yürütülmesini izlemek için düşük seviyeli MLMD API'lerini kullanmak için aşağıdaki örnek iş akışını kullanın. Deney meta verilerini kaydetmek için dizüstü bilgisayar ortamlarında daha yüksek seviyeli Python API'leri de kullanabilirsiniz.

ML Meta Verileri Örnek Akışı

1) Artefakt türlerini kaydedin

# 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) Makine öğrenimi iş akışındaki tüm adımlar için yürütme türlerini kaydedin

# 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'ın bir yapısını oluşturun

# 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 çalıştırması için yürütmeyi oluşturun (genellikle bir tfx.components.Trainer Yürütme tfx.components.Trainer )

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) Giriş olayını tanımlayın ve verileri okuyun

# 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) Çıktı artefaktını bildirin

# 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) Çıkış olayını kaydedin

# 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) Yürütmeyi tamamlandı olarak işaretleyin

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

9) Artefaktları ve infazları, atıfları ve iddiaları kullanarak bir bağlam altında gruplayın

# 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'yi uzak bir gRPC sunucusuyla kullanın

MLMD'yi uzak gRPC sunucuları ile aşağıda gösterildiği gibi kullanabilirsiniz:

  • Bir sunucu başlatın
bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server
  • İstemci saplamasını oluşturun ve Python'da kullanın
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)
  • MLMD'yi RPC çağrılarıyla kullanın
# 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)

Kaynaklar

MLMD kitaplığı, ML ardışık düzenlerinizle kolayca kullanabileceğiniz üst düzey bir API'ye sahiptir. Daha fazla ayrıntı için MLMD API belgelerine bakın.

Ayrıca, ardışık düzen bileşenlerinizin kökenini izlemek için MLMD'yi nasıl kullanacağınızı öğrenmek için MLMD eğitimine göz atın.