স্বতন্ত্র মডেল কার্ড টুলকিট ডেমো

এই "স্বতন্ত্র" নোটবুকটি TFX/MLMD প্রসঙ্গ ছাড়াই মডেল কার্ড টুলকিট ব্যবহার করে প্রদর্শন করে। TFX / MLMD সঙ্গে মডেল কার্ড টুলকিট কীভাবে ব্যবহার করবেন তা জানতে, অনুগ্রহ করে MLMD মডেল কার্ড টুলকিট ডেমো

TensorFlow.org এ দেখুন Google Colab-এ চালান GitHub এ দেখুন নোটবুক ডাউনলোড করুন

উদ্দেশ্য

এই নোটবুকটি দেখায় কিভাবে একটি Jupyter/Colab পরিবেশে মডেল কার্ড টুলকিট ব্যবহার করে একটি মডেল কার্ড তৈরি করতে হয়। আপনি মডেল কার্ড সম্পর্কে আরও জানতে পারেন https://modelcards.withgoogle.com/about

আমরা এই ডেমোতে কেরাস মডেল ব্যবহার করছি। কিন্তু নিচের যুক্তিটি সাধারণভাবে অন্যান্য ML ফ্রেমওয়ার্কের ক্ষেত্রেও প্রযোজ্য।

সেটআপ

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

পিপ 20.2 এ আপগ্রেড করুন এবং মডেল কার্ড টুলকিট ইনস্টল করুন

pip install --upgrade pip==20.2
pip install 'model-card-toolkit>=1.0.0,<1.1'
pip install 'tensorflow>=2.3.1'

আপনি কি রানটাইম রিস্টার্ট করেছেন?

আপনি যদি Google Colab ব্যবহার করেন, প্রথমবার উপরের সেলটি চালানোর সময়, আপনাকে অবশ্যই রানটাইমটি পুনরায় চালু করতে হবে (রানটাইম > রানটাইম পুনরায় চালু করুন ...)। Colab যেভাবে প্যাকেজগুলি লোড করে তার কারণেই এটি হয়েছে৷

আমদানি

import tensorflow as tf
import numpy as np
import model_card_toolkit as mctlib
from model_card_toolkit.documentation.examples import cats_vs_dogs
from model_card_toolkit.utils.graphics import figure_to_base64str
import tempfile
import matplotlib.pyplot as plt
from IPython import display
import requests
import os
import zipfile

মডেল

আমরা বন্ধ ভিত্তিক আর্কিটেকচার সঙ্গে একটি pretrained মডেল ব্যবহার করবে MobileNetV2 , একটি জনপ্রিয় 16-স্তরের চিত্রের শ্রেণীবিন্যাস মডেল। আমাদের মডেল betweens মুষলধারে ব্যবহার মধ্যে পার্থক্য প্রশিক্ষিত করা হয়েছে কুকুর বনাম বিড়াল ডেটা সেটটি। মডেল প্রশিক্ষণ ওপর ভিত্তি করে TensorFlow স্থানান্তর শেখার টিউটোরিয়াল

URL = 'https://storage.googleapis.com/cats_vs_dogs_model/cats_vs_dogs_model.zip'
BASE_PATH = tempfile.mkdtemp()
ZIP_PATH = os.path.join(BASE_PATH, 'cats_vs_dogs_model.zip')
MODEL_PATH = os.path.join(BASE_PATH,'cats_vs_dogs_model')

r = requests.get(URL, allow_redirects=True)
open(ZIP_PATH, 'wb').write(r.content)

with zipfile.ZipFile(ZIP_PATH, 'r') as zip_ref:
    zip_ref.extractall(BASE_PATH)

model = tf.keras.models.load_model(MODEL_PATH)
WARNING:tensorflow:SavedModel saved prior to TF 2.5 detected when loading Keras model. Please ensure that you are saving the model with model.save() or tf.keras.models.save_model(), *NOT* tf.saved_model.save(). To confirm, there should be a file named "keras_metadata.pb" in the SavedModel directory.
WARNING:tensorflow:SavedModel saved prior to TF 2.5 detected when loading Keras model. Please ensure that you are saving the model with model.save() or tf.keras.models.save_model(), *NOT* tf.saved_model.save(). To confirm, there should be a file named "keras_metadata.pb" in the SavedModel directory.

ডেটাসেট

বিড়াল-বনাম-কুকুরের ডেটাসেটে, লেবেল=0 বিড়ালের সাথে মিলে যায় যখন লেবেল=1 কুকুরের সাথে মিলে যায়।

def compute_accuracy(data):
  x = np.stack(data['examples'])
  y = np.asarray(data['labels'])
  _, metric = model.evaluate(x, y)
  return metric
examples = cats_vs_dogs.get_data()
print('num validation examples:', len(examples['combined']['examples']))
print('num cat examples:', len(examples['cat']['examples']))
print('num dog examples:', len(examples['dog']['examples']))
num validation examples: 320
num cat examples: 149
num dog examples: 171
2022-01-07 19:54:14.702877: W tensorflow/core/kernels/data/cache_dataset_ops.cc:768] The calling iterator did not fully read the dataset being cached. In order to avoid unexpected truncation of the dataset, the partially cached contents of the dataset  will be discarded. This can happen if you have an input pipeline similar to `dataset.cache().take(k).repeat()`. You should use `dataset.take(k).cache().repeat()` instead.
accuracy = compute_accuracy(examples['combined'])
cat_accuracy = compute_accuracy(examples['cat'])
dog_accuracy = compute_accuracy(examples['dog'])
10/10 [==============================] - 9s 12ms/step - loss: 0.0794 - binary_accuracy: 0.9812
5/5 [==============================] - 1s 41ms/step - loss: 0.0608 - binary_accuracy: 0.9933
6/6 [==============================] - 0s 34ms/step - loss: 0.0956 - binary_accuracy: 0.9708

মডেল কার্ড টুলকিট ব্যবহার করুন

মডেল কার্ড টুলকিট শুরু করুন

প্রথম পদক্ষেপ হল একটি আরম্ভ হয় ModelCardToolkit বস্তু, যা সহ সম্পদ রক্ষণাবেক্ষণ মডেল কার্ড JSON ফাইল এবং মডেল কার্ড ডকুমেন্ট । কল ModelCardToolkit.scaffold_assets() এই সম্পদের উৎপন্ন এবং একটি ফিরতে ModelCard অবজেক্ট।

# https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card_toolkit.py
model_card_dir = tempfile.mkdtemp()
mct = mctlib.ModelCardToolkit(model_card_dir)

# https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card.py
model_card = mct.scaffold_assets()

মডেল কার্ড টীকা

ModelCard বস্তু দ্বারা ফিরে scaffold_assets() বহু ক্ষেত্রে সরাসরি পরিবর্তন করা যাবে না। এই ক্ষেত্রগুলি চূড়ান্ত জেনারেট করা মডেল কার্ড নথিতে রেন্ডার করা হয়। একটি ব্যাপক তালিকা জন্য, দেখুন model_card.py । দেখুন ডকুমেন্টেশন আরো বিস্তারিত জানার জন্য।

পাঠ্য ক্ষেত্র

মডেলের বিবরণ

model_card.model_details যেমন অনেক মৌলিক মেটাডাটা ক্ষেত্র রয়েছে name , owners , এবং version । আপনি আপনার মডেল জন্য একটি বিবরণ প্রদান করতে পারেন overview ক্ষেত্র।

model_card.model_details.name = 'Fine-tuned MobileNetV2 Model for Cats vs. Dogs'
model_card.model_details.overview = (
    'This model distinguishes cat and dog images. It uses the MobileNetV2 '
    'architecture (https://arxiv.org/abs/1801.04381) and is trained on the '
    'Cats vs Dogs dataset '
    '(https://www.tensorflow.org/datasets/catalog/cats_vs_dogs). This model '
    'performed with high accuracy on both Cat and Dog images.'
)
model_card.model_details.owners = [
  mctlib.Owner(name='Model Cards Team', contact='model-cards@google.com')
]
model_card.model_details.version = mctlib.Version(name='v1.0', date='08/28/2020')
model_card.model_details.references = [
    mctlib.Reference(reference='https://www.tensorflow.org/guide/keras/transfer_learning'),
    mctlib.Reference(reference='https://arxiv.org/abs/1801.04381'),
]
model_card.model_details.licenses = [mctlib.License(identifier='Apache-2.0')]
model_card.model_details.citations = [mctlib.Citation(citation='https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb')]
পরিমাণজ্ঞাপক বিশ্লেষণ

