Hub Python Library documentation

Den Hub durchsuchen

You are viewing v0.18.0.rc0 version. A newer version v0.23.4 is available.
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Den Hub durchsuchen

In diesem Tutorial lernen Sie, wie Sie Modelle, Datensätze und Spaces auf dem Hub mit huggingface_hub durchsuchen können.

Wie listet man Repositories auf?

Die huggingface_hub-Bibliothek enthält einen HTTP-Client HfApi, um mit dem Hub zu interagieren. Unter anderem kann er Modelle, Datensätze und Spaces auflisten, die auf dem Hub gespeichert sind:

>>> from huggingface_hub import HfApi
>>> api = HfApi()
>>> models = api.list_models()

Die Ausgabe von list_models() ist ein Iterator über die auf dem Hub gespeicherten Modelle.

Ähnlich können Sie list_datasets() verwenden, um Datensätze aufzulisten und list_spaces(), um Spaces aufzulisten.

Wie filtert man Repositories?

Das Auflisten von Repositories ist großartig, aber jetzt möchten Sie vielleicht Ihre Suche filtern. Die List-Helfer haben mehrere Attribute wie:

  • filter
  • author
  • search

Zwei dieser Parameter sind intuitiv (author und search), aber was ist mit diesem filter? filter nimmt als Eingabe ein ModelFilter-Objekt (oder DatasetFilter) entgegen. Sie können es instanziieren, indem Sie angeben, welche Modelle Sie filtern möchten.

Hier ist ein Beispiel, um alle Modelle auf dem Hub zu erhalten, die Bildklassifizierung durchführen, auf dem Imagenet-Datensatz trainiert wurden und mit PyTorch laufen. Das kann mit einem einzigen ModelFilter erreicht werden. Attribute werden als “logisches UND” kombiniert.

models = hf_api.list_models(
    filter=ModelFilter(
		task="image-classification",
		library="pytorch",
		trained_dataset="imagenet"
	)
)

Während des Filterns können Sie auch die Modelle sortieren und nur die Top-Ergebnisse abrufen. Zum Beispiel holt das folgende Beispiel die 5 am häufigsten heruntergeladenen Datensätze auf dem Hub:

