ดู tensorflow.org | ทำงานใน Google Colab | ดูแหล่งที่มาบน GitHub | ดาวน์โหลดโน๊ตบุ๊ค |
สมมติสถานการณ์ที่คุณตั้งค่าไปป์ไลน์ ML ที่ใช้งานจริงเพื่อจัดประเภทนกเพนกวิน ไปป์ไลน์จะดึงข้อมูลการฝึกของคุณ ฝึกฝนและประเมินโมเดล และผลักดันไปสู่การผลิต
อย่างไรก็ตาม เมื่อคุณลองใช้โมเดลนี้กับชุดข้อมูลขนาดใหญ่ขึ้นซึ่งมีนกเพนกวินประเภทต่างๆ อยู่ คุณสังเกตเห็นว่าแบบจำลองของคุณไม่ทำงานตามที่คาดไว้และเริ่มจำแนกสายพันธุ์อย่างไม่ถูกต้อง
ณ จุดนี้คุณมีความสนใจในการรู้:
- วิธีใดมีประสิทธิภาพมากที่สุดในการดีบักโมเดลเมื่ออาร์ติแฟกต์ที่มีอยู่เท่านั้นคือโมเดลในการผลิต
- ชุดข้อมูลการฝึกอบรมใดที่ใช้ในการฝึกอบรมโมเดล
- การฝึกอบรมใดที่วิ่งไปสู่รุ่นที่ผิดพลาดนี้
- ผลการประเมินแบบจำลองอยู่ที่ไหน?
- จะเริ่มการดีบักได้ที่ไหน
ML เมตาดาต้า (MLMD) เป็นห้องสมุดที่ใช้ประโยชน์จากข้อมูลเมตาที่เกี่ยวข้องกับรุ่น ML เพื่อช่วยให้คุณตอบคำถามเหล่านี้และอื่น ๆ การเปรียบเทียบที่เป็นประโยชน์คือการคิดว่าข้อมูลเมตานี้เทียบเท่ากับการบันทึกในการพัฒนาซอฟต์แวร์ MLMD ช่วยให้คุณสามารถติดตามสิ่งประดิษฐ์และสายเลือดที่เกี่ยวข้องกับส่วนประกอบต่างๆ ของไปป์ไลน์ ML ของคุณได้อย่างน่าเชื่อถือ
ในบทช่วยสอนนี้ คุณจะตั้งค่า TFX Pipeline เพื่อสร้างแบบจำลองที่จำแนกเพนกวินออกเป็นสามสายพันธุ์ตามมวลกาย ความยาวและความลึกของยอดของพวกมัน และความยาวของครีบของพวกมัน จากนั้นคุณใช้ MLMD เพื่อติดตามการสืบเชื้อสายของส่วนประกอบไปป์ไลน์
ท่อส่งสัญญาณ TFX ใน Colab
Colab เป็นสภาพแวดล้อมการพัฒนาที่มีน้ำหนักเบาซึ่งแตกต่างอย่างมากจากสภาพแวดล้อมการใช้งานจริง ในการผลิต คุณอาจมีส่วนประกอบไปป์ไลน์ต่างๆ เช่น การนำเข้าข้อมูล การแปลง การฝึกโมเดล ประวัติการรัน ฯลฯ ในระบบแบบกระจายหลายระบบ สำหรับบทช่วยสอนนี้ คุณควรทราบว่ามีความแตกต่างที่สำคัญในการจัดเก็บ Orchestration และ Metadata - ทั้งหมดนี้ได้รับการจัดการภายใน Colab เรียนรู้เพิ่มเติมเกี่ยว TFX ใน Colab ที่นี่
ติดตั้ง
ขั้นแรก เราติดตั้งและนำเข้าแพ็คเกจที่จำเป็น ตั้งค่าเส้นทาง และดาวน์โหลดข้อมูล
อัพเกรด Pip
เพื่อหลีกเลี่ยงการอัพเกรด Pip ในระบบเมื่อรันในเครื่อง ให้ตรวจสอบว่าเรากำลังทำงานใน Colab หลักสูตรท้องถิ่นสามารถอัพเกรดแยกต่างหากได้
try:
import colab
!pip install --upgrade pip
except:
pass
ติดตั้งและนำเข้า TFX
pip install -q -U tfx
นำเข้าแพ็คเกจ
คุณรีสตาร์ทรันไทม์หรือไม่
หากคุณกำลังใช้ Google Colab ในครั้งแรกที่คุณเรียกใช้เซลล์ด้านบน คุณต้องรีสตาร์ทรันไทม์โดยคลิกที่ปุ่ม "RESTART RUNTIME" ด้านบน หรือใช้เมนู "Runtime > Restart runtime ..." นี่เป็นเพราะวิธีที่ Colab โหลดแพ็คเกจ
import os
import tempfile
import urllib
import pandas as pd
import tensorflow_model_analysis as tfma
from tfx.orchestration.experimental.interactive.interactive_context import InteractiveContext
ตรวจสอบรุ่น TFX และ MLMD
from tfx import v1 as tfx
print('TFX version: {}'.format(tfx.__version__))
import ml_metadata as mlmd
print('MLMD version: {}'.format(mlmd.__version__))
TFX version: 1.4.0 MLMD version: 1.4.0
ดาวน์โหลดชุดข้อมูล
ใน Colab นี้เราจะใช้ ชุดข้อมูลที่พาลเมอร์เพนกวิน ซึ่งสามารถพบได้บน Github เราได้ดำเนินการโดยชุดข้อมูลที่ออกจากบันทึกที่ไม่สมบูรณ์และลดลง island
และ sex
คอลัมน์และเปลี่ยนป้ายกำกับเพื่อ int32
ชุดข้อมูลประกอบด้วยข้อมูลมวลกาย 334 รายการ ความยาวและความลึกของยอดของนกเพนกวิน และความยาวของครีบของพวกมัน คุณใช้ข้อมูลนี้เพื่อจำแนกนกเพนกวินให้เป็นหนึ่งในสามสายพันธุ์
DATA_PATH = 'https://raw.githubusercontent.com/tensorflow/tfx/master/tfx/examples/penguin/data/labelled/penguins_processed.csv'
_data_root = tempfile.mkdtemp(prefix='tfx-data')
_data_filepath = os.path.join(_data_root, "penguins_processed.csv")
urllib.request.urlretrieve(DATA_PATH, _data_filepath)
('/tmp/tfx-datal9104odr/penguins_processed.csv', <http.client.HTTPMessage at 0x7f9c6d8d2290>)
สร้าง InteractiveContext
การใช้องค์ประกอบ TFX โต้ตอบในสมุดบันทึกนี้สร้าง InteractiveContext
InteractiveContext
ใช้ไดเรกทอรีชั่วคราวกับฐานข้อมูลเช่น MLMD ชั่วคราว โปรดทราบว่าการโทรไปยัง InteractiveContext
นี้ไม่มี-Ops นอกสภาพแวดล้อม Colab
โดยทั่วไปจะเป็นวิธีที่ดีไปยังกลุ่มคล้ายท่อวิ่งภายใต้ Context
interactive_context = InteractiveContext()
WARNING:absl:InteractiveContext pipeline_root argument not provided: using temporary directory /tmp/tfx-interactive-2021-12-05T11_15_56.285625-5hcexlo8 as root for pipeline outputs. WARNING:absl:InteractiveContext metadata_connection_config not provided: using SQLite ML Metadata database at /tmp/tfx-interactive-2021-12-05T11_15_56.285625-5hcexlo8/metadata.sqlite.
สร้างท่อส่งท่อ TFX
ไปป์ไลน์ TFX ประกอบด้วยส่วนประกอบหลายอย่างที่ทำงานด้านต่างๆ ของเวิร์กโฟลว์ ML ในสมุดบันทึกนี้คุณจะสร้างและเรียกใช้ ExampleGen
, StatisticsGen
, SchemaGen
และ Trainer
ส่วนประกอบและใช้ Evaluator
และ Pusher
องค์ประกอบในการประเมินและผลักดันรูปแบบการฝึกอบรม
โปรดดูที่ ส่วนประกอบกวดวิชา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ TFX ส่วนประกอบท่อ
ยกตัวอย่างและเรียกใช้คอมโพเนนต์ examplegen
example_gen = tfx.components.CsvExampleGen(input_base=_data_root)
interactive_context.run(example_gen)
WARNING:apache_beam.runners.interactive.interactive_environment:Dependencies required for Interactive Beam PCollection visualization are not available, please use: `pip install apache-beam[interactive]` to install necessary dependencies to enable all data visualization features. WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter. WARNING:apache_beam.io.tfrecordio:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be.
ยกตัวอย่างและเรียกใช้องค์ประกอบสถิติ
statistics_gen = tfx.components.StatisticsGen(
examples=example_gen.outputs['examples'])
interactive_context.run(statistics_gen)
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.
ยกตัวอย่างและเรียกใช้ส่วนประกอบ Schemagen
infer_schema = tfx.components.SchemaGen(
statistics=statistics_gen.outputs['statistics'], infer_feature_shape=True)
interactive_context.run(infer_schema)
WARNING: Logging before InitGoogleLogging() is written to STDERR I1205 11:16:00.941947 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type
ยกตัวอย่างและเรียกใช้องค์ประกอบเทรนเนอร์
# Define the module file for the Trainer component
trainer_module_file = 'penguin_trainer.py'
%%writefile {trainer_module_file}
# Define the training algorithm for the Trainer module file
import os
from typing import List, Text
import tensorflow as tf
from tensorflow import keras
from tfx import v1 as tfx
from tfx_bsl.public import tfxio
from tensorflow_metadata.proto.v0 import schema_pb2
# Features used for classification - culmen length and depth, flipper length,
# body mass, and species.
_LABEL_KEY = 'species'
_FEATURE_KEYS = [
'culmen_length_mm', 'culmen_depth_mm', 'flipper_length_mm', 'body_mass_g'
]
def _input_fn(file_pattern: List[Text],
data_accessor: tfx.components.DataAccessor,
schema: schema_pb2.Schema, batch_size: int) -> tf.data.Dataset:
return data_accessor.tf_dataset_factory(
file_pattern,
tfxio.TensorFlowDatasetOptions(
batch_size=batch_size, label_key=_LABEL_KEY), schema).repeat()
def _build_keras_model():
inputs = [keras.layers.Input(shape=(1,), name=f) for f in _FEATURE_KEYS]
d = keras.layers.concatenate(inputs)
d = keras.layers.Dense(8, activation='relu')(d)
d = keras.layers.Dense(8, activation='relu')(d)
outputs = keras.layers.Dense(3)(d)
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(
optimizer=keras.optimizers.Adam(1e-2),
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[keras.metrics.SparseCategoricalAccuracy()])
return model
def run_fn(fn_args: tfx.components.FnArgs):
schema = schema_pb2.Schema()
tfx.utils.parse_pbtxt_file(fn_args.schema_path, schema)
train_dataset = _input_fn(
fn_args.train_files, fn_args.data_accessor, schema, batch_size=10)
eval_dataset = _input_fn(
fn_args.eval_files, fn_args.data_accessor, schema, batch_size=10)
model = _build_keras_model()
model.fit(
train_dataset,
epochs=int(fn_args.train_steps / 20),
steps_per_epoch=20,
validation_data=eval_dataset,
validation_steps=fn_args.eval_steps)
model.save(fn_args.serving_model_dir, save_format='tf')
Writing penguin_trainer.py
เรียกใช้ Trainer
ส่วนประกอบ
trainer = tfx.components.Trainer(
module_file=os.path.abspath(trainer_module_file),
examples=example_gen.outputs['examples'],
schema=infer_schema.outputs['schema'],
train_args=tfx.proto.TrainArgs(num_steps=100),
eval_args=tfx.proto.EvalArgs(num_steps=50))
interactive_context.run(trainer)
running bdist_wheel running build running build_py creating build creating build/lib copying penguin_trainer.py -> build/lib installing to /tmp/tmpum1crtxy running install running install_lib copying build/lib/penguin_trainer.py -> /tmp/tmpum1crtxy running install_egg_info running egg_info creating tfx_user_code_Trainer.egg-info writing tfx_user_code_Trainer.egg-info/PKG-INFO writing dependency_links to tfx_user_code_Trainer.egg-info/dependency_links.txt writing top-level names to tfx_user_code_Trainer.egg-info/top_level.txt writing manifest file 'tfx_user_code_Trainer.egg-info/SOURCES.txt' reading manifest file 'tfx_user_code_Trainer.egg-info/SOURCES.txt' writing manifest file 'tfx_user_code_Trainer.egg-info/SOURCES.txt' Copying tfx_user_code_Trainer.egg-info to /tmp/tmpum1crtxy/tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4-py3.7.egg-info running install_scripts creating /tmp/tmpum1crtxy/tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4.dist-info/WHEEL creating '/tmp/tmpo87nn6ey/tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4-py3-none-any.whl' and adding '/tmp/tmpum1crtxy' to it adding 'penguin_trainer.py' adding 'tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4.dist-info/METADATA' adding 'tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4.dist-info/WHEEL' adding 'tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4.dist-info/top_level.txt' adding 'tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4.dist-info/RECORD' removing /tmp/tmpum1crtxy /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. setuptools.SetuptoolsDeprecationWarning, listing git files failed - pretending there aren't any I1205 11:16:01.389324 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type I1205 11:16:01.392832 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type Processing /tmp/tfx-interactive-2021-12-05T11_15_56.285625-5hcexlo8/_wheels/tfx_user_code_Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4-py3-none-any.whl Installing collected packages: tfx-user-code-Trainer Successfully installed tfx-user-code-Trainer-0.0+fef7c4ed90dc336ca26daee59d65660cf8da5fa988b2ca0c89df2f558fda10f4 Epoch 1/5 20/20 [==============================] - 1s 11ms/step - loss: 0.9891 - sparse_categorical_accuracy: 0.4300 - val_loss: 0.9594 - val_sparse_categorical_accuracy: 0.4800 Epoch 2/5 20/20 [==============================] - 0s 6ms/step - loss: 0.8369 - sparse_categorical_accuracy: 0.6350 - val_loss: 0.7484 - val_sparse_categorical_accuracy: 0.8200 Epoch 3/5 20/20 [==============================] - 0s 6ms/step - loss: 0.5289 - sparse_categorical_accuracy: 0.8350 - val_loss: 0.5068 - val_sparse_categorical_accuracy: 0.7800 Epoch 4/5 20/20 [==============================] - 0s 6ms/step - loss: 0.4481 - sparse_categorical_accuracy: 0.7800 - val_loss: 0.4125 - val_sparse_categorical_accuracy: 0.8600 Epoch 5/5 20/20 [==============================] - 0s 6ms/step - loss: 0.3068 - sparse_categorical_accuracy: 0.8650 - val_loss: 0.3279 - val_sparse_categorical_accuracy: 0.8300 2021-12-05 11:16:06.493168: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them. INFO:tensorflow:Assets written to: /tmp/tfx-interactive-2021-12-05T11_15_56.285625-5hcexlo8/Trainer/model/4/Format-Serving/assets INFO:tensorflow:Assets written to: /tmp/tfx-interactive-2021-12-05T11_15_56.285625-5hcexlo8/Trainer/model/4/Format-Serving/assets
ประเมินและผลักดันแบบจำลอง
ใช้ Evaluator
องค์ประกอบในการประเมินและ 'อวยพร' รุ่นก่อนใช้ Pusher
องค์ประกอบที่จะผลักดันรูปแบบไปยังไดเรกทอรีที่ให้บริการ
_serving_model_dir = os.path.join(tempfile.mkdtemp(),
'serving_model/penguins_classification')
eval_config = tfma.EvalConfig(
model_specs=[
tfma.ModelSpec(label_key='species', signature_name='serving_default')
],
metrics_specs=[
tfma.MetricsSpec(metrics=[
tfma.MetricConfig(
class_name='SparseCategoricalAccuracy',
threshold=tfma.MetricThreshold(
value_threshold=tfma.GenericValueThreshold(
lower_bound={'value': 0.6})))
])
],
slicing_specs=[tfma.SlicingSpec()])
evaluator = tfx.components.Evaluator(
examples=example_gen.outputs['examples'],
model=trainer.outputs['model'],
schema=infer_schema.outputs['schema'],
eval_config=eval_config)
interactive_context.run(evaluator)
I1205 11:16:07.075275 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type I1205 11:16:07.078761 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:114: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version. Instructions for updating: Use eager execution and: `tf.data.TFRecordDataset(path)` WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:114: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version. Instructions for updating: Use eager execution and: `tf.data.TFRecordDataset(path)`
pusher = tfx.components.Pusher(
model=trainer.outputs['model'],
model_blessing=evaluator.outputs['blessing'],
push_destination=tfx.proto.PushDestination(
filesystem=tfx.proto.PushDestination.Filesystem(
base_directory=_serving_model_dir)))
interactive_context.run(pusher)
I1205 11:16:11.935312 6108 rdbms_metadata_access_object.cc:686] No property is defined for the Type
การใช้ Pipeline TFX เติมฐานข้อมูล MLMD ในส่วนถัดไป คุณใช้ MLMD API เพื่อสืบค้นฐานข้อมูลนี้สำหรับข้อมูลเมตาดาต้า
สืบค้นฐานข้อมูล MLMD
ฐานข้อมูล MLMD เก็บข้อมูลเมทาดาทาสามประเภท:
- ข้อมูลเมตาเกี่ยวกับไปป์ไลน์และข้อมูลเชื้อสายที่เกี่ยวข้องกับส่วนประกอบไปป์ไลน์
- ข้อมูลเมตาเกี่ยวกับสิ่งประดิษฐ์ที่สร้างขึ้นในระหว่างการดำเนินการไปป์ไลน์
- ข้อมูลเมตาเกี่ยวกับการประหารชีวิตของท่อส่ง
ไปป์ไลน์สภาพแวดล้อมการผลิตทั่วไปให้บริการหลายรุ่นเมื่อมีข้อมูลใหม่มาถึง เมื่อคุณพบผลลัพธ์ที่ผิดพลาดในแบบจำลองที่ให้บริการ คุณสามารถสืบค้นฐานข้อมูล MLMD เพื่อแยกแบบจำลองที่ผิดพลาด จากนั้นคุณสามารถติดตามสายเลือดของส่วนประกอบไปป์ไลน์ที่สอดคล้องกับโมเดลเหล่านี้เพื่อดีบักโมเดลของคุณ
ตั้งค่าข้อมูลเมตา (MD) ร้านด้วย InteractiveContext
กำหนดไว้ก่อนหน้าในการค้นหาฐานข้อมูล MLMD
connection_config = interactive_context.metadata_connection_config
store = mlmd.MetadataStore(connection_config)
# All TFX artifacts are stored in the base directory
base_dir = connection_config.sqlite.filename_uri.split('metadata.sqlite')[0]
สร้างฟังก์ชันตัวช่วยเพื่อดูข้อมูลจากร้านค้า MD
def display_types(types):
# Helper function to render dataframes for the artifact and execution types
table = {'id': [], 'name': []}
for a_type in types:
table['id'].append(a_type.id)
table['name'].append(a_type.name)
return pd.DataFrame(data=table)
def display_artifacts(store, artifacts):
# Helper function to render dataframes for the input artifacts
table = {'artifact id': [], 'type': [], 'uri': []}
for a in artifacts:
table['artifact id'].append(a.id)
artifact_type = store.get_artifact_types_by_id([a.type_id])[0]
table['type'].append(artifact_type.name)
table['uri'].append(a.uri.replace(base_dir, './'))
return pd.DataFrame(data=table)
def display_properties(store, node):
# Helper function to render dataframes for artifact and execution properties
table = {'property': [], 'value': []}
for k, v in node.properties.items():
table['property'].append(k)
table['value'].append(
v.string_value if v.HasField('string_value') else v.int_value)
for k, v in node.custom_properties.items():
table['property'].append(k)
table['value'].append(
v.string_value if v.HasField('string_value') else v.int_value)
return pd.DataFrame(data=table)
แรกแบบสอบถามร้าน MD สำหรับรายชื่อของที่เก็บไว้ทั้งหมดของ ArtifactTypes
display_types(store.get_artifact_types())
ถัดไปแบบสอบถามทั้งหมด PushedModel
สิ่งประดิษฐ์
pushed_models = store.get_artifacts_by_type("PushedModel")
display_artifacts(store, pushed_models)
แบบสอบถามร้าน MD สำหรับรุ่นที่ถูกผลักล่าสุด บทช่วยสอนนี้มีเพียงหนึ่งรุ่นที่ผลักดัน
pushed_model = pushed_models[-1]
display_properties(store, pushed_model)
ขั้นตอนแรกในการดีบักโมเดลที่พุชคือการดูว่ามีการพุชโมเดลที่ได้รับการฝึกใดบ้าง และดูว่าข้อมูลการฝึกใดที่ใช้ในการฝึกโมเดลนั้น
MLMD จัดเตรียม API การแวะผ่านเพื่อดูกราฟที่มา ซึ่งคุณสามารถใช้วิเคราะห์ที่มาของแบบจำลองได้
def get_one_hop_parent_artifacts(store, artifacts):
# Get a list of artifacts within a 1-hop of the artifacts of interest
artifact_ids = [artifact.id for artifact in artifacts]
executions_ids = set(
event.execution_id
for event in store.get_events_by_artifact_ids(artifact_ids)
if event.type == mlmd.proto.Event.OUTPUT)
artifacts_ids = set(
event.artifact_id
for event in store.get_events_by_execution_ids(executions_ids)
if event.type == mlmd.proto.Event.INPUT)
return [artifact for artifact in store.get_artifacts_by_id(artifacts_ids)]
แบบสอบถามสิ่งประดิษฐ์ผู้ปกครองสำหรับรุ่นที่ถูกผลัก
parent_artifacts = get_one_hop_parent_artifacts(store, [pushed_model])
display_artifacts(store, parent_artifacts)
สืบค้นคุณสมบัติสำหรับรุ่น
exported_model = parent_artifacts[0]
display_properties(store, exported_model)
แบบสอบถามสิ่งประดิษฐ์ต้นน้ำสำหรับโมเดล
model_parents = get_one_hop_parent_artifacts(store, [exported_model])
display_artifacts(store, model_parents)
รับข้อมูลการฝึกอบรมรุ่นที่ผ่านการฝึกอบรมด้วย
used_data = model_parents[0]
display_properties(store, used_data)
ตอนนี้ คุณมีข้อมูลการฝึกที่โมเดลฝึกด้วยแล้ว ให้สอบถามฐานข้อมูลอีกครั้งเพื่อค้นหาขั้นตอนการฝึก (การดำเนินการ) สอบถามร้านค้า MD สำหรับรายการประเภทการดำเนินการที่ลงทะเบียน
display_types(store.get_execution_types())
ขั้นตอนการฝึกอบรมเป็น ExecutionType
ชื่อ tfx.components.trainer.component.Trainer
สำรวจร้าน MD เพื่อเรียกใช้ผู้ฝึกสอนที่สอดคล้องกับโมเดลที่ผลัก
def find_producer_execution(store, artifact):
executions_ids = set(
event.execution_id
for event in store.get_events_by_artifact_ids([artifact.id])
if event.type == mlmd.proto.Event.OUTPUT)
return store.get_executions_by_id(executions_ids)[0]
trainer = find_producer_execution(store, exported_model)
display_properties(store, trainer)
สรุป
ในบทช่วยสอนนี้ คุณได้เรียนรู้เกี่ยวกับวิธีการใช้ประโยชน์จาก MLMD เพื่อติดตามเชื้อสายของส่วนประกอบไปป์ไลน์ TFX ของคุณและแก้ไขปัญหา
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีใช้ MLMD โปรดดูแหล่งข้อมูลเพิ่มเติมเหล่านี้: