Hub documentation

Utilisation du stockage Xet

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilisation du stockage Xet

Python

Pour accéder à une version de huggingface_hub compatible avec Xet, installez simplement la dernière version :

pip install -U huggingface_hub

À partir de huggingface_hub 0.32.0, cela installera également hf_xet. Le package hf_xet intègre huggingface_hub avec xet-core, le client Rust pour le backend Xet.

Si vous utilisez les bibliothèques transformers ou datasets, elles utilisent déjà huggingface_hub. Tant que la version de huggingface_hub est >= 0.32.0, aucune action supplémentaire n’est nécessaire.

Lorsque des versions de huggingface_hub >= 0.30.0 et < 0.32.0 sont installées, hf_xet doit être installé explicitement :

pip install -U hf-xet

Et c’est tout ! Vous bénéficiez désormais de la déduplication Xet pour les téléversements comme pour les téléchargements. Les membres de l’équipe utilisant une version de huggingface_hub < 0.30.0 pourront toujours téléverser et télécharger des dépôts grâce à la compatibilité ascendante fournie par le pont LFS.

Pour consulter des documents d'utilisation plus détaillés, reportez-vous à la documentation de huggingface_hub pour :

Git

Les utilisateurs de Git peuvent profiter des avantages de Xet en téléchargeant et en installant l’extension Git Xet. Une fois installée, il suffit d’utiliser les flux de travail standard pour gérer les dépôts du Hub avec Git - aucune modification supplémentaire n’est nécessaire.

Prérequis

Installez Git et Git LFS.

Installer sur macOS ou Linux (amd64 ou aarch64)

Installez à l'aide d'un script d'installation avec la commande suivante dans votre terminal (nécessite curl et unzip) :

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/huggingface/xet-core/refs/heads/main/git_xet/install.sh | sh

Sinon, installez à l'aide de Homebrew :

brew install git-xet
git xet install

Pour vérifier l'installation, exécutez :

git xet --version

Windows (amd64)

En utilisant winget :

winget install git-xet

À l'aide d'un installateur :

  • Téléchargez git-xet-windows-installer-x86_64.zip (disponible ici) et décompressez-le.
  • Exécutez le fichier d'installation msi et suivez les instructions.

Installation manuelle :

  • Téléchargez git-xet-windows-x86_64.zip (disponible ici) et décompressez-le.
  • Placez le fichier git-xet.exe extrait dans un répertoire du PATH.
  • Exécutez git xet install dans un terminal.

Pour vérifier l'installation, exécutez :

git xet --version

Utilisation de Git Xet

Une fois installé sur votre plateforme, l’utilisation de Git Xet est aussi simple que le suivi des flux de travail Git standard du Hub.

Assurez-vous que toutes les prérequis sont installés et configurés, suivez les instructions de configuration pour travailler avec les dépôts sur le Hub, puis engagez vos modifications et push vers le Hub :

# Create any files you like! Then...
git add .
git commit -m "Uploading new models"  # You can choose any descriptive message
git push

Sous le capot, le protocole Xet est appelé pour téléverser les fichiers volumineux directement vers le stockage Xet, augmentant les vitesses de téléversement grâce à la déduplication au niveau des blocs.

Désinstallation sur macOS ou Linux

À l'aide de Homebrew :

git xet uninstall
brew uninstall git-xet

Si vous avez utilisé le script d’installation (pour MacOS ou Linux), exécutez la commande suivante dans votre terminal :

git xet uninstall
sudo rm $(which git-xet)

Désinstallation sur Windows

Si vous avez utilisé winget :

winget uninstall git-xet

Si vous avez utilisé l'installateur :

  • Accédez à Paramètres -> Applications -> Applications installées
  • Rechercher « Git-Xet ».
  • Sélectionnez l’option « Désinstaller » disponible dans le menu contextuel.

Si vous avez installé manuellement :

  • Exécutez git xet uninstall dans un terminal.
  • Supprimez le fichier git-xet.exe de l'emplacement où il a été initialement placé.

Recommandations

Xet s’intègre parfaitement à tous les flux de travail du Hub. Toutefois, il existe quelques étapes que vous pouvez envisager pour tirer le meilleur parti du stockage Xet.

