1
from allennlp.common.params import Params
2
from allennlp.common.testing import AllenNlpTestCase
3
from allennlp.common.model_card import ModelCard, ModelUsage, IntendedUse, Paper
4
from allennlp.models import Model
7
class TestPretrainedModelConfiguration(AllenNlpTestCase):
9
model_card = ModelCard(
11
display_name="Fake Name",
12
model_details="Model's description",
13
model_usage=ModelUsage(**{"archive_file": "fake.tar.gz", "overrides": {}}),
16
assert model_card.id == "fake_name"
17
assert model_card.display_name == "Fake Name"
18
assert model_card.model_usage.archive_file == ModelUsage._storage_location + "fake.tar.gz"
19
assert model_card.model_details.description == "Model's description"
21
def test_init_registered_model(self):
22
@Model.register("fake-model")
23
class FakeModel(Model):
25
This is a fake model with a docstring.
33
def forward(self, **kwargs):
36
model_card = ModelCard(**{"id": "this-fake-model", "registered_model_name": "fake-model"})
38
assert model_card.display_name == "FakeModel"
39
assert model_card.model_details.description == "This is a fake model with a docstring."
41
def test_init_dict_model(self):
42
class FakeModel(Model):
44
This is a fake model with a docstring.
52
def forward(self, **kwargs):
55
model_card = ModelCard(**{"id": "this-fake-model", "model_class": FakeModel})
57
assert model_card.display_name == "FakeModel"
58
assert model_card.model_details.description == "This is a fake model with a docstring."
60
def test_init_registered_model_override(self):
61
@Model.register("fake-model-2")
62
class FakeModel(Model):
64
This is a fake model with a docstring.
72
def forward(self, **kwargs):
75
model_card = ModelCard(
77
"id": "this-fake-model",
78
"registered_model_name": "fake-model-2",
79
"model_details": "This is the fake model trained on a dataset.",
80
"model_class": FakeModel,
85
model_card.model_details.description == "This is the fake model trained on a dataset."
88
def test_init_model_card_info_obj(self):
89
@Model.register("fake-model-3")
90
class FakeModel(Model):
92
This is a fake model with a docstring.
100
def forward(self, **kwargs):
103
intended_use = IntendedUse("Use 1", "User 1")
105
model_card = ModelCard(
107
"id": "this-fake-model",
108
"registered_model_name": "fake-model-3",
109
"intended_use": intended_use,
113
model_card_dict = model_card.to_dict()
114
assert model_card.display_name == "FakeModel"
116
for key, val in intended_use.__dict__.items():
118
assert key in model_card_dict
120
assert key not in model_card_dict
122
def test_nested_json(self):
123
@Model.register("fake-model-4")
124
class FakeModel(Model):
126
This is a fake model with a docstring.
134
def forward(self, **kwargs):
137
model_card = ModelCard.from_params(
140
"id": "this-fake-model",
141
"registered_model_name": "fake-model-4",
143
"description": "This is the fake model trained on a dataset.",
145
"title": "paper name",
147
"citation": "test citation",
150
"training_data": {"dataset": {"name": "dataset 1", "url": "dataset url"}},
155
assert isinstance(model_card.model_details.paper, Paper)
156
assert model_card.model_details.paper.url == "paper link"
157
assert model_card.training_data.dataset.name == "dataset 1"