अपने स्थानीय TensorFlow के लिए RSVP आज हर जगह घटना!
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एमएल मेटाडाटा

एमएल मेटाडेटा (एमएलएमडी) एमएल डेवलपर और डेटा वैज्ञानिक वर्कफ़्लो से जुड़े मेटाडेटा को रिकॉर्ड करने और पुनर्प्राप्त करने के लिए एक पुस्तकालय है। MLMD TensorFlow Extended (TFX) का एक अभिन्न अंग है, लेकिन इसे इसलिए डिज़ाइन किया गया है ताकि इसे स्वतंत्र रूप से इस्तेमाल किया जा सके।

एक उत्पादन एमएल पाइपलाइन का प्रत्येक रन विभिन्न पाइपलाइन घटकों, उनके निष्पादन (जैसे प्रशिक्षण रन), और परिणामस्वरूप कलाकृतियों (जैसे प्रशिक्षित मॉडल) के बारे में जानकारी युक्त मेटाडेटा उत्पन्न करता है। अप्रत्याशित पाइपलाइन व्यवहार या त्रुटियों की स्थिति में, इस मेटाडेटा को पाइपलाइन घटकों के वंश और डिबग मुद्दों का विश्लेषण करने के लिए उत्तोलन किया जा सकता है। इस मेटाडेटा के सॉफ्टवेयर विकास में लॉगिंग के बराबर।

MLMD आपको अपने ML पाइपलाइन के सभी इंटरकनेक्टेड भागों को समझने और उनका विश्लेषण करने के बजाय उन्हें अलग-थलग करने में मदद करता है और आपकी ML पाइपलाइन के बारे में सवालों के जवाब देने में आपकी मदद कर सकता है जैसे:

  • मॉडल को किस ट्रेन ने चलाया?
  • मॉडल को प्रशिक्षित करने के लिए उपयोग किए जाने वाले हाइपरपरमेटर्स क्या थे?
  • किस पाइपलाइन से मॉडल बनाया गया?
  • इस मॉडल के कारण कौन से प्रशिक्षण चला?
  • TensorFlow के किस संस्करण ने यह मॉडल बनाया?
  • असफल मॉडल को कब धक्का दिया गया?

मेटाडेटा स्टोर

एमएलएमडी मेटाडेटा स्टोर नामक डेटाबेस में निम्न प्रकार के मेटाडेटा को पंजीकृत करता है।

  1. अपने एमएल पाइपलाइनों के घटकों / चरणों के माध्यम से उत्पन्न कलाकृतियों के बारे में मेटाडेटा
  2. इन घटकों / चरणों के निष्पादन के बारे में मेटाडेटा
  3. पाइपलाइनों और संबंधित वंशावली जानकारी के बारे में मेटाडेटा

मेटाडेटा स्टोर API को मेटाडेटा को स्टोरेज बैकएंड से रिकॉर्ड करने और पुनः प्राप्त करने के लिए प्रदान करता है। स्टोरेज बैकएंड प्लग करने योग्य है और इसे बढ़ाया जा सकता है। MLMD SQLite (जो इन-मेमोरी और डिस्क को सपोर्ट करता है) और MySQL बॉक्स से बाहर के लिए संदर्भ कार्यान्वयन प्रदान करता है।

यह ग्राफिक उन विभिन्न घटकों का एक उच्च-स्तरीय अवलोकन दिखाता है जो MLMD का हिस्सा हैं।

एमएल मेटाडेटा अवलोकन

मेटाडेटा भंडारण बैकएंड और स्टोर कनेक्शन कॉन्फ़िगरेशन

MetadataStore ऑब्जेक्ट एक कनेक्शन कॉन्फ़िगरेशन प्राप्त करता है जो उपयोग किए गए स्टोरेज बैकेंड से मेल खाती है।

  • फेक डाटाबेस तेज प्रयोग और स्थानीय रन के लिए एक इन-मेमोरी DB (SQLite का उपयोग करके) प्रदान करता है। डेटाबेस तब हटा दिया जाता है जब स्टोर ऑब्जेक्ट नष्ट हो जाता है।