model_card.quantitative_analysis একটি মডেল এর পারফরম্যান্সের মেট্রিক্স সম্পর্কে তথ্য উপস্থিত রয়েছে।

নীচে, আমরা আমাদের ডেটাসেটে নির্মিত একটি অনুমানমূলক মডেলের জন্য কিছু সিন্থেটিক কর্মক্ষমতা মেট্রিক মান তৈরি করি।

model_card.quantitative_analysis.performance_metrics = [
  mctlib.PerformanceMetric(type='accuracy', value=str(accuracy)),
  mctlib.PerformanceMetric(type='accuracy', value=str(cat_accuracy), slice='cat'),
  mctlib.PerformanceMetric(type='accuracy', value=str(dog_accuracy), slice='Dog'),
]
বিবেচনা

model_card.considerations আপনার মডেল সম্পর্কে তথ্য যোগ্যতা অর্জন রয়েছে - উপযুক্ত ব্যবহারের ক্ষেত্রে, সীমাবদ্ধতা ব্যবহারকারীরা মনে রাখা উচিত কি, আবেদন নৈতিক বিবেচনার ইত্যাদি কী কী

model_card.considerations.use_cases = [
    mctlib.UseCase(description='This model classifies images of cats and dogs.')
]
model_card.considerations.limitations = [
    mctlib.Limitation(description='This model is not able to classify images of other classes.')
]
model_card.considerations.ethical_considerations = [mctlib.Risk(
    name=
        'While distinguishing between cats and dogs is generally agreed to be '
        'a benign application of machine learning, harmful results can occur '
        'when the model attempts to classify images that don’t contain cats or '
        'dogs.',
    mitigation_strategy=
        'Avoid application on non-dog and non-cat images.'
)]

গ্রাফ ক্ষেত্র

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

model_card গ্রাফ জন্য তিনটি বিভাগে আছে - model_card.model_parameters.data.train.graphics ডেটা সেটটি পরিসংখ্যান প্রশিক্ষণ জন্য, model_card.model_parameters.data.eval.graphics মূল্যায়ন ডেটা সেটটি পরিসংখ্যান জন্য, এবং model_card.quantitative_analysis.graphics মডেল কর্মক্ষমতা পরিমাণগত বিশ্লেষণের জন্য।

গ্রাফ হিসাবে সংরক্ষণ করা হয় করুন Base64- স্ট্রিং । আপনি যদি একটি থাকে তাহলে matplotlib চিত্র, আপনার সাথে একটি করুন Base64- স্ট্রিং এটা রূপান্তর করতে পারেন model_card_toolkit.utils.graphics.figure_to_base64str()

# Validation Set Size Bar Chart
fig, ax = plt.subplots()
width = 0.75
rects0 = ax.bar(0, len(examples['combined']['examples']), width, label='Overall')
rects1 = ax.bar(1, len(examples['cat']['examples']), width, label='Cat')
rects2 = ax.bar(2, len(examples['dog']['examples']), width, label='Dog')
ax.set_xticks(np.arange(3))
ax.set_xticklabels(['Overall', 'Cat', 'Dog'])
ax.set_ylabel('Validation Set Size')
ax.set_xlabel('Slices')
ax.set_title('Validation Set Size for Slices')
validation_set_size_barchart = figure_to_base64str(fig)

png

# Acuracy Bar Chart
fig, ax = plt.subplots()
width = 0.75
rects0 = ax.bar(0, accuracy, width, label='Overall')
rects1 = ax.bar(1, cat_accuracy, width, label='Cat')
rects2 = ax.bar(2, dog_accuracy, width, label='Dog')
ax.set_xticks(np.arange(3))
ax.set_xticklabels(['Overall', 'Cat', 'Dog'])
ax.set_ylabel('Accuracy')
ax.set_xlabel('Slices')
ax.set_title('Accuracy on Slices')
accuracy_barchart = figure_to_base64str(fig)

