Model Card Toolkit:助力 TensorFlow 模型透明度的工具包

2020 年 12 月 30 日 TensorFlow

文 / Karan Shukla,软件工程师,Google Research


从医疗保健到个人金融再到就业等影响人们生活的广泛领域中,机器学习 (ML) 模型的透明度至关重要。出于对透明度的迫切需要,Google 开发出了能够以透明方式报告 ML 模型的性能、来源以及道德考量的框架 — Model Card(模型名片)。然而,汇集用于创建实用 Model Card 所需的信息可能会很耗时。为了解决这个问题,我们最近发布开源 Model Card Toolkit (MCT),ML 开发者可借助这一工具集汇聚 Model Card 所需的输入信息。

  • Model Card
    https://arxiv.org/pdf/1810.03993.pdf

  • Model Card Toolkit
    https://github.com/tensorflow/model-card-toolkit


该工具包包括:
  • JSON 架构,指定了需包含在 Model Card 中的字段
  • ModelCard 数据 API,用于表示 JSON 架构的实例并将其呈现为 Model Card
  • 一个组件,它可以使用存储在 ML Metadata (MLMD) 中的模型来源信息自动为 JSON 填充相关信息

  • JSON 架构
    https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/schema/v0.0.1/model_card.schema.json
  • ML Metadata
    https://tensorflow.google.cn/tfx/guide/mlmd


我们对该工具包的设计初衷是采用模块化风格,这样一来,即使 Model Card 创建者的建模环境未与 MLMD 集成,仍可以利用 JSON 架构和 ModelCard 数据 API。在本文中,我们将向您展示如何使用这些组件来为由 Keras 构建、在 ImageNet 上训练并在 TensorFlow Datasets (TFDS) 提供的 cats_vs_dogs 数据集上进行调优的 MobileNet V2 模型创建 Model Card。尽管从透明度的角度而言,此模型和用例可能不太具代表性,但我们以此向您轻松展示 MCT 的组成部分。

Model Card 示例:点击放大查看清晰图片

  • TensorFlow Datasets
    https://tensorflow.google.cndatasets

  • cats_vs_dogs
    https://tensorflow.google.cn/datasets/catalog/cats_vs_dogs



Model Card Toolkit 速览

您可以按照说明,在 Colab notebook 中自行运行代码。在展示中,我们将额外介绍工具包使用注意事项的相关信息。

  • Colab notebook
    https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb


首先安装 Model Card Toolkit。

!pip install 'model-card-toolkit>=0.1.1,<0.2'


现在,我们加载 MobileNet V2 模型和通过在 cats_vs_dogs 数据集中调优模型而生成的权重。有关如何调优模型的更多信息,您可以参阅相关主题的 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)
  • TensorFlow 教程
    https://tensorflow.google.cn/tutorials/images/transfer_learning


我们还将计算样本的数量(将其存储到“examples”对象中)以及准确率得分(按类分组)。稍后,我们将使用准确率和样本来构建要在 Model Card 中显示的图表。

examples = cats_vs_dogs.get_data()
accuracy = compute_accuracy(examples['combined'])
cat_accuracy = compute_accuracy(examples['cat'])
dog_accuracy = compute_accuracy(examples['dog'])


接下来,我们将使用 Model Card Toolkit 创建 Model Card。第一步是初始化 ModelCardToolkit 对象,该对象用于维护资源,包括  Model Card JSON 文件Model Card 文档。调用 ModelCardToolkit.scaffold_assets() 生成这些资源并返回 ModelCard 对象。

model_card_dir = tempfile.mkdtemp()
mct = ModelCardToolkit(model_card_dir)
model_card = mct.scaffold_assets()
  • Model Card JSON 文件
    https://github.com/tensorflow/model-card-toolkit/tree/master/model_card_toolkit/schema/

  • Model Card 文档
    https://github.com/tensorflow/model-card-toolkit/tree/master/model_card_toolkit/template


然后填充 Model Card 的字段。首先,我们将填写 model_card.model_details 部分,其中包含基本的元数据字段。


先指定模型的 name,然后在 overview 部分对模型进行简述。

model_card.model_details.name = 'Fine-tuned MobileNetV2 Model for Cat 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.'
)


我们提供模型的 ownersversionreferences

model_card.model_details.owners = [
{'name': 'Model Cards Team', 'contact': 'model-cards@google.com'}
]
model_card.model_details.version = {'name': 'v1.0', 'data': '08/28/2020'}
model_card.model_details.references = [
'https://www.tensorflow.org/guide/keras/transfer_learning',
'https://arxiv.org/abs/1801.04381',
]


最后,指定共享模型的 license,以及一个网址,如果未来用户选择在 citation 部分重用该模型,他们可以引用该网址。

model_card.model_details.license = 'Apache-2.0'
model_card.model_details.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 = [
{'type': 'accuracy', 'value': accuracy},
{'type': 'accuracy', 'value': cat_accuracy, 'slice': 'cat'},
{'type': 'accuracy', 'value': dog_accuracy, 'slice': 'Dog'},
]


model_card.considerations 包含模型的定性信息。特别是,我们建议包括以下部分或全部信息:


用例:此模型的预期用例是什么?在本例中非常直观:

model_card.considerations.use_cases = [
'This model classifies images of cats and dogs.'
]


限制:用户应注意哪些技术限制?哪些数据会导致您的模型失效或性能低下?在我们的用例中,非狗或猫的样本会导致我们的模型失效,因此我们表明这一点:

model_card.considerations.limitations = [
'This model is not able to classify images of other animals.'
]


道德考量:用户在决定是否使用模型时应注意哪些道德方面的考量?模型在什么情况下会引起道德问题?您采取了哪些措施来缓解道德问题?

model_card.considerations.ethical_considerations = [{
'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_card.model_parameters.data.train.graphics,用于训练数据集统计信息
  • model_card.model_parameters.data.eval.graphics,用于评估数据集统计信息
  • model_card.quantitative_analysis.graphics,用于模型性能的定量分析


对于此 Model Card ,我们添加了验证集大小和模型准确率的 Matplotlib 图表,二者均按类分组。如果您想查看 Matplotlib 代码,请访问相关的 Colab。如果您使用的是 ML Metadata,将自动生成这些图表(如本 Colab 中所示)。您还可以使用其他呈现库,例如 Seaborn。

  • 相关的 Colab
    https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb

  • ML Metadata
    https://tensorflow.google.cn/tfx/guide/mlmd

  • 本 Colab
    https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/MLMD_Model_Card_Toolkit_Demo.ipynb


将图表添加到 Model Card 中。

model_card.model_parameters.data.eval.graphics.collection = [

{'name': 'Validation Set Size', 'image': validation_set_size_barchart},
]
model_card.quantitative_analysis.graphics.collection = [
{'name': 'Accuracy', 'image': accuracy_barchart},
]


我们终于准备好生成自己的 Model Card 了!现在开始吧。首先,我们需要用最新的 ModelCard 更新 ModelCardToolkit 对象。

mct.update_model_card_json(model_card)


最后,我们以指定的格式输出生成 Model Card 文档。

# 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(md_path, 'model_card.md')

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

我们已经生成 Model Card!您可以与您的直属团队以及未参与项目的成员一起审查最终产品。我们特别建议您审查“道德考量”等定性字段,以确保您已充分了解所有用例及其潜在后果。您的 Model Card 是否解决了来自不同背景的人可能遇到的问题?开发者可以使用该语言吗?那么政策制定者或可能与模型互动的下游用户呢?今后,我们希望为 Model Card 创建者提供更多指导,以帮助他们回答这些问题,并针对如何填写 considerations 字段提供更详尽的说明。


如有任何问题,或者想要分享 Model Card ,请发送电子邮件至 model-cards@google.com 与我们联系!



致谢

Huanming Fang、Hui Miao、Karan Shukla、Dan Nanas、Catherina Xu、Christina Greer、Neoklis Polyzotis、Tulsee Doshi、Tiffany Deng、Margaret Mitchell、Timnit Gebru、Andrew Zaldivar、Mahima Pushkarna、Meena Natarajan、Roy Kim、Parker Barnes、Tom Murray、Susanna Ricco、Lucy Vasserman 和 Simone Wu。



— 推荐阅读 —




了解更多请点击 “阅读原文” 访问官网。

点‘在看’让我看到你的 AI ❤️~

登录查看更多
0

相关内容

ACM/IEEE第23届模型驱动工程语言和系统国际会议,是模型驱动软件和系统工程的首要会议系列,由ACM-SIGSOFT和IEEE-TCSE支持组织。自1998年以来,模型涵盖了建模的各个方面,从语言和方法到工具和应用程序。模特的参加者来自不同的背景,包括研究人员、学者、工程师和工业专业人士。MODELS 2019是一个论坛,参与者可以围绕建模和模型驱动的软件和系统交流前沿研究成果和创新实践经验。今年的版本将为建模社区提供进一步推进建模基础的机会,并在网络物理系统、嵌入式系统、社会技术系统、云计算、大数据、机器学习、安全、开源等新兴领域提出建模的创新应用以及可持续性。 官网链接:http://www.modelsconference.org/
【2021新书】机器学习模型生产部署实践,161页pdf,
专知会员服务
111+阅读 · 2021年6月11日
专知会员服务
58+阅读 · 2021年5月20日
专知会员服务
295+阅读 · 2021年4月8日
【AAAI2021 Tutorial】工业界负责任的人工智能,262页ppt
专知会员服务
115+阅读 · 2021年2月7日
TensorFlow 模型优化工具包 — 训练时量化
TensorFlow
7+阅读 · 2020年4月15日
MLIR 发布:全新的中介码与编译器框架
谷歌开发者
8+阅读 · 2019年4月10日
微软开源的深度学习模型转换工具MMdnn
极市平台
6+阅读 · 2018年10月27日
Github 项目推荐 | 用 TensorFlow 实现的模型集合
AI研习社
5+阅读 · 2018年2月14日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
Arxiv
0+阅读 · 2021年6月10日
Arxiv
0+阅读 · 2021年6月10日
Arxiv
0+阅读 · 2021年6月8日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
3+阅读 · 2018年5月28日
VIP会员
相关资讯
TensorFlow 模型优化工具包 — 训练时量化
TensorFlow
7+阅读 · 2020年4月15日
MLIR 发布:全新的中介码与编译器框架
谷歌开发者
8+阅读 · 2019年4月10日
微软开源的深度学习模型转换工具MMdnn
极市平台
6+阅读 · 2018年10月27日
Github 项目推荐 | 用 TensorFlow 实现的模型集合
AI研习社
5+阅读 · 2018年2月14日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
Top
微信扫码咨询专知VIP会员