Lors de l’envoi ou du téléchargement avec Python :

  • Vérifiez que hf_xet est installé : bien que Xet reste rétrocompatible avec les clients legacy optimisés pour Git LFS, l’intégration de hf_xet avec huggingface_hub offre des performances optimales basées sur les chunks et une itération plus rapide sur les gros fichiers.
  • La concurrence adaptative est activée par défaut : hf_xet ajuste automatiquement le nombre de flux de transfert parallèles en fonction des conditions réseau en temps réel — aucune configuration n'est requise. Les paramètres par défaut satureront la plupart des chemins réseau sans aucun réglage.
  • Les tampons de téléchargement s’adaptent à la mémoire système : à partir de hf_xet 1.7.0, la taille des tampons de téléchargement est déterminée par la mémoire disponible pour hf_xet, y compris les limites de mémoire des conteneurs. Les petits conteneurs utilisent moins de mémoire pour les téléchargements et les grandes machines en utilisent davantage, sans aucun réglage nécessaire. Voir Tampons de téléchargement.
  • Réglages avancés : Pour un contrôle fin, HF_XET_FIXED_DOWNLOAD_CONCURRENCY et HF_XET_FIXED_UPLOAD_CONCURRENCY permettent de fixer la concurrence à une valeur donnée, en contournant le contrôleur adaptatif. Consultez les variables d’environnement de hf_xet pour la liste complète des options.

Lors de la mise en ligne ou du téléchargement dans Git ou Python :

  • Exploiter des commits fréquents et incrémentiels : la déduplication au niveau des blocs de Xet permet d’effectuer des mises à jour incrémentielles de modèles ou de jeux de données en toute sécurité. Seuls les blocs modifiés sont téléversés, ce qui rend les commits fréquents à la fois rapides et économes en stockage.
  • Précisez les motifs dans .gitattributes : lors de la définition des motifs pour Xet ou LFS, utilisez des extensions de fichiers précises (par exemple, *.safetensors, *.bin) afin d'éviter de diriger inutilement les fichiers plus petits vers le stockage de fichiers volumineux.
  • Privilégier l’accès de la communauté : Xet augmente considérablement l’efficacité et l’échelle des transferts de fichiers volumineux. Plutôt que de structurer votre dépôt pour réduire sa taille totale (ou la taille des fichiers individuels), organisez-le pour les collaborateurs et les utilisateurs de la communauté afin qu’ils puissent facilement naviguer et récupérer le contenu dont ils ont besoin.

Variables d'environnement

À la fois hf_xet et Git Xet sont propulsés par xet-core, qui peut être configuré via des variables d’environnement. Les tableaux ci-dessous répertorient les variables individuelles pour un contrôle fin. La plupart des utilisateurs n’auront pas besoin de modifier l’une de ces variables — les valeurs par défaut sont calibrées pour saturer automatiquement la plupart des chemins réseau.

HF_XET_HIGH_PERFORMANCE=1 est un drapeau de commodité qui ajuste plusieurs paramètres d’un coup (limites de concurrence, tailles de tampon et limites de fichiers parallèles). Il est destiné aux machines disposant d’une bande passante élevée et d’un disque rapide. À partir de hf_xet 1.7.0, les tailles de tampon qu’il définit sont basées sur la mémoire disponible pour hf_xet (voir Tampons de téléchargement), il n’a donc plus besoin de 64 Go de RAM, et toute variable que vous définissez vous-même prend le pas sur ce drapeau. Avec les versions antérieures, ne l’utilisez que sur des machines dotées d’au moins 64 Go de RAM.

Général

Drapeaux de haut niveau auxquels la plupart des utilisateurs pensent en premier.

Variable d'environnementPar défautDescription
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP)offDrapeau de commodité qui maximise l'utilisation du réseau et du CPU en augmentant simultanément la concurrence, les tailles de tampon et les limites de fichiers parallèles. Voir la note ci-dessus.
HF_XET_CACHE$HF_HOME/xetRépertoire où Xet met en cache les données localement (segments téléchargés et fragments de déduplication). Prend le pas sur HF_HOME.

Concurrence adaptative

Par défaut, xet-core utilise une concurrence adaptative — il ajuste dynamiquement le parallélisme en fonction des conditions réseau en temps réel. Il s’agit de paramètres avancés qui ne sont généralement pas nécessaires dans la plupart des cas. Les variables ci-dessous contrôlent le comportement du contrôleur adaptatif :

