সাইন টিএফএক্স-অ্যাডনস সম্প্রদায়টিতে যোগদান করুন এবং টিএফএক্স আরও উন্নত করতে সহায়তা করুন!

এমএল মেটাটাটা

এমএল মেটাডেটা (এমএলএমডি) এমএল বিকাশকারী এবং ডেটা বিজ্ঞানী কর্মপ্রবাহের সাথে সম্পর্কিত মেটাডেটা রেকর্ডিং এবং পুনরুদ্ধারের জন্য একটি গ্রন্থাগার। এমএলএমডি টেনসরফ্লো এক্সটেন্ডেড (টিএফএক্স) এর একটি অবিচ্ছেদ্য অঙ্গ, তবে এটি ডিজাইন করা হয়েছে যাতে এটি স্বাধীনভাবে ব্যবহার করা যায়।

উত্পাদনের এমএল পাইপলাইনের প্রতিটি রান মেটাডেটা বিভিন্ন পাইপলাইন উপাদান, তাদের সম্পাদন (উদাহরণস্বরূপ প্রশিক্ষণ রান) এবং ফলস্বরূপ নিদর্শনগুলি (যেমন প্রশিক্ষিত মডেল) সম্পর্কিত তথ্য ধারণ করে ata অপ্রত্যাশিত পাইপলাইন আচরণ বা ত্রুটির ক্ষেত্রে, এই মেটাডেটা পাইপলাইন উপাদানগুলির ডিভাইজ এবং ডিবাগ ইস্যু বিশ্লেষণের জন্য কাজে লাগানো যেতে পারে software সফ্টওয়্যার বিকাশে লগিংয়ের সমতুল্য হিসাবে এই মেটাডাটাটিকে চিনুন।

এমএলএমডি আপনাকে আপনার এমএল পাইপলাইনের সমস্ত আন্তঃসংযুক্ত অংশগুলি বিচ্ছিন্নভাবে বিশ্লেষণ করার পরিবর্তে তা বুঝতে এবং বিশ্লেষণ করতে সহায়তা করে এবং আপনার এমএল পাইপলাইন সম্পর্কে প্রশ্নের উত্তর দিতে আপনাকে সহায়তা করতে পারে যেমন:

  • মডেলটি কোন ডেটাসেটটিতে ট্রেন চালিয়েছে?
  • মডেলটি প্রশিক্ষণের জন্য হাইপারপ্রেমেটারগুলি কী কী ছিল?
  • কোন পাইপলাইন চালিত মডেল তৈরি?
  • কোন মডেলটির নেতৃত্বে কোন প্রশিক্ষণ পরিচালিত হয়েছিল?
  • টেনসরফ্লো এর কোন সংস্করণটি এই মডেলটি তৈরি করেছিল?
  • ব্যর্থ মডেলটি কখন ঠেলে দেওয়া হয়েছিল?

মেটাডেটা স্টোর

এমএলএমডি মেটাটাটা স্টোর নামক একটি ডাটাবেসে নিম্নলিখিত ধরণের মেটাডেটা নিবন্ধভুক্ত করে।

  1. আপনার এমএল পাইপলাইনের উপাদানগুলি / পদক্ষেপের মাধ্যমে উত্পন্ন শিল্পকর্মগুলির সম্পর্কে মেটাডেটা
  2. এই উপাদানগুলি / পদক্ষেপগুলি কার্যকর করার বিষয়ে মেটাডেটা
  3. পাইপলাইন এবং সম্পর্কিত বংশের তথ্য সম্পর্কে মেটাডেটা

মেটাডাটা স্টোর স্টোরেজ ব্যাকএন্ডে এবং থেকে মেটাডেটা রেকর্ড করতে এবং পুনরুদ্ধার করতে এপিআই সরবরাহ করে। স্টোরেজ ব্যাকএন্ড প্লাগযোগ্য এবং এটি বাড়ানো যেতে পারে। এমএলএমডি বক্সের বাইরে এসকিউএলাইট (যা মেমোরি এবং ডিস্ক সমর্থন করে) এবং মাইএসকিউএল জন্য রেফারেন্স বাস্তবায়ন সরবরাহ করে।

এই গ্রাফিকটি এমএলএমডি অংশ এমন বিভিন্ন উপাদানগুলির একটি উচ্চ-স্তরের ওভারভিউ দেখায়।

এমএল মেটাডেটা ওভারভিউ

মেটাডেটা স্টোরেজ ব্যাকেন্ডস এবং স্টোর সংযোগ কনফিগারেশন

