Hub Python Library documentation
Paradigme Git par rapport à HTTP
Paradigme Git par rapport à HTTP
La bibliothèque huggingface_hub est une bibliothèque pour interagir avec le Hugging Face Hub, qui est une collection de dépôts basés sur git (modèles, jeux de données ou Spaces). Il existe deux principales façons d’accéder au Hub à l’aide de huggingface_hub.
La première approche, dite « basée sur git », repose sur l’utilisation directe des commandes git standard dans un terminal. Cette méthode permet de cloner des dépôts, de créer des commits et de pousser les modifications manuellement. La seconde option, appelée « basée sur HTTP », consiste à effectuer des requêtes HTTP à l’aide du client HfApi. Examinons les avantages et les inconvénients de chaque approche.
Git : l’approche historique basée sur l’interface en ligne de commande
Au départ, la plupart des utilisateurs interagissaient avec le Hugging Face Hub à l'aide de commandes git classiques telles que git clone, git add, git commit, git push, git tag ou git checkout.
Cette approche vous permet de travailler avec une copie locale complète du dépôt sur votre machine, tout comme en développement logiciel traditionnel. Cela peut s’avérer avantageux lorsque vous avez besoin d’un accès hors ligne ou souhaitez travailler avec l’historique complet d’un dépôt. Cependant, cela comporte également des inconvénients : vous êtes responsable du maintien à jour du dépôt localement, de la gestion des identifiants et de la gestion des fichiers volumineux (via git-lfs), ce qui peut devenir fastidieux lors du travail avec de grands modèles d’apprentissage automatique ou des jeux de données.
Dans de nombreux flux de travail d'apprentissage automatique, il peut suffire de télécharger quelques fichiers pour l'inférence ou de convertir les poids sans avoir besoin de cloner l'intégralité du dépôt. Dans de tels cas, l'utilisation de git peut être excessive et introduire une complexité inutile.
HfApi : un client HTTP flexible et pratique
La classe HfApi a été développée pour offrir une alternative à l'utilisation de dépôts git locaux, qui peuvent être fastidieux à maintenir, en particulier lors du traitement de modèles ou de jeux de données volumineux. La classe HfApi propose les mêmes fonctionnalités que les flux de travail basés sur git – tels que le téléchargement et la poussée de fichiers, ainsi que la création de branches et de tags – mais sans nécessiter de dossier local à garder synchronisé.
En plus des fonctionnalités déjà fournies par git, la classe HfApi offre des fonctionnalités supplémentaires, telles que la possibilité de gérer des dépôts, de télécharger des fichiers en utilisant la mise en cache pour une réutilisation efficace, de rechercher des dépôts et des métadonnées sur le Hub, d’accéder aux fonctionnalités communautaires telles que les discussions, les PR et les commentaires, et de configurer le matériel et les secrets des Spaces.
Que dois-je utiliser ? Et quand ?
Dans l’ensemble, l’approche basée sur HTTP est la méthode recommandée pour utiliser huggingface_hub dans tous les cas. HfApi vous permet de récupérer et de pousser des modifications, de travailler avec des PR, des tags et des branches, d’interagir avec les discussions et bien plus encore.
Cependant, toutes les commandes git ne sont pas disponibles via HfApi. Certaines ne seront peut-être jamais implémentées, mais nous cherchons constamment à améliorer et à combler cet écart. Si votre cas d’usage n’est pas couvert, veuillez ouvrir un ticket sur GitHub ! Nous accueillons vos retours pour contribuer à construire l’écosystème HF avec et pour nos utilisateurs.
Cette préférence pour l’API HTTP HfApi par rapport aux commandes git directes ne signifie pas que la gestion des versions par git disparaîtra du Hugging Face Hub de sitôt. Il sera toujours possible d’utiliser git localement dans les flux de travail où cela a du sens.