0750 पेश 50
  • 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)
है

डेटा मॉडल

मेटाडेटा स्टोर स्टोरेज बैकएंड से मेटाडेटा को रिकॉर्ड करने और पुनर्प्राप्त करने के लिए निम्न डेटा मॉडल का उपयोग करता है।

  • ArtifactType एक विरूपण साक्ष्य के प्रकार और उसके गुणों का वर्णन करता है जो मेटाडेटा स्टोर में संग्रहीत होते हैं। आप कोड में मेटाडेटा स्टोर के साथ इन प्रकारों को पंजीकृत कर सकते हैं, या आप उन्हें स्टोर किए गए प्रारूप से स्टोर कर सकते हैं। एक बार जब आप एक प्रकार का पंजीकरण करते हैं, तो इसकी परिभाषा स्टोर के जीवनकाल में उपलब्ध है।
  • एक Artifact एक का एक विशिष्ट उदाहरण का वर्णन करता है ArtifactType , और उसके गुणों के मेटाडाटा दुकान के लिए लिखा जाता है।
  • एक ExecutionType वर्कफ़्लो में एक प्रकार के घटक या चरण और उसके रनटाइम मापदंडों का वर्णन करता है।
  • Execution एक घटक रन या एमएल वर्कफ़्लो में एक चरण और रनटाइम मापदंडों का एक रिकॉर्ड है। एक निष्पादन एक का एक उदाहरण के रूप में सोचा जा सकता है ExecutionType । जब आप ML पाइपलाइन या चरण चलाते हैं, तो रिकॉर्ड किए जाते हैं।
  • एक Event कलाकृतियों और निष्पादन के बीच संबंध का एक रिकॉर्ड है। जब एक निष्पादन होता है, तो घटनाओं को हर कलाकृतियों को रिकॉर्ड किया जाता है जो निष्पादन द्वारा उपयोग किया जाता था, और प्रत्येक कलाकृतियों का उत्पादन किया गया था। ये रिकॉर्ड एक कार्यप्रवाह में वंशावली ट्रैकिंग के लिए अनुमति देते हैं। सभी घटनाओं को देखकर, एमएलएमडी जानता है कि निष्पादन क्या हुआ और परिणामस्वरूप कलाकृतियों का निर्माण किया गया। एमएलएमडी फिर किसी भी विरूपण साक्ष्य से अपने सभी अपस्ट्रीम इनपुटों को वापस ला सकता है।
  • एक ContextType एक कलाकृतियों के वैचारिक समूह का एक प्रकार और वर्कफ़्लो में निष्पादन, और इसके संरचनात्मक गुणों का वर्णन करता है। उदाहरण के लिए: प्रोजेक्ट, पाइपलाइन रन, प्रयोग, मालिक आदि।
  • एक Context एक का एक उदाहरण है ContextType । यह समूह के भीतर साझा जानकारी को कैप्चर करता है। उदाहरण के लिए: परियोजना का नाम, परिवर्तन सूची आईडी प्रतिबद्ध, प्रयोग एनोटेशन आदि यह अपने भीतर एक उपयोगकर्ता परिभाषित अनन्य नाम है ContextType
  • एक Attribution कलाकृतियों और संदर्भों के बीच संबंध का एक रिकॉर्ड है।
  • एक Association निष्पादन और संदर्भों के बीच संबंध का एक रिकॉर्ड है।

एमएलएमडी कार्यशीलता

