|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import json |
|
import os |
|
import tempfile |
|
import unittest |
|
|
|
from transformers.modelcard import ModelCard |
|
|
|
|
|
class ModelCardTester(unittest.TestCase): |
|
def setUp(self): |
|
self.inputs_dict = { |
|
"model_details": { |
|
"Organization": "testing", |
|
"Model date": "today", |
|
"Model version": "v2.1, Developed by Test Corp in 2019.", |
|
"Architecture": "Convolutional Neural Network.", |
|
}, |
|
"metrics": "BLEU and ROUGE-1", |
|
"evaluation_data": { |
|
"Datasets": {"BLEU": "My-great-dataset-v1", "ROUGE-1": "My-short-dataset-v2.1"}, |
|
"Preprocessing": "See details on https://arxiv.org/pdf/1810.03993.pdf", |
|
}, |
|
"training_data": { |
|
"Dataset": "English Wikipedia dump dated 2018-12-01", |
|
"Preprocessing": ( |
|
"Using SentencePiece vocabulary of size 52k tokens. See details on" |
|
" https://arxiv.org/pdf/1810.03993.pdf" |
|
), |
|
}, |
|
"quantitative_analyses": {"BLEU": 55.1, "ROUGE-1": 76}, |
|
} |
|
|
|
def test_model_card_common_properties(self): |
|
modelcard = ModelCard.from_dict(self.inputs_dict) |
|
self.assertTrue(hasattr(modelcard, "model_details")) |
|
self.assertTrue(hasattr(modelcard, "intended_use")) |
|
self.assertTrue(hasattr(modelcard, "factors")) |
|
self.assertTrue(hasattr(modelcard, "metrics")) |
|
self.assertTrue(hasattr(modelcard, "evaluation_data")) |
|
self.assertTrue(hasattr(modelcard, "training_data")) |
|
self.assertTrue(hasattr(modelcard, "quantitative_analyses")) |
|
self.assertTrue(hasattr(modelcard, "ethical_considerations")) |
|
self.assertTrue(hasattr(modelcard, "caveats_and_recommendations")) |
|
|
|
def test_model_card_to_json_string(self): |
|
modelcard = ModelCard.from_dict(self.inputs_dict) |
|
obj = json.loads(modelcard.to_json_string()) |
|
for key, value in self.inputs_dict.items(): |
|
self.assertEqual(obj[key], value) |
|
|
|
def test_model_card_to_json_file(self): |
|
model_card_first = ModelCard.from_dict(self.inputs_dict) |
|
|
|
with tempfile.TemporaryDirectory() as tmpdirname: |
|
filename = os.path.join(tmpdirname, "modelcard.json") |
|
model_card_first.to_json_file(filename) |
|
model_card_second = ModelCard.from_json_file(filename) |
|
|
|
self.assertEqual(model_card_second.to_dict(), model_card_first.to_dict()) |
|
|
|
def test_model_card_from_and_save_pretrained(self): |
|
model_card_first = ModelCard.from_dict(self.inputs_dict) |
|
|
|
with tempfile.TemporaryDirectory() as tmpdirname: |
|
model_card_first.save_pretrained(tmpdirname) |
|
model_card_second = ModelCard.from_pretrained(tmpdirname) |
|
|
|
self.assertEqual(model_card_second.to_dict(), model_card_first.to_dict()) |
|
|