Variable d'environnementPar défautDescription
HF_XET_CLIENT_ENABLE_ADAPTIVE_CONCURRENCYtrueActivez ou désactivez le contrôle adaptatif de la concurrence. Lorsqu'il est désactivé, la concurrence reste à la valeur initiale.
HF_XET_CLIENT_AC_INITIAL_UPLOAD_CONCURRENCY1Nombre initial de flux de téléversement concurrents. Mode HP : 16.
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY1Nombre initial de flux de téléchargement concurrents. Mode HP : 16.
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY1Limite inférieure pour la concurrence de téléversement. Mode HP : 4.
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY1Limite inférieure pour la concurrence de téléchargement. Mode HP : 4.
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY64Limite supérieure pour la concurrence de téléversement. Mode HP : 124.
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY64Limite supérieure pour la concurrence de téléchargement. Mode HP : 124.
HF_XET_CLIENT_AC_TARGET_RTT60sTemps aller-retour cible. La concurrence augmente tant que le temps aller-retour prédit pour un transfert complet est inférieur à cette valeur.
HF_XET_CLIENT_AC_MAX_HEALTHY_RTT90sTemps aller-retour maximal acceptable. Les transferts qui prennent plus de temps que cette valeur sont comptés comme des échecs par le contrôleur adaptatif.
HF_XET_CLIENT_AC_HEALTHY_SUCCESS_RATIO_THRESHOLD0.8Taux de réussite au-delà duquel le contrôleur augmente la concurrence.
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD0.5Taux de réussite en dessous duquel le contrôleur diminue la concurrence.
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS10000Intervalle (en ms) à intervalle duquel l'état de la concurrence est journalisé.

Pour fixer la concurrence à une valeur donnée (en contournant le contrôleur adaptatif), utilisez les alias de commodité HF_XET_FIXED_UPLOAD_CONCURRENCY et HF_XET_FIXED_DOWNLOAD_CONCURRENCY. Ces derniers définissent la concurrence initiale, minimale et maximale à la même valeur.

Réseau et nouvelle tentative

Variable d'environnementPar défautDescription
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS5Nombre maximal de tentatives de nouvelle demande pour les requêtes échouées.
HF_XET_CLIENT_RETRY_BASE_DELAY3000msDélai de base entre les nouvelles tentatives (avec un backoff exponentiel).
HF_XET_CLIENT_RETRY_MAX_DURATION360sTemps total maximal à consacrer à la nouvelle tentative d'une requête.
HF_XET_CLIENT_CONNECT_TIMEOUT60sDélai d'attente de la connexion TCP.
HF_XET_CLIENT_READ_TIMEOUT120sDélai d'attente de lecture pour les réponses HTTP.
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT60sDélai d'attente avant la fermeture des connexions inactives.
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS16Nombre maximal de connexions inactives dans le pool.

Transfert de données

Variable d'environnementPar défautDescription
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION8Nombre maximal de fichiers traités simultanément lors de la téléversement. Mode HP : 100.
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS8Nombre maximal de fichiers téléchargés simultanément.
HF_XET_DATA_INGESTION_BLOCK_SIZE8mbTaille des blocs lus lors de l'ingestion de fichiers.
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL200msFréquence de mise à jour des barres de progression.
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW10sFenêtre temporelle utilisée pour agréger les mesures de vitesse de transfert dans le rapport d'avancement.

Télécharger les tampons

Ces paramètres contrôlent l'utilisation de la mémoire pendant les téléchargements.

À partir de hf_xet 1.7.0, les valeurs par défaut des trois variables DOWNLOAD_BUFFER sont basées sur la quantité de mémoire dont hf_xet peut disposer. Il s’agit de la RAM de la machine, ou de la limite de mémoire du conteneur si celle-ci est plus basse. Chaque valeur par défaut est une fraction de cette mémoire, maintenue entre le minimum et le maximum indiqués dans le tableau. Le mode HP utilise le double de cette fraction, avec les mêmes minimum et maximum. Par exemple, un conteneur limité à 4 Go obtient un tampon d’environ 256 Mo avec une limite de 1 Go, et une machine dotée de 32 Go obtient environ le même tampon de 2 Go et la même limite de 8 Go que les versions précédentes.

Les versions antérieures, ou toute version qui ne peut pas déterminer la quantité de mémoire disponible, utilisent des valeurs par défaut fixes de 2gb, 512mb et 8gb (16gb, 2gb et 64gb en mode HP). Les valeurs utilisées sont écrites dans le fichier de journal hf_xet au démarrage (voir Journalisation).

Variable d'environnementPar défautMode HPDescription
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE256mb1gbTaille minimale de récupération pour les requêtes de reconstruction.
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE8gb16gbTaille maximale de récupération pour les requêtes de reconstruction.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE1/16 de la mémoire, de 64mb à 16gb1/8 de la mémoireBudget de tampon partagé de base.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE1/64 de la mémoire, de 16mb à 2gb1/32 de la mémoireBudget de tampon supplémentaire par fichier actif.
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT1/4 de la mémoire, de 264mb à 64gb1/2 de la mémoireLimite stricte de la mémoire totale du tampon de téléchargement. Si HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE est défini à une valeur supérieure à celle-ci, la limite est augmentée en conséquence.
HF_XET_DISABLE_MEMORY_DERIVED_DOWNLOAD_BUFFERSunset—Définir à 1 pour utiliser les valeurs par défaut fixes au lieu de dimensionner les tampons à partir de la mémoire disponible.
HF_XET_RECONSTRUCTION_TARGET_BLOCK_COMPLETION_TIME15m—Délai cible pour la finalisation d'un bloc de préchargement. Utilisé pour déterminer la quantité de données à précharger à l'avance lors des téléchargements.
HF_XET_RECONSTRUCTION_MIN_PREFETCH_BUFFER1gb—Quantité minimale de données à conserver en préchargement pendant les téléchargements, indépendamment du temps de complétion estimé.