>>> list_datasets(sort="downloads", direction=-1, limit=5)
[DatasetInfo: {
        id: glue
		downloads: 897789
		(...)

Wie erkundet man Filteroptionen?

Jetzt wissen Sie, wie Sie Ihre Liste von Modellen/Datensätzen/Räumen filtern können. Das Problem könnte sein, dass Sie nicht genau wissen, wonach Sie suchen. Keine Sorge! Wir bieten auch einige Hilfsprogramme an, mit denen Sie entdecken können, welche Argumente Sie in Ihrer Abfrage übergeben können.

ModelSearchArguments und DatasetSearchArguments sind geschachtelte Namespace-Objekte, die jede einzelne Option auf dem Hub haben und die zurückgeben, was an filter übergeben werden sollte. Das Beste von allem ist: Es hat Tab-Vervollständigung 🎊.

>>> from huggingface_hub import ModelSearchArguments, DatasetSearchArguments

>>> model_args = ModelSearchArguments()
>>> dataset_args = DatasetSearchArguments()

Bevor Sie weitermachen, beachten Sie bitte, dass ModelSearchArguments und DatasetSearchArguments veraltete Hilfsprogramme sind, die nur zu Erkundungszwecken gedacht sind. Ihre Initialisierung erfordert das Auflisten aller Modelle und Datensätze auf dem Hub, was sie zunehmend langsamer macht, je mehr Repos auf dem Hub vorhanden sind. Für produktionsbereiten Code sollten Sie in Erwägung ziehen, rohe Zeichenketten (raw strings) zu übergeben, wenn Sie eine gefilterte Suche auf dem Hub durchführen.

Sehen wir uns nun an, was in model_args verfügbar ist, indem wir seine Ausgabe überprüfen:

>>> model_args
Available Attributes or Keys:
 * author
 * dataset
 * language
 * library
 * license
 * model_name
 * pipeline_tag

Es stehen Ihnen eine Vielzahl von Attributen oder Schlüsseln zur Verfügung. Dies liegt daran, dass es sowohl ein Objekt als auch ein Wörterbuch ist. Daher können Sie entweder model_args["author"] oder model_args.author verwenden.

Das erste Kriterium besteht darin, alle PyTorch-Modelle zu erhalten. Dies wäre unter dem Attribut library zu finden, schauen wir also, ob es da ist:

>>> model_args.library
Available Attributes or Keys:
 * AdapterTransformers
 * Asteroid
 * ESPnet
 * Fairseq
 * Flair
 * JAX
 * Joblib
 * Keras
 * ONNX
 * PyTorch
 * Rust
 * Scikit_learn
 * SentenceTransformers
 * Stable_Baselines3 (Key only)
 * Stanza
 * TFLite
 * TensorBoard
 * TensorFlow
 * TensorFlowTTS
 * Timm
 * Transformers
 * allenNLP
 * fastText
 * fastai
 * pyannote_audio
 * spaCy
 * speechbrain

Es ist da! Der Name PyTorch ist vorhanden, daher müssen Sie model_args.library.PyTorch verwenden:

>>> model_args.library.PyTorch
'pytorch'

Im Folgenden finden Sie eine Animation, die den Vorgang zur Suche nach den Anforderungen Textklassifizierung (Text Classification) and glue wiederholt:

Animation exploring 'model_args.pipeline_tag'

Animation exploring 'model_args.dataset'

Jetzt, da alle Teile vorhanden sind, besteht der letzte Schritt darin, sie alle für etwas zu kombinieren, das die API über die Klassen ModelFilter und DatasetFilter verwenden kann (d.h. Zeichenketten / strings).

>>> from huggingface_hub import ModelFilter, DatasetFilter

>>> filt = ModelFilter(
...     task=model_args.pipeline_tag.TextClassification, 
...     trained_dataset=dataset_args.dataset_name.glue, 
...     library=model_args.library.PyTorch
... )
>>> api.list_models(filter=filt)[0]
ModelInfo: {
	modelId: Jiva/xlm-roberta-large-it-mnli
	sha: c6e64469ec4aa17fedbd1b2522256f90a90b5b86
	lastModified: 2021-12-10T14:56:38.000Z
	tags: ['pytorch', 'xlm-roberta', 'text-classification', 'it', 'dataset:multi_nli', 'dataset:glue', 'arxiv:1911.02116', 'transformers', 'tensorflow', 'license:mit', 'zero-shot-classification']
	pipeline_tag: zero-shot-classification
	siblings: [ModelFile(rfilename='.gitattributes'), ModelFile(rfilename='README.md'), ModelFile(rfilename='config.json'), ModelFile(rfilename='pytorch_model.bin'), ModelFile(rfilename='sentencepiece.bpe.model'), ModelFile(rfilename='special_tokens_map.json'), ModelFile(rfilename='tokenizer.json'), ModelFile(rfilename='tokenizer_config.json')]
	config: None
	id: Jiva/xlm-roberta-large-it-mnli
	private: False
	downloads: 11061
	library_name: transformers
	likes: 1
}

Wie Sie sehen können, wurden die Modelle gefunden, die allen Kriterien entsprechen. Sie können es sogar noch weiter bringen, indem Sie ein Array für jeden der vorherigen Parameter übergeben. Zum Beispiel, schauen wir uns dieselbe Konfiguration an, aber schließen auch TensorFlow in den Filter ein:

>>> filt = ModelFilter(
...     task=model_args.pipeline_tag.TextClassification, 
...     library=[model_args.library.PyTorch, model_args.library.TensorFlow]
... )
>>> api.list_models(filter=filt)[0]
ModelInfo: {
	modelId: distilbert-base-uncased-finetuned-sst-2-english
	sha: ada5cc01a40ea664f0a490d0b5f88c97ab460470
	lastModified: 2022-03-22T19:47:08.000Z
	tags: ['pytorch', 'tf', 'rust', 'distilbert', 'text-classification', 'en', 'dataset:sst-2', 'transformers', 'license:apache-2.0', 'infinity_compatible']
	pipeline_tag: text-classification
	siblings: [ModelFile(rfilename='.gitattributes'), ModelFile(rfilename='README.md'), ModelFile(rfilename='config.json'), ModelFile(rfilename='map.jpeg'), ModelFile(rfilename='pytorch_model.bin'), ModelFile(rfilename='rust_model.ot'), ModelFile(rfilename='tf_model.h5'), ModelFile(rfilename='tokenizer_config.json'), ModelFile(rfilename='vocab.txt')]
	config: None
	id: distilbert-base-uncased-finetuned-sst-2-english
	private: False
	downloads: 3917525
	library_name: transformers
	likes: 49
}

Diese Abfrage entspricht streng:

>>> filt = ModelFilter(
...     task="text-classification", 
...     library=["pytorch", "tensorflow"],
... )

Hier war ModelSearchArguments ein Helfer, um die auf dem Hub verfügbaren Optionen zu erkunden. Es ist jedoch keine Voraussetzung für eine Suche. Eine andere Möglichkeit, dies zu tun, besteht darin, die Modelle und Datensätze Seiten in Ihrem Browser zu besuchen, nach einigen Parametern zu suchen und die Werte in der URL anzusehen.