एक एमएल वर्कफ़्लो में सभी घटकों / चरणों के इनपुट और आउटपुट को ट्रैक करना और उनका वंशावली एमएल प्लेटफार्मों को कई महत्वपूर्ण विशेषताओं को सक्षम करने की अनुमति देता है। निम्नलिखित सूची कुछ प्रमुख लाभों का गैर-विस्तृत अवलोकन प्रदान करती है।

  • किसी विशिष्ट प्रकार की सभी कलाकृतियों को सूचीबद्ध करें। उदाहरण: सभी मॉडल जिन्हें प्रशिक्षित किया गया है।
  • तुलना के लिए एक ही प्रकार के दो कलाकृतियों को लोड करें। उदाहरण: दो प्रयोगों से परिणामों की तुलना करें।
  • सभी संबंधित निष्पादन और उनके संदर्भ के इनपुट और आउटपुट कलाकृतियों का एक डीएजी दिखाएं। उदाहरण: डिबगिंग और खोज के लिए एक प्रयोग के वर्कफ़्लो की कल्पना करें।
  • सभी घटनाओं के माध्यम से वापस देखें कि कैसे एक कलाकृति बनाई गई थी। उदाहरण: देखें कि मॉडल में कौन सा डेटा गया था; डेटा प्रतिधारण योजना लागू करें।
  • उन सभी कलाकृतियों को पहचानें जो किसी दिए गए कलाकृतियों का उपयोग करके बनाई गई थीं। उदाहरण: एक विशिष्ट डेटासेट से प्रशिक्षित सभी मॉडल देखें; खराब डेटा के आधार पर मॉडल चिह्नित करें।
  • निर्धारित करें कि क्या पहले एक ही इनपुट पर एक निष्पादन चलाया गया है। उदाहरण: यह निर्धारित करें कि क्या एक घटक / कदम ने पहले ही समान कार्य पूरा कर लिया है और पिछले आउटपुट का पुन: उपयोग किया जा सकता है।
  • वर्कफ़्लो रन का रिकॉर्ड और क्वेरी संदर्भ। उदाहरण: वर्कफ़्लो चलाने के लिए उपयोग किए गए स्वामी और चेंजलिस्ट को ट्रैक करें; वंश को प्रयोगों द्वारा समूहित करें; परियोजनाओं द्वारा कलाकृतियों का प्रबंधन।

एक उदाहरण के लिए एमएलएमडी ट्यूटोरियल देखें जो आपको दिखाता है कि वंशावली जानकारी प्राप्त करने के लिए एमएलएमडी एपीआई और मेटाडेटा स्टोर का उपयोग कैसे करें।

अपने एमएल वर्कफ़्लो में एमएल मेटाडेटा को एकीकृत करें

यदि आप एक प्लेटफ़ॉर्म डेवलपर हैं जो आपके सिस्टम में MLMD को एकीकृत करने में रुचि रखते हैं, तो प्रशिक्षण कार्य के निष्पादन को ट्रैक करने के लिए निम्न-स्तरीय MLMD API का उपयोग करने के लिए नीचे दिए गए उदाहरण वर्कफ़्लो का उपयोग करें। आप मेटाडेटा को रिकॉर्ड करने के लिए नोटबुक वातावरण में उच्च-स्तरीय पायथन एपीआई का उपयोग कर सकते हैं।

एमएल मेटाडेटा उदाहरण प्रवाह

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) एमएल वर्कफ़्लो में सभी चरणों के लिए निष्पादन प्रकार दर्ज करें

0126e88d0

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 निष्पादन)

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

दूरस्थ gRPC सर्वर के साथ MLMD का उपयोग करें

आप नीचे दिखाए गए अनुसार दूरस्थ gRPC सर्वर के साथ MLMD का उपयोग कर सकते हैं:

  • एक सर्वर शुरू करें
bazel run -c opt --define grpc_no_ares=true  //ml_metadata/metadata_store:metadata_store_server
  • क्लाइंट स्टब बनाएं और इसे पायथन में उपयोग करें
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)
  • 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)

संसाधन

MLMD लाइब्रेरी में एक उच्च-स्तरीय API है जिसे आप अपने ML पाइपलाइनों के साथ आसानी से उपयोग कर सकते हैं। अधिक विवरण के लिए एमएलएमडी एपीआई दस्तावेज देखें।

अपने पाइपलाइन घटकों के वंश का पता लगाने के लिए एमएलएमडी का उपयोग करने का तरीका जानने के लिए एमएलएमडी ट्यूटोरियल की भी जाँच करें।