png

এখন আমরা তাদেরকে আমাদের যোগ করতে পারেন ModelCard

model_card.model_parameters.data.append(mctlib.Dataset())
model_card.model_parameters.data[0].graphics.collection = [
  mctlib.Graphic(name='Validation Set Size', image=validation_set_size_barchart),
]
model_card.quantitative_analysis.graphics.collection = [
  mctlib.Graphic(name='Accuracy', image=accuracy_barchart),
]

মডেল কার্ড তৈরি করুন

মডেল কার্ড নথি তৈরি করা যাক. উপলব্ধ বিন্যাসে এ সংরক্ষণ করা হয় model_card_toolkit / টেমপ্লেট । এখানে, আমরা HTML এবং Markdown ফরম্যাট প্রদর্শন করব।

প্রথমত, আমরা আপডেট করতে হবে ModelCardToolkit সর্বশেষ সঙ্গে ModelCard

mct.update_model_card(model_card)

এখন, ModelCardToolkit সঙ্গে একটি মডেল কার্ড ডকুমেন্ট তৈরি করতে পারেন ModelCardToolkit.export_format()

# Generate a model card document in HTML (default)
html_doc = mct.export_format()

# Display the model card document in HTML
display.display(display.HTML(html_doc))

আপনি মার্কডাউনের মতো অন্যান্য ফরম্যাটেও একটি মডেল কার্ড আউটপুট করতে পারেন।

# Generate a model card document in Markdown
md_path = os.path.join(model_card_dir, 'template/md/default_template.md.jinja')
md_doc = mct.export_format(template_path=md_path, output_file='model_card.md')

# Display the model card document in Markdown
display.display(display.Markdown(md_doc))

বিড়াল বনাম কুকুরের জন্য ফাইন-টিউনড MobileNetV2 মডেলের মডেল কার্ড

মডেলের বিবরণ

ওভারভিউ

এই মডেল বিড়াল এবং কুকুর ইমেজ পার্থক্য. এটা তোলে MobileNetV2 আর্কিটেকচার (ব্যবহার https://arxiv.org/abs/1801.04381 ) এবং বিড়াল কুকুর ডেটা সেটটি বনাম (চালু প্রশিক্ষণ দেওয়া হয় https://www.tensorflow.org/datasets/catalog/cats_vs_dogs )। এই মডেল বিড়াল এবং কুকুর উভয় ইমেজ উচ্চ নির্ভুলতা সঙ্গে সঞ্চালিত.

সংস্করণ

নাম: v1.0

তারিখ: 08/28/2020

মালিকদের

  • মডেল কার্ড টিম, model-cards@google.com

লাইসেন্স

  • অ্যাপাচি-2.0

তথ্যসূত্র

উদ্ধৃতি

বিবেচনা

ব্যবহারের ক্ষেত্রে

  • এই মডেলটি বিড়াল এবং কুকুরের ছবিকে শ্রেণীবদ্ধ করে।

সীমাবদ্ধতা

  • এই মডেলটি অন্যান্য শ্রেণীর চিত্রগুলিকে শ্রেণীবদ্ধ করতে সক্ষম নয়৷

নৈতিক বিবেচ্য বিষয়

  • ঝুঁকি: যদিও বিড়াল এবং কুকুরের মধ্যে পার্থক্য করাকে সাধারণত মেশিন লার্নিংয়ের একটি সৌম্য প্রয়োগ হিসাবে সম্মত করা হয়, তখন ক্ষতিকারক ফলাফল ঘটতে পারে যখন মডেলটি বিড়াল বা কুকুর নেই এমন চিত্রগুলিকে শ্রেণিবদ্ধ করার চেষ্টা করে।
    • প্রশমন কৌশল: নন-ডগ এবং নন-বিড়াল ছবিতে প্রয়োগ এড়িয়ে চলুন।

গ্রাফিক্স

বৈধতা সেট আকার

সঠিকতা

মেট্রিক্স

নাম মান
সঠিকতা 0.981249988079071
নির্ভুলতা, বিড়াল 0.9932885766029358
সঠিকতা, কুকুর 0.9707602262496948