MetadataStore অবজেক্টটি একটি সংযোগ কনফিগারেশন গ্রহণ করে যা ব্যবহৃত স্টোরেজ ব্যাকএন্ডের সাথে সম্পর্কিত।

  • জাল ডেটাবেস দ্রুত পরীক্ষা এবং স্থানীয় রানগুলির জন্য একটি ইন-মেমরি ডিবি (এসকিউএলাইট ব্যবহার করে) সরবরাহ করে। স্টোর অবজেক্টটি নষ্ট হয়ে গেলে ডাটাবেস মুছে ফেলা হয়।
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)
  • এসকিউএলাইট ডিস্ক থেকে ফাইলগুলি পড়ে এবং লেখায়।
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)

একইভাবে, যখন Google CloudSQL (সঙ্গে একটি মাইএসকিউএল উদাহরণস্বরূপ ব্যবহার দ্রুতশুরু , কানেক্ট-ওভারভিউ ), একটি আরো SSL এর বিকল্প যদি প্রযোজ্য হয় ব্যবহার করতে পারে।

connection_config.mysql.ssl_options.key = '...'
connection_config.mysql.ssl_options.cert = '...'
connection_config.mysql.ssl_options.ca = '...'
connection_config.mysql.ssl_options.capath = '...'
connection_config.mysql.ssl_options.cipher = '...'
connection_config.mysql.ssl_options.verify_server_cert = '...'
store = metadata_store.MetadataStore(connection_config)

তথ্য মডেল

মেটাডাটা স্টোর স্টোরেজ ব্যাকএন্ড থেকে মেটাডেটা রেকর্ড এবং পুনরুদ্ধার করতে নিম্নলিখিত ডেটা মডেলটি ব্যবহার করে।

  • ArtifactType একটি আর্টিক্টাক্টের ধরণ এবং মেটাডেটা স্টোরে সঞ্চিত তার বৈশিষ্ট্যগুলি বর্ণনা করে। আপনি কোডগুলিতে মেটাডেটা স্টোরের সাথে এই ধরণের ফ্লাইতে নিবন্ধভুক্ত করতে পারেন, বা আপনি সিরিয়ালায়িত ফর্ম্যাট থেকে স্টোরগুলিতে এগুলি লোড করতে পারেন। একবার আপনি কোনও প্রকার নিবন্ধন করুন, তার সংজ্ঞাটি স্টোরের আজীবন উপলব্ধ।
  • একটি Artifact একটি নির্দিষ্ট উদাহরণস্বরূপ বর্ণনা করে ArtifactType , এবং তার সম্পত্তি মেটাডেটা দোকান লেখা হয় যে।
  • একটি ExecutionType কোনও কর্মপ্রবাহের এক ধরণের উপাদান বা পদক্ষেপ এবং তার রানটাইম পরামিতিগুলি বর্ণনা করে।
  • একটি Execution হ'ল একটি উপাদান রান বা একটি এমএল কর্মপ্রবাহের একটি ধাপ এবং রানটাইম পরামিতি। একটি এক্সিকিউশনকে ExecutionType উদাহরণ হিসাবে ভাবা যেতে পারে। আপনি যখন এমএল পাইপলাইন বা পদক্ষেপটি চালান তখন ফাঁসিগুলি রেকর্ড করা হয়।
  • একটি Event হস্তনির্মিত এবং মৃত্যুদণ্ড কার্যকর মধ্যে একটি রেকর্ড। যখন কোনও মৃত্যুদন্ড কার্যকর হয়, ইভেন্টগুলি সম্পাদন দ্বারা ব্যবহৃত প্রতিটি শিল্পকর্ম এবং উত্পাদিত প্রতিটি শৈল্পিক রেকর্ড করে। এই রেকর্ডগুলি একটি ওয়ার্কফ্লো জুড়ে বংশের ট্র্যাকিংয়ের অনুমতি দেয়। সমস্ত ইভেন্ট দেখে, এমএলএমডি জানে যে মৃত্যুদণ্ড কার্যকর হয়েছিল এবং ফলস্বরূপ কী শৈল্পিক তৈরি হয়েছিল। এমএলএমডি তারপরে যে কোনও নিদর্শন থেকে তার সমস্ত প্রবাহের ইনপুটগুলিতে ফিরে আসতে পারে।
  • একটি ContextType একটি কর্মপ্রবাহে শিল্পকলা এবং সম্পাদনের এক ধরণের ধারণামূলক গ্রুপ এবং এর কাঠামোগত বৈশিষ্ট্যগুলিকে বর্ণনা করে। উদাহরণস্বরূপ: প্রকল্পগুলি, পাইপলাইন চলমান, পরীক্ষা-নিরীক্ষা, মালিকগণ etc.
  • একটি Context হ'ল Context ContextType একটি উদাহরণ। এটি গ্রুপের মধ্যে ভাগ করা তথ্য ক্যাপচার করে। উদাহরণস্বরূপ: প্রকল্পের নাম, চেঞ্জলিস্ট কমিট আইডি, পরীক্ষামূলক টীকাগুলি ইত্যাদি It এর ContextType মধ্যে এটির একটি ব্যবহারকারী-সংজ্ঞায়িত অনন্য নাম ContextType
  • একটি Attribution হস্তনির্মিত এবং প্রসঙ্গের মধ্যে সম্পর্কের একটি রেকর্ড।
  • Association হ'ল মৃত্যুদন্ড কার্যকর করা এবং প্রসঙ্গে থাকা সম্পর্কের একটি রেকর্ড।

