Hub Python Library documentation
Référence du système de cache
Référence du système de cache
Le système de cache a été mis à jour dans la v0.8.0 pour devenir le système de cache central partagé entre les bibliothèques qui dépendent du Hub. Consultez le guide du système de cache pour une présentation détaillée du cache sur HF.
Aides
try_to_load_from_cache
huggingface_hub.try_to_load_from_cache
< source >( repo_id: strfilename: strcache_dir: str | pathlib.Path | None = Nonerevision: str | None = Nonerepo_type: str | None = None ) → Optional[str] or _CACHED_NO_EXIST
Paramètres
- cache_dir (
strouos.PathLike) — Le dossier où se trouvent les fichiers mis en cache. - repo_id (
str) — L'identifiant du dépôt sur huggingface.co. - filename (
str) — Le nom du fichier à rechercher dansrepo_id. - revision (
str, facultatif) — La version spécifique du modèle à utiliser. Par défaut,"main"est utilisé si aucune valeur n’est fournie et qu’aucuncommit_hashn’est non plus fourni. - repo_type (
str, facultatif) — Le type du dépôt. La valeur par défaut est"model".
Retourne
Optional[str] ou _CACHED_NO_EXIST
Retournera None si le fichier n'a pas été mis en cache. Sinon :
- Le chemin exact du fichier en cache s'il est trouvé dans le cache
- Une valeur spéciale
_CACHED_NO_EXISTsi le fichier n'existe pas à l'empreinte de commit donnée et que ce fait a été mis en cache.
Explore le cache pour retourner le dernier fichier mis en cache pour une révision donnée, s'il est trouvé.
Cette fonction ne lève aucune exception si le fichier n'est pas mis en cache.
cached_assets_path
huggingface_hub.cached_assets_path
< source >( library_name: strnamespace: str = 'default'subfolder: str = 'default'assets_dir: str | pathlib.Path | None = None )
Paramètres
- library_name (
str) — Nom de la bibliothèque qui gérera le dossier de cache. Exemple :"dataset". - namespace (
str, facultatif, valeur par défaut “default”) — Espace de noms auquel les données appartiennent. Exemple :"SQuAD". - subfolder (
str, facultatif, par défaut “default”) — Sous-dossier dans lequel les données seront stockées. Exemple :extracted. - assets_dir (
str,Path, facultatif) — Chemin vers le dossier où les ressources sont mises en cache. Ce dossier ne doit pas être le même que celui où les fichiers du Hub sont mis en cache. Par défaut,HF_HOME / "assets"si non fourni. Peut également être défini avec la variable d’environnementHF_ASSETS_CACHE.
Retourner un chemin de dossier pour mettre en cache des fichiers arbitraires.
huggingface_hub fournit un chemin de dossier canonique pour stocker les ressources. C'est la méthode recommandée pour intégrer le cache dans une bibliothèque en aval, car elle bénéficie des outils intégrés pour scanner et supprimer le cache correctement.
La distinction est faite entre les fichiers mis en cache depuis le Hub et les ressources. Les fichiers du Hub sont mis en cache de manière consciente de git et entièrement gérés par huggingface_hub. Consultez la documentation associée. Tous les autres fichiers mis en cache par une bibliothèque en aval sont considérés comme des « ressources » (fichiers téléchargés depuis des sources externes, extraits d'une archive .tar, prétraités pour l'entraînement, …).
Une fois le chemin du dossier généré, il est garanti qu’il existe et qu’il s’agit d’un répertoire.
Le chemin repose sur trois niveaux de profondeur : le nom de la bibliothèque, un espace de noms et un
sous-dossier. Ces trois niveaux offrent de la flexibilité tout en permettant à huggingface_hub de
s’attendre à des dossiers lors du balayage ou de la suppression de parties du cache des ressources. Au sein d’une bibliothèque,
il est attendu que tous les espaces de noms partagent le même sous-ensemble de noms de sous-dossiers, mais ce n’est
pas une règle obligatoire. La bibliothèque aval a alors un contrôle total sur la structure de fichiers à adopter dans son cache. L’espace de noms et le sous-dossier sont optionnels (ils
défaut à un sous-dossier "default/") mais le nom de la bibliothèque est obligatoire, car nous voulons que chaque
bibliothèque aval gère son propre cache.
Arbre attendu :
assets/
└── datasets/
│ ├── SQuAD/
│ │ ├── downloaded/
│ │ ├── extracted/
│ │ └── processed/
│ ├── Helsinki-NLP--tatoeba_mt/
│ ├── downloaded/
│ ├── extracted/
│ └── processed/
└── transformers/
├── default/
│ ├── something/
├── bert-base-cased/
│ ├── default/
│ └── training/
hub/
└── models--julien-c--EsperBERTo-small/
├── blobs/
│ ├── (...)
│ ├── (...)
├── refs/
│ └── (...)
└── [ 128] snapshots/
├── 2439f60ef33a0d46d85da5001d52aeda5b00ce9f/
│ ├── (...)
└── bbc77c8132af1cc5cf678da3f1ddf2de43606d48/
└── (...)Exemple :
>>> from huggingface_hub import cached_assets_path
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="download")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/download')
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="extracted")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/extracted')
>>> cached_assets_path(library_name="datasets", namespace="Helsinki-NLP/tatoeba_mt")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/Helsinki-NLP--tatoeba_mt/default')
>>> cached_assets_path(library_name="datasets", assets_dir="/tmp/tmp123456")
PosixPath('/tmp/tmp123456/datasets/default/default')scan_cache_dir
huggingface_hub.scan_cache_dir
< source >( cache_dir: str | pathlib.Path | None = None )
Analyser l’ensemble du système de cache HF et renvoyer une structure ~HFCacheInfo.
Utilisez scan_cache_dir pour scanner votre système de cache de manière programmatique. Le cache sera analysé dépôt par dépôt. Si un dépôt est corrompu, une ~CorruptedCacheException sera levée en interne mais capturée et retournée dans la structure ~HFCacheInfo. Seuls les dépôts valides font l’objet d’un rapport approprié.
>>> from huggingface_hub import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(
size_on_disk=3398085269,
repos=frozenset({
CachedRepoInfo(
repo_id='t5-small',
repo_type='model',
repo_path=PosixPath(...),
size_on_disk=970726914,
nb_files=11,
revisions=frozenset({
CachedRevisionInfo(
commit_hash='d78aea13fa7ecd06c29e3e46195d6341255065d5',
size_on_disk=970726339,
snapshot_path=PosixPath(...),
files=frozenset({
CachedFileInfo(
file_name='config.json',
size_on_disk=1197
file_path=PosixPath(...),
blob_path=PosixPath(...),
),
CachedFileInfo(...),
...
}),
),
CachedRevisionInfo(...),
...
}),
),
CachedRepoInfo(...),
...
}),
warnings=[
CorruptedCacheException("Snapshots dir doesn't exist in cached repo: ..."),
CorruptedCacheException(...),
...
],
)Vous pouvez également afficher un rapport détaillé directement depuis la ligne de commande hf en utilisant :
> hf cache ls ID SIZE LAST_ACCESSED LAST_MODIFIED REFS --------------------------- -------- ------------- ------------- ----------- dataset/nyu-mll/glue 157.4M 2 days ago 2 days ago main script model/LiquidAI/LFM2-VL-1.6B 3.2G 4 days ago 4 days ago main model/microsoft/UserLM-8b 32.1G 4 days ago 4 days ago main Done in 0.0s. Scanned 6 repo(s) for a total of 3.4G. Got 1 warning(s) while scanning. Use -vvv to print details.
Lève :
CacheNotFoundSi le répertoire de cache n'existe pas.
ValueErrorSi le répertoire de cache est un fichier au lieu d'un répertoire.
Retourne : un objet ~HFCacheInfo.
Structures de données
Toutes les structures sont construites et renvoyées par scan_cache_dir() et sont immuables.
HFCacheInfo
classe huggingface_hub.HFCacheInfo
< source >( size_on_disk: intrepos: frozensetincomplete_files: frozensetwarnings: listcache_dir: pathlib.Path | None = None )
Paramètres
- size_on_disk (
int) — Taille physique du système de cache en octets. Un blob partagé entre plusieurs dépôts est compté une seule fois, et les blobs partagés uniquement dans le stockage qui ne sont plus référencés par aucun dépôt sont inclus. Peut être inférieur à la somme des tailles par dépôt. - repos (
frozenset[CachedRepoInfo]) — Ensemble de ~CachedRepoInfo décrivant tous les dépôts en cache valides trouvés sur le système de cache lors de l’analyse. - incomplete_files (
frozenset[CachedIncompleteFileInfo]) — Ensemble de ~CachedIncompleteFileInfo décrivant les fichiers orphelins*.incompletelaissés par des téléchargements interrompus. - warnings (
list[CorruptedCacheException]) — Liste des ~CorruptedCacheException survenues lors de l’analyse du cache. Ces exceptions sont capturées afin que l’analyse puisse se poursuivre. Les dépôts corrompus sont ignorés lors de l’analyse. - cache_dir (
PathouNone) — Répertoire de cache qui a été analysé.
Structure de données figée contenant des informations sur l'ensemble du système de cache.
Cette structure de données est retournée par scan_cache_dir() et est immuable.
size_on_diskne prend en compte que les blobs, et les dépôts corrompus sont ignorés. Il s’agit d’une taille physique : contrairement àCachedRepoInfo.size_on_disk, qui attribue un blob partagé à chaque dépôt qui y fait référence, un blob partagé n’est compté qu’une seule fois ici.
Préparez la stratégie pour supprimer des fichiers mis en cache individuellement.
Seules les entrées de snapshot sont supprimées. Un blob n’est supprimé que si aucun autre fichier en cache ne le référence, de sorte que les blobs partagés avec d’autres révisions sont conservés. Les refs et les répertoires de snapshot sont également conservés, même si un snapshot finit par être vide. Pour supprimer des révisions ou des dépôts entiers, utilisez delete_revisions().
Exemple :
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> files = [
... file
... for repo in cache_info.repos
... if repo.repo_id == "org/model"
... for revision in repo.revisions
... for file in revision.files
... if file.file_name == "model-Q4_K_M.gguf"
... ]
>>> delete_strategy = cache_info.delete_files(*files)
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 4.9G.
>>> delete_strategy.execute()Préparez la stratégie pour supprimer une ou plusieurs révisions mises en cache localement.
Les révisions d’entrée peuvent être n’importe quel hachage de révision. Si un hachage de révision n’est pas trouvé dans le cache local, un avertissement est émis, mais aucune erreur n’est levée. Les révisions peuvent provenir de dépôts différents mis en cache, car les hachages sont uniques entre les dépôts,
Exemples :
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> delete_strategy = cache_info.delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa"
... )
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 7.9K.
>>> delete_strategy.execute()>>> from huggingface_hub import scan_cache_dir
>>> scan_cache_dir().delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa",
... "e2983b237dccf3ab4937c97fa717319a9ca1a96d",
... "6c0e6080953db56375760c0471a8c5f2929baf11",
... ).execute()
delete_revisionsrenvoie un objet DeleteCacheStrategy qui doit être exécuté. Le DeleteCacheStrategy n’est pas destiné à être modifié, mais permet d’effectuer un essai à blanc avant d’exécuter réellement la suppression.
export_as_table
< source >( verbosity: int = 0 ) → str
Générer un tableau à partir de l'objet HFCacheInfo.
Passez verbosity=0 pour obtenir un tableau avec une ligne par dépôt, avec les colonnes
“repo_id”, “repo_type”, “size_on_disk”, “nb_files”, “last_accessed”, “last_modified”, “refs”, “local_path”.
Passez verbosity=1 pour obtenir un tableau avec une ligne par dépôt et par révision (plusieurs lignes peuvent donc apparaître pour un même dépôt), avec les colonnes
“repo_id”, “repo_type”, “revision”, “size_on_disk”, “nb_files”, “last_modified”, “refs”, “local_path”.
Exemple :
>>> from huggingface_hub.utils import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(...)
>>> print(hf_cache_info.export_as_table())
REPO ID REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ------------ -------- ------------- ------------- ---- --------------------------------------------------------------------------------------------------
roberta-base model 2.7M 5 1 day ago 1 week ago main ~/.cache/huggingface/hub/models--roberta-base
suno/bark model 8.8K 1 1 week ago 1 week ago main ~/.cache/huggingface/hub/models--suno--bark
t5-base model 893.8M 4 4 days ago 7 months ago main ~/.cache/huggingface/hub/models--t5-base
t5-large model 3.0G 4 5 weeks ago 5 months ago main ~/.cache/huggingface/hub/models--t5-large
>>> print(hf_cache_info.export_as_table(verbosity=1))
REPO ID REPO TYPE REVISION SIZE ON DISK NB FILES LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ---------------------------------------- ------------ -------- ------------- ---- -----------------------------------------------------------------------------------------------------------------------------------------------------
roberta-base model e2da8e2f811d1448a5b465c236feacd80ffbac7b 2.7M 5 1 week ago main ~/.cache/huggingface/hub/models--roberta-base/snapshots/e2da8e2f811d1448a5b465c236feacd80ffbac7b
suno/bark model 70a8a7d34168586dc5d028fa9666aceade177992 8.8K 1 1 week ago main ~/.cache/huggingface/hub/models--suno--bark/snapshots/70a8a7d34168586dc5d028fa9666aceade177992
t5-base model a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1 893.8M 4 7 months ago main ~/.cache/huggingface/hub/models--t5-base/snapshots/a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1
t5-large model 150ebc2c4b72291e770f58e6057481c8d2ed331a 3.0G 4 5 months ago main ~/.cache/huggingface/hub/models--t5-large/snapshots/150ebc2c4b72291e770f58e6057481c8d2ed331aCachedRepoInfo
classe huggingface_hub.CachedRepoInfo
< source >( repo_id: strrepo_type: typing.Literal['model', 'dataset', 'space', 'kernel']repo_path: Pathsize_on_disk: intnb_files: intrevisions: frozensetlast_accessed: floatlast_modified: float )
Paramètres
- repo_id (
str) — Identifiant du dépôt sur le Hub. Exemple :"google/fleurs". - repo_type (
Literal["dataset", "model", "space", "kernel"]) — Type du dépôt mis en cache. - repo_path (
Path) — Chemin local vers le dépôt mis en cache. - size_on_disk (
int) — Somme des tailles des fichiers blob du dépôt en cache. - nb_files (
int) — Nombre total de fichiers blob dans le dépôt mis en cache. - revisions (
frozenset[CachedRevisionInfo]) — Ensemble de ~CachedRevisionInfo décrivant toutes les révisions mises en cache dans le dépôt. - last_accessed (
float) — Horodatage de la dernière fois qu'un fichier blob du dépôt a été accédé. - last_modified (
float) — Horodatage de la dernière modification ou création d'un fichier blob du dépôt.
Structure de données figée contenant des informations sur un dépôt mis en cache.
size_on_diskn’est pas nécessairement la somme des tailles de toutes les révisions en raison des fichiers dupliqués. De plus, seuls les blobs sont pris en compte, et non la taille (négligeable) des dossiers et des liens symboliques.
La fiabilité de
last_accessedetlast_modifiedpeut dépendre du système d’exploitation utilisé. Voir la documentation Python pour plus de détails.
(property) Somme des tailles des fichiers blob en tant que chaîne de caractères lisible par l'humain.
Exemple : « 42,2 K ».
(property) Correspondance entre refs et structures de données de révision.
CachedRevisionInfo
classe huggingface_hub.CachedRevisionInfo
< source >( commit_hash: strsnapshot_path: Pathsize_on_disk: intfiles: frozensetrefs: frozensetlast_modified: float )
Paramètres
- commit_hash (
str) — Hash de la révision (unique). Exemple :"9338f7b671827df886678df2bdd7cc7b4f36dffd". - snapshot_path (
Path) — Chemin vers le répertoire de révision dans le dossiersnapshots. Il contient la structure d’arborescence exacte du dépôt sur le Hub. - files — (
frozenset[CachedFileInfo]) : Ensemble de ~CachedFileInfo décrivant tous les fichiers contenus dans l'instantané. - refs (
frozenset[str]) — Ensemble derefspointant vers cette révision. Si la révision n'a pas derefs, elle est considérée comme détachée. Exemple :{"main", "2.4.0"}ou{"refs/pr/1"}. - size_on_disk (
int) — Somme des tailles des fichiers blob liés par lien symbolique par la révision. - last_modified (
float) — Horodatage de la dernière création/modification de la révision.
Structure de données figée contenant des informations sur une révision.
Une révision correspond à un dossier dans le dossier snapshots et est peuplée avec
la structure d'arborescence exacte du dépôt sur le Hub, mais ne contient que des liens symboliques. Une
révision peut être référencée par 1 ou plusieurs refs ou être « détachée » (aucune ref).
last_accessedne peut pas être déterminé correctement sur une seule révision, car les fichiers blob sont partagés entre les révisions.
size_on_diskn’est pas nécessairement la somme de toutes les tailles de fichiers en raison de fichiers potentiellement dupliqués. De plus, seuls les blobs sont pris en compte, et non la taille (négligeable) des dossiers et des liens symboliques.
(property) Somme des tailles des fichiers blob en tant que chaîne de caractères lisible par l'humain.
Exemple : « 42,2 K ».
(property) Nombre total de fichiers dans la révision.
CachedFileInfo
classe huggingface_hub.CachedFileInfo
< source >( file_name: strfile_path: Pathblob_path: Pathsize_on_disk: intblob_last_accessed: floatblob_last_modified: float )
Paramètres
- file_name (
str) — Nom du fichier. Exemple :config.json. - file_path (
Path) — Chemin du fichier dans le répertoiresnapshots. Le chemin du fichier est un lien symbolique pointant vers un blob dans le dossierblobs. - blob_path (
Path) — Chemin de l’entrée blob locale au dépôt référencée parfile_path. L’entrée blob peut elle-même être un lien symbolique vers le magasin de blobs partagé à l’échelle du cache. - size_on_disk (
int) — Taille du fichier blob en octets. - blob_last_accessed (
float) — Horodatage de la dernière fois que le fichier blob a été accédé (depuis n'importe quelle révision). - blob_last_modified (
float) — Horodatage de la dernière modification ou création du fichier blob.
Structure de données figée contenant des informations sur un fichier mis en cache unique.
La fiabilité de
blob_last_accessedetblob_last_modifiedpeut dépendre du système d’exploitation que vous utilisez. Consultez la documentation Python pour plus de détails.
(property) Taille du fichier blob en tant que chaîne de caractères lisible par l'humain.
Exemple : « 42,2 K ».
CachedIncompleteFileInfo
classe huggingface_hub.CachedIncompleteFileInfo
< source >( file_path: Pathsize_on_disk: int )
Structure de données figée contenant des informations sur un téléchargement incomplet unique.
Les téléchargements interrompus laissent derrière eux des fichiers <cache>/<repo>/blobs/<etag>.incomplete.
Ces fichiers ne font partie d'aucune révision validée, ils sont donc affichés séparément par scan_cache_dir().
DeleteCacheStrategy
classe huggingface_hub.DeleteCacheStrategy
< source >( expected_freed_size: intblobs: frozensetrefs: frozensetrepos: frozensetsnapshots: frozensetfiles: frozenset = frozenset()cache_dir: pathlib.Path | None = None )
Paramètres
- expected_freed_size (
float) — Taille libérée attendue une fois la stratégie exécutée. - blobs (
frozenset[Path]) — Ensemble des chemins des fichiers blob à supprimer. - refs (
frozenset[Path]) — Ensemble des chemins des fichiers de référence à supprimer. - repos (
frozenset[Path]) — Ensemble des chemins complets des dépôts à supprimer. - snapshots (
frozenset[Path]) — Ensemble des instantanés à supprimer (répertoire de liens symboliques). - files (
frozenset[Path], facultatif) — Ensemble d’entrées de snapshot individuelles à supprimer. Leurs blobs ne sont supprimés que s’ils sont répertoriés dansblobs. - cache_dir (
PathouNone) — Répertoire de cache à partir duquel la stratégie a été calculée. Utilisé pour collecter les blobs partagés référencés par les liens symboliques locaux au dépôt supprimés par la suppression.
Structure de données figée contenant la stratégie de suppression des révisions ou fichiers en cache.
Cet objet n’est pas destiné à être instancié de manière programmatique, mais à être retourné par delete_revisions() ou delete_files(). Consultez la documentation pour un exemple d’utilisation.
(property) Taille attendue qui sera libérée, en tant que chaîne de caractères lisible par un humain.
Exemple : « 42,2 K ».
Exceptions
CorruptedCacheException
Exception pour toute structure inattendue dans le système de cache Huggingface.