Cache de shards

Le cache de shards conserve sur disque, sous le répertoire de cache Xet, l’index de déduplication (les « shards » décrivant les fragments déjà téléversés). Un cache plus volumineux permet au client de dédupliquer par rapport à davantage de données déjà vues, ce qui réduit le nombre d’octets retéléversés.

Variable d'environnementPar défautDescription
HF_XET_SHARD_CACHE_SIZE_LIMIT16gbPlafond doux pour le cache de shards sur disque. Le cache est réduit à cette taille au début d'une exécution, mais peut dépasser cette limite au cours d'une longue session. À titre indicatif, un cache de taille X déduplique à l'encontre d'environ 1000 × X de données (16 Go → ~16 To). Augmentez cette valeur pour améliorer la déduplication sur les très grands dépôts ; réduisez-la si la croissance du cache risque de saturer votre disque. Accepte une taille lisible par l'humain (par ex. 32gb) ou un nombre brut d'octets.
HF_XET_SHARD_CHUNK_INDEX_TABLE_MAX_SIZE64mbTaille maximale de l'index de blocs en mémoire. Une fois cette limite atteinte, aucun bloc supplémentaire n'est chargé pour la déduplication.
HF_XET_SHARD_CACHE_SUBDIRshard-cacheSous-répertoire pour le cache des shards au sein du répertoire de cache Xet.

Cache de blocs

hf_xet n'utilise plus de cache local de chunks pour les téléchargements. Les fichiers téléchargés sont toujours stockés dans le cache basé sur les fichiers de huggingface_hub.

Variable d'environnementPar défautDescription
HF_XET_CHUNK_CACHE_SIZE_BYTES—N'est plus utilisé par hf_xet. Sa définition n'active pas le cache de téléchargement par blocs.

Journalisation

Variable d'environnementPar défautDescription
HF_XET_LOG_DEST(aucun)Destination des journaux. Accepte un chemin de fichier ou un chemin de répertoire (se terminant par /). Lorsqu'il est défini sur un répertoire, les fichiers de journal sont créés avec des noms horodatés. Lorsqu'il est défini sur une chaîne vide, les journaux sont envoyés à la console. Lorsqu'il n'est pas défini, les journaux sont envoyés au sous-répertoire logs/ du répertoire de cache Hugging Face Xet.
HF_XET_LOG_FORMAT(aucun)Format de journalisation. Définir sur json pour des journaux au format JSON ; sinon, texte brut. Par défaut, la journalisation dans un fichier utilise le JSON et la journalisation en console utilise le texte.
HF_XET_LOG_PREFIXxetPréfixe des noms de fichiers journaux lors de l'écriture dans un répertoire.
HF_XET_LOG_DIR_DISABLE_CLEANUPfalseDésactiver le nettoyage automatique des anciens fichiers de journal dans le répertoire de journalisation.
HF_XET_LOG_DIR_MAX_SIZE250mbTaille totale maximale des fichiers de journal dans le répertoire de journal. Les anciens fichiers sont supprimés pour rester sous cette limite.
HF_XET_LOG_DIR_MIN_DELETION_AGE1dÂge minimal d'un fichier journal avant qu'il puisse être supprimé lors du nettoyage.
HF_XET_LOG_DIR_MAX_RETENTION_AGE14dÂge maximal des fichiers journaux. Les fichiers plus anciens que cette valeur sont toujours supprimés lors du nettoyage.

Télémétrie

hf_xet envoie un court rapport après chaque téléversement et téléchargement. Consultez Télémétrie pour en connaître le contenu. Pour le désactiver, définissez HF_HUB_DISABLE_TELEMETRY=1.

Limites actuelles

Bien que Xet apporte une déduplication fine et des performances améliorées au stockage basé sur Git, certaines fonctionnalités et compatibilités de plateforme sont encore en cours de développement. Par conséquent, gardez les contraintes suivantes à l’esprit lors du travail avec un dépôt activé pour Xet :

  • Systèmes 64 bits uniquement : hf_xet et Git Xet nécessitent actuellement tous deux une architecture 64 bits ; les systèmes 32 bits ne sont pas pris en charge.
Update on GitHub