এমএলএমডি কার্যকারিতা

কোনও এমএল ওয়ার্কফ্লোতে সমস্ত উপাদান / পদক্ষেপের ইনপুট এবং আউটপুটগুলি ট্র্যাক করা এবং তাদের বংশ এমএল প্ল্যাটফর্মগুলিকে বেশ কয়েকটি গুরুত্বপূর্ণ বৈশিষ্ট্য সক্ষম করতে দেয়। নিম্নলিখিত তালিকাটি কয়েকটি প্রধান সুবিধাগুলির একটি অব্যাহত ওভারভিউ সরবরাহ করে।

  • একটি নির্দিষ্ট ধরণের সমস্ত শৈল্পিক তালিকাবদ্ধ করুন। উদাহরণ: প্রশিক্ষিত সমস্ত মডেল।
  • তুলনার জন্য একই ধরণের দুটি শিল্পকর্ম লোড করুন। উদাহরণ: দুটি পরীক্ষার ফলাফলের সাথে তুলনা করুন।
  • সম্পর্কিত সমস্ত মৃত্যুদণ্ডের একটি ডিএজি এবং একটি প্রসঙ্গে তাদের ইনপুট এবং আউটপুট শিল্পকর্মগুলি দেখান। উদাহরণ: ডিবাগিং এবং আবিষ্কারের জন্য একটি পরীক্ষার কর্মপ্রবাহটি কল্পনা করুন।
  • কীভাবে একটি শৈল্পিক তৈরি করা হয়েছিল তা দেখতে সমস্ত ইভেন্টের মধ্য দিয়ে পুনরাবৃত্তি করুন। উদাহরণ: দেখুন কোন মডেলটিতে ডেটা চলে গেছে; ডেটা ধরে রাখার পরিকল্পনা কার্যকর করুন।
  • প্রদত্ত শিল্পকর্মটি ব্যবহার করে তৈরি করা সমস্ত শিল্পকর্ম সনাক্ত করুন। উদাহরণস্বরূপ: নির্দিষ্ট মডেল থেকে প্রশিক্ষিত সমস্ত মডেল দেখুন; খারাপ ডেটা ভিত্তিক মডেলগুলি চিহ্নিত করুন।
  • এর আগে একই ইনপুটগুলিতে একটি কার্যকর করা হয়েছে কিনা তা নির্ধারণ করুন। উদাহরণ: কোনও উপাদান / পদক্ষেপ ইতিমধ্যে একই কাজ সম্পন্ন করেছে এবং পূর্ববর্তী আউটপুটটি কেবল পুনরায় ব্যবহার করা যেতে পারে তা নির্ধারণ করুন।
  • কর্মপ্রবাহের রেকর্ড এবং ক্যোয়ারী প্রসঙ্গে। উদাহরণস্বরূপ: ওয়ার্কফ্লো রানের জন্য ব্যবহৃত মালিক এবং পরিবর্তন তালিকাটি ট্র্যাক করুন; পরীক্ষা-নিরীক্ষার মাধ্যমে বংশকে গ্রুপ করুন; প্রকল্পের মাধ্যমে নিদর্শন পরিচালনা করুন।

এমএলএমডি টিউটোরিয়াল একটি উদাহরণের জন্য দেখুন যা আপনাকে এমএলএমডি এপিআই এবং মেটাডেটা স্টোর কীভাবে বংশের তথ্য পুনরুদ্ধার করতে ব্যবহার করবে তা দেখায়।

আপনার এমএল কর্মপ্রবাহে এমএল মেটাডেটা একীভূত করুন

