Hub documentation
Utilisation du stockage Xet
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
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 | shSinon, installez à l'aide de Homebrew :
brew install git-xet
git xet installPour vérifier l'installation, exécutez :
git xet --versionWindows (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
msiet 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.exeextrait dans un répertoire duPATH. - Exécutez
git xet installdans un terminal.
Pour vérifier l'installation, exécutez :
git xet --versionUtilisation 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 pushSous 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-xetSi 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 uninstalldans un terminal. - Supprimez le fichier
git-xet.exede 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_xetest installé : bien que Xet reste rétrocompatible avec les clients legacy optimisés pour Git LFS, l’intégration dehf_xetavechuggingface_huboffre 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_xetajuste 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_xet1.7.0, la taille des tampons de téléchargement est déterminée par la mémoire disponible pourhf_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_CONCURRENCYetHF_XET_FIXED_UPLOAD_CONCURRENCYpermettent de fixer la concurrence à une valeur donnée, en contournant le contrôleur adaptatif. Consultez les variables d’environnement dehf_xetpour 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=1est 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 dehf_xet1.7.0, les tailles de tampon qu’il définit sont basées sur la mémoire disponible pourhf_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'environnement | Par défaut | Description |
|---|---|---|
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP) | off | Drapeau 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/xet | Ré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'environnement | Par défaut | Description |
|---|---|---|
HF_XET_CLIENT_ENABLE_ADAPTIVE_CONCURRENCY | true | Activez 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_CONCURRENCY | 1 | Nombre initial de flux de téléversement concurrents. Mode HP : 16. |
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY | 1 | Nombre initial de flux de téléchargement concurrents. Mode HP : 16. |
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY | 1 | Limite inférieure pour la concurrence de téléversement. Mode HP : 4. |
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY | 1 | Limite inférieure pour la concurrence de téléchargement. Mode HP : 4. |
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY | 64 | Limite supérieure pour la concurrence de téléversement. Mode HP : 124. |
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY | 64 | Limite supérieure pour la concurrence de téléchargement. Mode HP : 124. |
HF_XET_CLIENT_AC_TARGET_RTT | 60s | Temps 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_RTT | 90s | Temps 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_THRESHOLD | 0.8 | Taux de réussite au-delà duquel le contrôleur augmente la concurrence. |
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD | 0.5 | Taux de réussite en dessous duquel le contrôleur diminue la concurrence. |
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS | 10000 | Intervalle (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_CONCURRENCYetHF_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'environnement | Par défaut | Description |
|---|---|---|
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS | 5 | Nombre maximal de tentatives de nouvelle demande pour les requêtes échouées. |
HF_XET_CLIENT_RETRY_BASE_DELAY | 3000ms | Délai de base entre les nouvelles tentatives (avec un backoff exponentiel). |
HF_XET_CLIENT_RETRY_MAX_DURATION | 360s | Temps total maximal à consacrer à la nouvelle tentative d'une requête. |
HF_XET_CLIENT_CONNECT_TIMEOUT | 60s | Délai d'attente de la connexion TCP. |
HF_XET_CLIENT_READ_TIMEOUT | 120s | Délai d'attente de lecture pour les réponses HTTP. |
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT | 60s | Délai d'attente avant la fermeture des connexions inactives. |
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS | 16 | Nombre maximal de connexions inactives dans le pool. |
Transfert de données
| Variable d'environnement | Par défaut | Description |
|---|---|---|
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION | 8 | Nombre maximal de fichiers traités simultanément lors de la téléversement. Mode HP : 100. |
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS | 8 | Nombre maximal de fichiers téléchargés simultanément. |
HF_XET_DATA_INGESTION_BLOCK_SIZE | 8mb | Taille des blocs lus lors de l'ingestion de fichiers. |
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL | 200ms | Fréquence de mise à jour des barres de progression. |
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW | 10s | Fenê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'environnement | Par défaut | Mode HP | Description |
|---|---|---|---|
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE | 256mb | 1gb | Taille minimale de récupération pour les requêtes de reconstruction. |
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE | 8gb | 16gb | Taille maximale de récupération pour les requêtes de reconstruction. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE | 1/16 de la mémoire, de 64mb à 16gb | 1/8 de la mémoire | Budget de tampon partagé de base. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE | 1/64 de la mémoire, de 16mb à 2gb | 1/32 de la mémoire | Budget de tampon supplémentaire par fichier actif. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT | 1/4 de la mémoire, de 264mb à 64gb | 1/2 de la mémoire | Limite 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_BUFFERS | unset | — | 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_TIME | 15m | — | 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_BUFFER | 1gb | — | 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'environnement | Par défaut | Description |
|---|---|---|
HF_XET_SHARD_CACHE_SIZE_LIMIT | 16gb | Plafond 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_SIZE | 64mb | Taille 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_SUBDIR | shard-cache | Sous-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'environnement | Par défaut | Description |
|---|---|---|
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'environnement | Par défaut | Description |
|---|---|---|
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_PREFIX | xet | Préfixe des noms de fichiers journaux lors de l'écriture dans un répertoire. |
HF_XET_LOG_DIR_DISABLE_CLEANUP | false | Désactiver le nettoyage automatique des anciens fichiers de journal dans le répertoire de journalisation. |
HF_XET_LOG_DIR_MAX_SIZE | 250mb | Taille 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_AGE | 1d | Âge minimal d'un fichier journal avant qu'il puisse être supprimé lors du nettoyage. |
HF_XET_LOG_DIR_MAX_RETENTION_AGE | 14d | Â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_xetet Git Xet nécessitent actuellement tous deux une architecture 64 bits ; les systèmes 32 bits ne sont pas pris en charge.