Hub documentation
Uso de Xet Storage
Uso de Xet Storage
Python
Para acceder a una versión de huggingface_hub compatible con Xet, simplemente instale la última versión:
pip install -U huggingface_hub
A partir de huggingface_hub 0.32.0, esto también instalará hf_xet. El paquete hf_xet integra huggingface_hub con xet-core, el cliente de Rust para el backend Xet.
Si usas las bibliotecas transformers o datasets, ya están utilizando huggingface_hub. Mientras la versión de huggingface_hub sea >= 0.32.0, no es necesario realizar ninguna acción adicional.
Cuando las versiones de huggingface_hub >= 0.30.0 y < 0.32.0 están instaladas, hf_xet debe instalarse explícitamente:
pip install -U hf-xet
¡Y eso es todo! Ahora obtienes los beneficios de la deduplicación de Xet tanto para las cargas como para las descargas. Los miembros del equipo que utilicen una versión de huggingface_hub < 0.30.0 aún podrán cargar y descargar repositorios a través de la compatibilidad hacia atrás proporcionada por el puente LFS.
Para ver documentación de uso más detallada, consulte la documentación de huggingface_hub para:
Git
Los usuarios de Git pueden acceder a las ventajas de Xet descargando e instalando la extensión Git Xet. Una vez instalada, basta con utilizar los flujos de trabajo estándar para gestionar repositorios de Hub con Git; no es necesario realizar cambios adicionales.
Prerrequisitos
Instalación en macOS o Linux (amd64 o aarch64)
Instala mediante un script de instalación con el siguiente comando en tu terminal (requiere curl y unzip):
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/huggingface/xet-core/refs/heads/main/git_xet/install.sh | shO bien, instálalo usando Homebrew:
brew install git-xet
git xet installPara verificar la instalación, ejecuta:
git xet --versionWindows (amd64)
Usando winget:
winget install git-xetUsando un instalador:
- Descarga
git-xet-windows-installer-x86_64.zip(disponible aquí) y descomprímelo. - Ejecute el archivo de instalador
msiy siga las indicaciones.
Instalación manual:
- Descarga
git-xet-windows-x86_64.zip(disponible aquí) y descomprímelo. - Coloque el
git-xet.exeextraído en un directorio dePATH. - Ejecuta
git xet installen una terminal.
Para verificar la instalación, ejecuta:
git xet --versionUso de Git Xet
Una vez instalado en tu plataforma, usar Git Xet es tan sencillo como seguir los flujos de trabajo estándar de Git del Hub.
Asegúrate de que todos los prerrequisitos estén instalados y configurados, sigue las instrucciones de configuración para trabajar con repositorios en el Hub, luego confirma tus cambios y push al Hub:
# Create any files you like! Then...
git add .
git commit -m "Uploading new models" # You can choose any descriptive message
git pushPor debajo, se invoca el protocolo Xet para subir archivos grandes directamente al almacenamiento de Xet, aumentando las velocidades de subida gracias a la deduplicación a nivel de fragmentos.
Desinstalar en macOS o Linux
Usando Homebrew:
git xet uninstall brew uninstall git-xet
Si usaste el script de instalación (para MacOS o Linux), ejecuta lo siguiente en tu terminal:
git xet uninstall
sudo rm $(which git-xet)Desinstalar en Windows
Si usaste winget:
winget uninstall git-xetSi usó el instalador:
- Vaya a Configuración -> Aplicaciones -> Aplicaciones instaladas
- Busque “Git-Xet”.
- Seleccione la opción “Desinstalar” disponible en el menú contextual.
Si lo instalaste manualmente:
- Ejecuta
git xet uninstallen una terminal. - Elimine el archivo
git-xet.exede la ubicación donde se colocó originalmente.
Recomendaciones
Xet se integra de forma transparente con todos los flujos de trabajo del Hub. Sin embargo, hay algunos pasos que puedes considerar para aprovechar al máximo el almacenamiento de Xet.
Al subir o descargar con Python:
- Asegúrate de que
hf_xetesté instalado: Aunque Xet mantiene la compatibilidad hacia atrás con los clientes heredados optimizados para Git LFS, la integración dehf_xetconhuggingface_hubofrece un rendimiento óptimo basado en fragmentos y una iteración más rápida en archivos grandes. - La concurrencia adaptativa está activada de forma predeterminada:
hf_xetajusta automáticamente el número de flujos de transferencia paralelos en función de las condiciones de red en tiempo real, sin necesidad de configuración. La configuración predeterminada saturará la mayoría de las rutas de red sin ningún ajuste. - Los búferes de descarga se escalan con la memoria del sistema: A partir de
hf_xet1.7.0, el tamaño de los búferes de descarga se determina en función de la memoria disponible parahf_xet, incluidos los límites de memoria del contenedor. Los contenedores pequeños usan menos memoria para las descargas y las máquinas grandes usan más, sin necesidad de configurar nada. Consulte Búferes de descarga. - Ajuste avanzado: Para un control de gran granularidad,
HF_XET_FIXED_DOWNLOAD_CONCURRENCYyHF_XET_FIXED_UPLOAD_CONCURRENCYpermiten fijar la concurrencia a un valor fijo, omitiendo el controlador adaptativo. Consulte las variables de entorno dehf_xetpara obtener la lista completa de opciones.
Al subir o descargar en Git o Python:
- Aprovecha los commits incrementales y frecuentes: la deduplicación a nivel de fragmentos de Xet permite realizar actualizaciones incrementales de modelos o conjuntos de datos de forma segura. Solo se suben los fragmentos modificados, por lo que los commits frecuentes son rápidos y eficientes en almacenamiento.
- Sea específico en .gitattributes: al definir patrones para Xet o LFS, use extensiones de archivo precisas (p. ej.,
*.safetensors,*.bin) para evitar enrutar archivos más pequeños a través del almacenamiento de archivos grandes de forma innecesaria. - Prioriza el acceso de la comunidad: Xet aumenta de forma sustancial la eficiencia y la escala de las transferencias de archivos grandes. En lugar de estructurar tu repositorio para reducir su tamaño total (o el tamaño de los archivos individuales), organízalo para los colaboradores y los usuarios de la comunidad, de modo que puedan navegar y recuperar fácilmente el contenido que necesitan.
Subida a través de un proxy o un cortafuegos
A partir de hf_xet 1.8.0, las cargas pueden enviar datos directamente a Amazon S3 en lugar de solo a través del servicio de almacenamiento Xet. El Hub decide para cada carga si usar la carga directa, y la está activando gradualmente. Las descargas no cambian.
Si su red restringe el tráfico saliente, permita estos nombres de host (HTTPS, puerto 443) además de los que se enumeran en Descarga detrás de un proxy o firewall:
| Nombre de host | Propósito |
|---|---|
s3.us-east-1.amazonaws.com | Subidas directas (EE. UU.) |
s3.eu-west-3.amazonaws.com | Subidas directas para repositorios almacenados en la UE |
Estos nombres de host no están bajo hf.co ni huggingface.co, por lo que permitir esos sufijos no los cubre.
Si hf_xet no puede alcanzar S3, reintenta la carga directa y luego envía esos datos a través del servicio de almacenamiento Xet. La carga se completa igualmente, pero puede ser mucho más lenta, porque cada bloque espera a que se agoten los reintentos primero. El registro de hf_xet muestra Upload grant URL unreachable, falling back to legacy xorb upload path (may be slower) cuando ocurre esto. Si no puede permitir los nombres de host de S3, establezca HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD=1 para desactivar las cargas directas.
Variables de entorno
Tanto hf_xet como Git Xet funcionan con xet-core, que se puede configurar mediante variables de entorno. Las tablas siguientes enumeran las variables individuales para un control detallado. La mayoría de los usuarios no necesitará modificar ninguna de estas: los valores predeterminados están ajustados para saturar automáticamente la mayoría de las rutas de red.
HF_XET_HIGH_PERFORMANCE=1es una bandera de conveniencia que ajusta varios ajustes a la vez (límites de concurrencia, tamaños de búfer y límites de archivos paralelos). Está destinada a máquinas con ancho de banda alto y disco rápido. A partir dehf_xet1.7.0, los tamaños de búfer que establece se basan en la memoria disponible parahf_xet(ver Búferes de descarga), por lo que ya no requiere 64 GB de RAM, y cualquier variable que defina usted mismo tiene prioridad sobre esta bandera. Con versiones anteriores, úsela solo en máquinas con al menos 64 GB de RAM.
General
Banderas de alto nivel que la mayoría de los usuarios suelen utilizar primero.
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP) | off | Bandera de conveniencia que maximiza el uso de la red y la CPU aumentando la concurrencia, los tamaños de búfer y los límites de archivos en paralelo de una sola vez. Consulte la nota anterior. |
HF_XET_CACHE | $HF_HOME/xet | Directorio donde Xet almacena en caché los datos localmente (fragmentos descargados y fragmentos de deduplicación). Tiene prioridad sobre HF_HOME. |
Concurrencia adaptativa
Por defecto, xet-core utiliza concurrencia adaptativa, ajustando dinámicamente el paralelismo en función de las condiciones de red en tiempo real. Estas son configuraciones avanzadas que probablemente no sean necesarias en la mayoría de los casos. Las variables siguientes controlan el comportamiento del controlador adaptativo:
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_CLIENT_ENABLE_ADAPTIVE_CONCURRENCY | true | Activar o desactivar el control de concurrencia adaptativa. Cuando está desactivado, la concurrencia se mantiene en el valor inicial. |
HF_XET_CLIENT_AC_INITIAL_UPLOAD_CONCURRENCY | 1 | Número inicial de flujos de carga concurrentes. Modo HP: 16. |
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY | 1 | Número inicial de flujos de descarga concurrentes. Modo HP: 16. |
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY | 1 | Límite inferior para la concurrencia de carga. Modo HP: 4. |
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY | 1 | Límite inferior para la concurrencia de descargas. Modo HP: 4. |
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY | 64 | Límite superior para la concurrencia de carga. Modo HP: 124. |
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY | 64 | Límite superior para la concurrencia de descargas. Modo HP: 124. |
HF_XET_CLIENT_AC_TARGET_RTT | 60s | Tiempo de ida y vuelta objetivo. La concurrencia aumenta mientras el tiempo de ida y vuelta previsto para una transferencia completa sea inferior a este valor. |
HF_XET_CLIENT_AC_MAX_HEALTHY_RTT | 90s | Tiempo de ida y vuelta máximo aceptable. Las transferencias que duren más que este valor se cuentan como fallos por parte del controlador adaptativo. |
HF_XET_CLIENT_AC_HEALTHY_SUCCESS_RATIO_THRESHOLD | 0.8 | Ratio de éxito a partir del cual el controlador aumenta la concurrencia. |
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD | 0.5 | Ratio de éxito por debajo del cual el controlador disminuye la concurrencia. |
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS | 10000 | Intervalo (en ms) en el que se registra el estado de concurrencia. |
Para fijar la concurrencia en un valor fijo (omitir el controlador adaptativo), use los alias de conveniencia
HF_XET_FIXED_UPLOAD_CONCURRENCYyHF_XET_FIXED_DOWNLOAD_CONCURRENCY. Estos establecen la concurrencia inicial, mínima y máxima en el mismo valor.
Red y reintentos
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS | 5 | Número máximo de intentos de reintentos para solicitudes fallidas. |
HF_XET_CLIENT_RETRY_BASE_DELAY | 3000ms | Retraso base entre reintentos (con retroceso exponencial). |
HF_XET_CLIENT_RETRY_MAX_DURATION | 360s | Tiempo total máximo a dedicar a reintentar una solicitud. |
HF_XET_CLIENT_CONNECT_TIMEOUT | 60s | Tiempo de espera de la conexión TCP. |
HF_XET_CLIENT_READ_TIMEOUT | 120s | Tiempo de espera de lectura para las respuestas HTTP. |
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT | 60s | Tiempo de espera antes de cerrar las conexiones inactivas. |
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS | 16 | Número máximo de conexiones inactivas en el pool. |
Transferencia de datos
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION | 8 | Número máximo de archivos procesados de forma concurrente durante la carga. Modo HP: 100. |
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS | 8 | Número máximo de archivos descargados simultáneamente. |
HF_XET_DATA_INGESTION_BLOCK_SIZE | 8mb | Tamaño de los bloques leídos durante la ingesta de archivos. |
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL | 200ms | Con qué frecuencia se actualizan las barras de progreso. |
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW | 10s | Ventana de tiempo utilizada para agregar las mediciones de velocidad de transferencia en el informe de progreso. |
HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD | false | Establezca en 1 para enviar todos los datos de carga a través del servicio de almacenamiento Xet en lugar de directamente a S3 (hf_xet 1.8.0+). Consulte Carga detrás de un proxy o firewall. |
Descargar buffers
Estos controlan el uso de memoria durante las descargas.
A partir de hf_xet 1.7.0, los valores predeterminados de las tres variables DOWNLOAD_BUFFER se basan en la cantidad de memoria que hf_xet puede utilizar. Esto corresponde a la RAM del equipo, o al límite de memoria del contenedor si este es menor. Cada valor predeterminado es una fracción de esa memoria, limitada entre el mínimo y el máximo indicados en la tabla. El modo HP utiliza el doble de la fracción, con el mismo mínimo y máximo. Por ejemplo, un contenedor limitado a 4 GB obtiene un búfer de aproximadamente 256 MB con un límite de 1 GB, y un equipo con 32 GB obtiene aproximadamente el mismo búfer de 2 GB y límite de 8 GB que en versiones anteriores.
Las versiones anteriores, o cualquier versión que no pueda determinar la cantidad de memoria disponible, usan valores predeterminados fijos de 2gb, 512mb y 8gb (16gb, 2gb y 64gb en modo HP). Los valores en uso se escriben en el archivo de registro hf_xet al iniciar (consulte Registro).
| Variable de entorno | Predeterminado | Modo HP | Descripción |
|---|---|---|---|
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE | 256mb | 1gb | Tamaño mínimo de recuperación para las solicitudes de reconstrucción. |
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE | 8gb | 16gb | Tamaño máximo de recuperación para las solicitudes de reconstrucción. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE | 1/16 de la memoria, de 64mb a 16gb | 1/8 de la memoria | Presupuesto base del búfer compartido. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE | 1/64 de la memoria, de 16mb a 2gb | 1/32 de la memoria | Presupuesto adicional de búfer por archivo activo. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT | 1/4 de la memoria, de 264mb a 64gb | 1/2 de la memoria | Límite estricto de la memoria total del búfer de descarga. Si HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE se establece con un valor superior a este, el límite se aumenta para que coincida. |
HF_XET_DISABLE_MEMORY_DERIVED_DOWNLOAD_BUFFERS | unset | — | Establezca en 1 para usar los valores predeterminados fijos en lugar de dimensionar los búferes a partir de la memoria disponible. |
HF_XET_RECONSTRUCTION_TARGET_BLOCK_COMPLETION_TIME | 15m | — | Tiempo objetivo para completar un bloque de prefetch. Se utiliza para determinar la cantidad de datos que se deben descargar por adelantado durante las descargas. |
HF_XET_RECONSTRUCTION_MIN_PREFETCH_BUFFER | 1gb | — | Cantidad mínima de datos que se mantienen precargados durante las descargas, independientemente del tiempo estimado de finalización. |
Caché de fragmentos
El shard cache almacena en disco, bajo el directorio de caché de Xet, el índice de deduplicación (los “shards” que describen los fragmentos ya subidos). Una caché más grande permite al cliente deduplicar contra más datos vistos previamente, de modo que se vuelven a subir menos bytes.
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_SHARD_CACHE_SIZE_LIMIT | 16gb | Tope suave para la caché de fragmentos en disco. La caché se recorta a este tamaño al inicio de una ejecución, pero puede crecer más allá de él dentro de una sola sesión de larga duración. Como guía aproximada, una caché de tamaño X deduplica frente a aproximadamente 1000 × X de datos (16 GB → ~16 TB). Auméntelo para mejorar la deduplicación en repositorios muy grandes; redúzcalo si el crecimiento de la caché corre el riesgo de llenar su disco. Acepta un tamaño legible por humanos (p. ej. 32gb) o un recuento de bytes en bruto. |
HF_XET_SHARD_CHUNK_INDEX_TABLE_MAX_SIZE | 64mb | Tamaño máximo del índice de fragmentos en memoria. Una vez alcanzado, no se cargan más fragmentos para la deduplicación. |
HF_XET_SHARD_CACHE_SUBDIR | shard-cache | Subdirectorio para la caché de fragmentos dentro del directorio de caché de Xet. |
Caché de fragmentos
hf_xet ya no utiliza una caché local de fragmentos para las descargas. Los archivos descargados se siguen almacenando en la caché basada en archivos de huggingface_hub.
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_CHUNK_CACHE_SIZE_BYTES | — | Ya no se utiliza en hf_xet. Establecerlo no habilita una caché de descargas por fragmentos. |
Registro
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
HF_XET_LOG_DEST | (ninguno) | Destino de los registros. Acepta una ruta de archivo o una ruta de directorio (que termine en /). Cuando se establece en un directorio, los archivos de registro se crean con nombres con marca de tiempo. Cuando se establece en una cadena vacía, los registros se envían a la consola. Cuando no se establece, los registros se envían al subdirectorio logs/ en el directorio de caché de Xet de Hugging Face. |
HF_XET_LOG_FORMAT | (ninguno) | Formato de registro. Establezca json para registros en formato JSON; de lo contrario, texto plano. De forma predeterminada, el registro en archivo usa JSON y el registro en consola usa texto. |
HF_XET_LOG_PREFIX | xet | Prefijo para los nombres de los archivos de registro al registrar en un directorio. |
HF_XET_LOG_DIR_DISABLE_CLEANUP | false | Desactivar la limpieza automática de los archivos de registro antiguos en el directorio de registro. |
HF_XET_LOG_DIR_MAX_SIZE | 250mb | Tamaño total máximo de los archivos de registro en el directorio de registro. Los archivos antiguos se eliminan para mantenerse por debajo de este límite. |
HF_XET_LOG_DIR_MIN_DELETION_AGE | 1d | Edad mínima antes de que un archivo de registro pueda eliminarse durante la limpieza. |
HF_XET_LOG_DIR_MAX_RETENTION_AGE | 14d | Edad máxima para los archivos de registro. Los archivos más antiguos que este valor se eliminan siempre durante la limpieza. |
Telemetría
hf_xet envía un informe breve después de cada carga y descarga. Consulte Telemetría para ver qué contiene. Para desactivarlo, establezca HF_HUB_DISABLE_TELEMETRY=1.
Limitaciones actuales
Aunque Xet aporta deduplicación de granularidad fina y un rendimiento mejorado al almacenamiento basado en Git, algunas funciones y compatibilidades de plataforma aún están en desarrollo. Como resultado, tenga en cuenta las siguientes restricciones al trabajar con un repositorio habilitado para Xet:
- Solo sistemas de 64 bits: Tanto
hf_xetcomo Git Xet requieren actualmente una arquitectura de 64 bits; los sistemas de 32 bits no son compatibles.