আপনি যদি আপনার সিস্টেমে এমএলএমডি সংহত করতে আগ্রহী একটি প্ল্যাটফর্ম বিকাশকারী হন তবে প্রশিক্ষণ কার্য সম্পাদনের জন্য নিম্ন স্তরের এমএলএমডি এপিআই ব্যবহার করতে নীচের উদাহরণস্বরূপ ওয়ার্কফ্লো ব্যবহার করুন। আপনি পরীক্ষা মেটাটাটা রেকর্ড করতে নোটবুক পরিবেশে উচ্চ-স্তরের পাইথন এপিআইগুলিও ব্যবহার করতে পারেন।

এমএল মেটাডেটা উদাহরণ প্রবাহ

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)

# Query all registered Artifact types.
artifact_types = store.get_artifact_types()

2) এমএল ওয়ার্কফ্লোতে সমস্ত পদক্ষেপের জন্য মৃত্যুদন্ড কার্যকর করার ধরণগুলি নিবন্ধ করুন

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

# Query a registered Execution type with the returned id
[registered_type] = store.get_execution_types_by_id([trainer_type_id])

3) ডেটাসেট আর্টিফ্যাক্ট টাইপের একটি আর্টিক্ট তৈরি করুন

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

# Query all registered Artifacts
artifacts = store.get_artifacts()

# Plus, there are many ways to query the same Artifact
[stored_data_artifact] = store.get_artifacts_by_id([data_artifact_id])
artifacts_with_uri = store.get_artifacts_by_uri(data_artifact.uri)

4) ট্রেনার রান একটি বাস্তবায়ন তৈরি করুন

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

# Query all registered Execution
executions = store.get_executions_by_id([run_id])

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

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) বৈশিষ্ট্য এবং দৃser় শিল্পকর্মগুলি ব্যবহার করে একটি প্রসঙ্গের অধীনে গ্রুপ শিল্পীকরণ এবং সম্পাদন

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

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

# Query the Artifacts and Executions that are linked to the Context.
experiment_artifacts = store.get_artifacts_by_context(experiment_id)
experiment_executions = store.get_executions_by_context(experiment_id)

রিমোট জিআরপিসি সার্ভারের সাথে এমএলএমডি ব্যবহার করুন

আপনি নীচে প্রদর্শিত হিসাবে রিমোট জিআরপিসি সার্ভারের সাথে এমএলএমডি ব্যবহার করতে পারেন:

  • একটি সার্ভার শুরু করুন
bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server

ডিফল্টরূপে, সার্ভারটি অনুরোধ অনুযায়ী একটি নকল ইন-মেমরি ডিবি ব্যবহার করে এবং কলগুলিতে মেটাডেটা চালিয়ে যায় না। এসকিউএলাইট ফাইল বা মাইএসকিউএল দৃষ্টান্তগুলি ব্যবহার করতে এটি একটি এমএলএমডি MetadataStoreServerConfig সার্ভারকনফিগের সাথেও কনফিগার করা যেতে পারে। কনফিগারেশনটি একটি পাঠ্য --metadata_store_server_config_file=path_to_the_config_file ফাইলে সংরক্ষণ করা যায় এবং --metadata_store_server_config_file=path_to_the_config_file দিয়ে --metadata_store_server_config_file=path_to_the_config_file

পাঠ্য প্রোটোবুফ ফর্ম্যাটে MetadataStoreServerConfig সার্ভার MetadataStoreServerConfig ফাইলের একটি উদাহরণ:

connection_config {
  sqlite {
    filename_uri: '/tmp/test_db'
    connection_mode: READWRITE_OPENCREATE
  }
}
  • ক্লায়েন্ট স্টাব তৈরি করুন এবং পাইথনে এটি ব্যবহার করুন
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)
  • আরপিসি কল সহ এমএলএমডি ব্যবহার করুন
0 বি01401 বি 70

রিসোর্স

এমএলএমডি লাইব্রেরিতে একটি উচ্চ-স্তরের এপিআই রয়েছে যা আপনি সহজেই আপনার এমএল পাইপলাইনগুলির সাথে ব্যবহার করতে পারেন। আরও তথ্যের জন্য এমএলএমডি এপিআই ডকুমেন্টেশন দেখুন।

আপনার পাইপলাইন উপাদানগুলির বংশের সন্ধানের জন্য কীভাবে এমএলএমডি ব্যবহার করবেন তা শিখতে এমএলএমডি টিউটোরিয়ালটিও দেখুন