Model card defaults (#12122)
* [WIP] Model card defaults * finetuned_from default value * Add all mappings to the mapping file * Be more defensive on finetuned_from arg * Add default task tag * Separate tags from tasks * Edge case for dataset * Apply suggestions from code review Co-authored-by: Lysandre Debut <lysandre@huggingface.co> Co-authored-by: Lysandre Debut <lysandre@huggingface.co>
This commit is contained in:
@@ -30,31 +30,77 @@ sys.path.insert(1, git_repo_path)
|
||||
src = "src/transformers/models/auto/modeling_auto.py"
|
||||
dst = "src/transformers/utils/modeling_auto_mapping.py"
|
||||
|
||||
|
||||
if os.path.exists(dst) and os.path.getmtime(src) < os.path.getmtime(dst):
|
||||
# speed things up by only running this script if the src is newer than dst
|
||||
sys.exit(0)
|
||||
|
||||
# only load if needed
|
||||
from transformers.models.auto.modeling_auto import MODEL_FOR_QUESTION_ANSWERING_MAPPING # noqa
|
||||
|
||||
|
||||
entries = "\n".join(
|
||||
[f' ("{k.__name__}", "{v.__name__}"),' for k, v in MODEL_FOR_QUESTION_ANSWERING_MAPPING.items()]
|
||||
from transformers.models.auto.modeling_auto import ( # noqa
|
||||
MODEL_FOR_CAUSAL_LM_MAPPING,
|
||||
MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
|
||||
MODEL_FOR_MASKED_LM_MAPPING,
|
||||
MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
|
||||
MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
|
||||
MODEL_FOR_OBJECT_DETECTION_MAPPING,
|
||||
MODEL_FOR_PRETRAINING_MAPPING,
|
||||
MODEL_FOR_QUESTION_ANSWERING_MAPPING,
|
||||
MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
|
||||
MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
|
||||
MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
|
||||
MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
|
||||
MODEL_MAPPING,
|
||||
MODEL_WITH_LM_HEAD_MAPPING,
|
||||
)
|
||||
|
||||
|
||||
# Those constants don't have a name attribute, so we need to define it manually
|
||||
mappings = {
|
||||
"MODEL_FOR_QUESTION_ANSWERING_MAPPING": MODEL_FOR_QUESTION_ANSWERING_MAPPING,
|
||||
"MODEL_FOR_CAUSAL_LM_MAPPING": MODEL_FOR_CAUSAL_LM_MAPPING,
|
||||
"MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING": MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
|
||||
"MODEL_FOR_MASKED_LM_MAPPING": MODEL_FOR_MASKED_LM_MAPPING,
|
||||
"MODEL_FOR_MULTIPLE_CHOICE_MAPPING": MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
|
||||
"MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING": MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
|
||||
"MODEL_FOR_OBJECT_DETECTION_MAPPING": MODEL_FOR_OBJECT_DETECTION_MAPPING,
|
||||
"MODEL_FOR_OBJECT_DETECTION_MAPPING": MODEL_FOR_OBJECT_DETECTION_MAPPING,
|
||||
"MODEL_FOR_QUESTION_ANSWERING_MAPPING": MODEL_FOR_QUESTION_ANSWERING_MAPPING,
|
||||
"MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING": MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
|
||||
"MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING": MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
|
||||
"MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING": MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
|
||||
"MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING": MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
|
||||
"MODEL_MAPPING": MODEL_MAPPING,
|
||||
"MODEL_WITH_LM_HEAD_MAPPING": MODEL_WITH_LM_HEAD_MAPPING,
|
||||
}
|
||||
|
||||
|
||||
def get_name(value):
|
||||
if isinstance(value, tuple):
|
||||
return tuple(get_name(o) for o in value)
|
||||
return value.__name__
|
||||
|
||||
|
||||
content = [
|
||||
"# THIS FILE HAS BEEN AUTOGENERATED. To update:",
|
||||
"# 1. modify: models/auto/modeling_auto.py",
|
||||
"# 2. run: python utils/class_mapping_update.py",
|
||||
"from collections import OrderedDict",
|
||||
"",
|
||||
"",
|
||||
"MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES = OrderedDict(",
|
||||
" [",
|
||||
entries,
|
||||
" ]",
|
||||
")",
|
||||
"",
|
||||
]
|
||||
print(f"updating {dst}")
|
||||
|
||||
for name, mapping in mappings.items():
|
||||
entries = "\n".join([f' ("{k.__name__}", "{get_name(v)}"),' for k, v in mapping.items()])
|
||||
|
||||
content += [
|
||||
"",
|
||||
f"{name}_NAMES = OrderedDict(",
|
||||
" [",
|
||||
entries,
|
||||
" ]",
|
||||
")",
|
||||
"",
|
||||
]
|
||||
|
||||
print(f"Updating {dst}")
|
||||
with open(dst, "w", encoding="utf-8", newline="\n") as f:
|
||||
f.write("\n".join(content))
|
||||
|
||||
Reference in New Issue
Block a user