bindings/python/convert_all.py (36 lines of code) (raw):
"""Simple utility tool to convert automatically most downloaded models"""
from convert import AlreadyExists, convert
from huggingface_hub import HfApi, ModelFilter, ModelSearchArguments
from transformers import AutoConfig
if __name__ == "__main__":
api = HfApi()
args = ModelSearchArguments()
total = 50
models = list(
api.list_models(filter=ModelFilter(library=args.library.Transformers), sort="downloads", direction=-1)
)[:total]
correct = 0
errors = set()
for model in models:
model = api.model_info(model.id, files_metadata=True)
size = None
for sibling in model.siblings:
if sibling.rfilename == "pytorch_model.bin":
size = sibling.size
if size is None or size > 2_000_000_000:
print(f"[{model.downloads}] Skipping {model.modelId} (too large {size})")
continue
model_id = model.modelId
print(f"[{model.downloads}] {model.modelId}")
try:
convert(api, model_id)
correct += 1
except AlreadyExists as e:
correct += 1
print(e)
except Exception as e:
config = AutoConfig.from_pretrained(model_id)
errors.add(config.__class__.__name__)
print(e)
print(f"Errors: {errors}")
print(f"File size is difference {len(errors)}")
print(f"Correct rate {correct}/{total} ({correct/total * 100:.2f}%)")