Hub documentation
Usando o Xet Storage
Usando o Xet Storage
Python
Para acessar uma versão do huggingface_hub com suporte a Xet, basta instalar a versão mais recente:
pip install -U huggingface_hub
A partir da versão 0.32.0 do huggingface_hub, isso também instalará o hf_xet. O pacote hf_xet integra o huggingface_hub ao xet-core, o cliente em Rust para o backend Xet.
Se você usa as bibliotecas transformers ou datasets, elas já utilizam o huggingface_hub. Desde que a versão do huggingface_hub seja >= 0.32.0, nenhuma ação adicional precisa ser tomada.
Quando as versões do huggingface_hub >= 0.30.0 e < 0.32.0 estão instaladas, o hf_xet deve ser instalado explicitamente:
pip install -U hf-xet
E é isso! Agora você obtém os benefícios da deduplicação do Xet para uploads e downloads. Membros da equipe que usam uma versão do huggingface_hub < 0.30.0 ainda poderão fazer upload e download de repositórios por meio da compatibilidade reversa fornecida pela ponte LFS.
Para ver a documentação de uso mais detalhada, consulte a documentação do huggingface_hub para:
Git
Usuários do Git podem acessar os benefícios do Xet baixando e instalando a extensão Git Xet. Uma vez instalada, basta usar os fluxos de trabalho padrão para gerenciar repositórios do Hub com Git - nenhuma alteração adicional é necessária.
Pré-requisitos
Instale no macOS ou Linux (amd64 ou aarch64)
Instale usando um script de instalação com o seguinte comando no seu terminal (requer curl e unzip):
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/huggingface/xet-core/refs/heads/main/git_xet/install.sh | shOu, instale usando o Homebrew:
brew install git-xet
git xet installPara verificar a instalação, execute:
git xet --versionWindows (amd64)
Usando winget:
winget install git-xetUsando um instalador:
- Baixe
git-xet-windows-installer-x86_64.zip(disponível aqui) e descompacte. - Execute o arquivo de instalador
msie siga as instruções.
Instalação manual:
- Baixe
git-xet-windows-x86_64.zip(disponível aqui) e descompacte. - Coloque o
git-xet.exeextraído em um diretório doPATH. - Execute
git xet installem um terminal.
Para verificar a instalação, execute:
git xet --versionUsando Git Xet
Uma vez instalado na sua plataforma, usar o Git Xet é tão simples quanto seguir os fluxos de trabalho padrão do Git do Hub.
Certifique-se de que todos os pré-requisitos estão instalados e configurados, siga as instruções de configuração para trabalhar com repositórios no Hub, em seguida, faça o commit das suas alterações e push para o Hub:
# Create any files you like! Then...
git add .
git commit -m "Uploading new models" # You can choose any descriptive message
git pushPor baixo dos panos, o protocolo Xet é acionado para enviar arquivos grandes diretamente para o armazenamento Xet, aumentando as velocidades de upload por meio do poder da deduplicação em nível de chunk.
Desinstalar no macOS ou Linux
Usando o Homebrew:
git xet uninstall brew uninstall git-xet
Se você usou o script de instalação (para MacOS ou Linux), execute o seguinte no seu terminal:
git xet uninstall
sudo rm $(which git-xet)Desinstalar no Windows
Se você usou winget:
winget uninstall git-xetSe você usou o instalador:
- Acesse Configurações -> Aplicativos -> Aplicativos instalados
- Encontre “Git-Xet”.
- Selecione a opção “Desinstalar” disponível no menu de contexto.
Se você instalou manualmente:
- Execute
git xet uninstallem um terminal. - Exclua o arquivo
git-xet.exedo local onde ele foi originalmente colocado.
Recomendações
O Xet se integra perfeitamente a todos os fluxos de trabalho do Hub. No entanto, há algumas etapas que você pode considerar para aproveitar ao máximo os benefícios do armazenamento Xet.
Ao fazer upload ou download com Python:
- Verifique se
hf_xetestá instalado: Embora o Xet mantenha compatibilidade reversa com clientes legados otimizados para Git LFS, a integração dohf_xetcom ohuggingface_huboferece desempenho ideal baseado em chunks e iterações mais rápidas em arquivos grandes. - A concorrência adaptativa está ativada por padrão:
hf_xetajusta automaticamente o número de fluxos de transferência paralelos com base nas condições de rede em tempo real — sem necessidade de configuração. As configurações padrão saturarão a maioria dos caminhos de rede sem qualquer ajuste. - Os buffers de download são dimensionados de acordo com a memória do sistema: a partir da versão 1.7.0 do
hf_xet, os buffers de download são dimensionados com base na memória disponível para ohf_xet, incluindo os limites de memória de contêineres. Contêineres pequenos usam menos memória para downloads e máquinas grandes usam mais, sem a necessidade de configurações. Consulte Buffers de download. - Ajuste avançado: Para controle de granularidade fina,
HF_XET_FIXED_DOWNLOAD_CONCURRENCYeHF_XET_FIXED_UPLOAD_CONCURRENCYpermitem fixar a concorrência em um valor específico, ignorando o controlador adaptativo. Consulte as variáveis de ambiente dohf_xetpara a lista completa de opções.
Ao fazer upload ou download no Git ou Python:
- Aproveite-se de commits frequentes e incrementais: a deduplicação em nível de chunk do Xet significa que você pode fazer atualizações incrementais em modelos ou conjuntos de dados com segurança. Apenas os chunks alterados são enviados, o que torna os commits frequentes rápidos e eficientes em termos de armazenamento.
- Seja específico no .gitattributes: ao definir padrões para Xet ou LFS, use extensões de arquivo precisas (por exemplo,
*.safetensors,*.bin) para evitar rotear arquivos menores desnecessariamente pelo armazenamento de arquivos grandes. - Dê prioridade ao acesso da comunidade: o Xet aumenta substancialmente a eficiência e a escala da transferência de arquivos grandes. Em vez de estruturar seu repositório para reduzir seu tamanho total (ou o tamanho de arquivos individuais), organize-o para colaboradores e usuários da comunidade, para que eles possam navegar e recuperar facilmente o conteúdo de que precisam.
Fazendo upload por trás de um proxy ou firewall
A partir da versão 1.8.0 do hf_xet, os uploads podem enviar dados diretamente para o Amazon S3, em vez de apenas através do serviço de armazenamento Xet. O Hub decide para cada upload se deve usar o upload direto e está ativando essa funcionalidade gradualmente. Os downloads não mudam.
Se sua rede restringe o tráfego de saída, permita esses nomes de host (HTTPS, porta 443) além dos listados em Baixando atrás de um proxy ou firewall:
| Nome do host | Propósito |
|---|---|
s3.us-east-1.amazonaws.com | Uploads diretos (EUA) |
s3.eu-west-3.amazonaws.com | Uploads diretos para repositórios armazenados na UE |
Esses nomes de host não estão sob hf.co ou huggingface.co, portanto, a lista de permissões desses sufixos não os cobre.
Se o hf_xet não consegue acessar o S3, ele tenta novamente o upload direto e, em seguida, envia esses dados pelo serviço de armazenamento Xet. O upload ainda é concluído, mas pode ser muito mais lento, pois cada bloco aguarda a conclusão das novas tentativas primeiro. O log do hf_xet exibe Upload grant URL unreachable, falling back to legacy xorb upload path (may be slower) quando isso ocorre. Se você não puder permitir os nomes de host do S3, defina HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD=1 para desativar os uploads diretos.
Variáveis de Ambiente
Tanto o hf_xet quanto o Git Xet são impulsionados pelo xet-core, que pode ser configurado por meio de variáveis de ambiente. As tabelas abaixo listam as variáveis individuais para controle granular. A maioria dos usuários não precisará alterar nenhuma delas — os valores padrão são ajustados para saturar automaticamente a maioria dos caminhos de rede.
HF_XET_HIGH_PERFORMANCE=1é uma flag de conveniência que ajusta várias configurações de uma vez (limites de concorrência, tamanhos de buffer e limites de arquivos paralelos). Ela é destinada a máquinas com alta largura de banda e disco rápido. A partir da versão 1.7.0 dohf_xet, os tamanhos de buffer que ela define são baseados na memória disponível para ohf_xet(veja Buffers de Download), portanto, ela não requer mais 64 GB de RAM, e qualquer variável que você definir manualmente tem precedência sobre esta flag. Em versões anteriores, use-a apenas em máquinas com pelo menos 64 GB de RAM.
Geral
Flags de alto nível que a maioria dos usuários procura primeiro.
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_HIGH_PERFORMANCE (alias HF_XET_HP) | off | Flag de conveniência que maximiza o uso da rede e da CPU aumentando a concorrência, os tamanhos de buffer e os limites de arquivos paralelos de uma só vez. Veja a observação acima. |
HF_XET_CACHE | $HF_HOME/xet | Diretório onde o Xet faz o cache de dados localmente (chunks baixados e shards de deduplicação). Tem precedência sobre HF_HOME. |
Concorrência Adaptativa
Por padrão, o xet-core usa concorrência adaptativa — ajustando dinamicamente o paralelismo com base nas condições de rede em tempo real. Estas são configurações avançadas que provavelmente não serão necessárias na maioria dos casos. As variáveis abaixo controlam o comportamento do controlador adaptativo:
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_CLIENT_AC_INITIAL_UPLOAD_CONCURRENCY | 2 | Número inicial de streams de upload simultâneos. Modo HP: 16. |
HF_XET_CLIENT_AC_INITIAL_DOWNLOAD_CONCURRENCY | 4 | Número inicial de streams de download simultâneos. Modo HP: 16. |
HF_XET_CLIENT_AC_MIN_UPLOAD_CONCURRENCY | 1 | Limite inferior para a concorrência de upload. Modo HP: 4. |
HF_XET_CLIENT_AC_MIN_DOWNLOAD_CONCURRENCY | 1 | Limite inferior para a concorrência de download. Modo HP: 4. |
HF_XET_CLIENT_AC_MAX_UPLOAD_CONCURRENCY | 64 | Limite superior para a concorrência de upload. Modo HP: 124. |
HF_XET_CLIENT_AC_MAX_DOWNLOAD_CONCURRENCY | 64 | Limite superior para a concorrência de download. Modo HP: 124. |
HF_XET_CLIENT_AC_TARGET_RTT | 60s | Tempo de ida e volta alvo. A concorrência aumenta enquanto o tempo de ida e volta previsto para uma transferência completa estiver abaixo desse valor. |
HF_XET_CLIENT_AC_MAX_HEALTHY_RTT | 90s | Tempo de ida e volta máximo aceitável. Transferências que levam mais tempo que isso são contadas como falhas pelo controlador adaptativo. |
HF_XET_CLIENT_AC_HEALTHY_SUCCESS_RATIO_THRESHOLD | 0.8 | Taxa de sucesso acima da qual o controlador aumenta a concorrência. |
HF_XET_CLIENT_AC_UNHEALTHY_SUCCESS_RATIO_THRESHOLD | 0.5 | Taxa de sucesso abaixo da qual o controlador diminui a concorrência. |
HF_XET_CLIENT_AC_LOGGING_INTERVAL_MS | 10000 | Intervalo (em ms) no qual o status de concorrência é registrado. |
Para fixar a concorrência em um valor específico (ignorando o controlador adaptativo), use os aliases de conveniência
HF_XET_FIXED_UPLOAD_CONCURRENCYeHF_XET_FIXED_DOWNLOAD_CONCURRENCY. Esses definem a concorrência inicial, mínima e máxima para o mesmo valor.
Rede e Tentativa
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_CLIENT_RETRY_MAX_ATTEMPTS | 5 | Número máximo de tentativas de repetição para solicitações com falha. |
HF_XET_CLIENT_RETRY_BASE_DELAY | 3000ms | Atraso base entre novas tentativas (com backoff exponencial). |
HF_XET_CLIENT_RETRY_MAX_DURATION | 360s | Tempo máximo de espera antes de qualquer nova tentativa. As tentativas de repetição cessam após HF_XET_CLIENT_RETRY_MAX_ATTEMPTS, portanto, o tempo total de repetição pode exceder esse valor. |
HF_XET_CLIENT_CONNECT_TIMEOUT | 60s | Tempo limite de conexão TCP. |
HF_XET_CLIENT_READ_TIMEOUT | 300s | Tempo limite de espera para respostas HTTP. |
HF_XET_CLIENT_IDLE_CONNECTION_TIMEOUT | 60s | Tempo limite antes que as conexões ociosas sejam fechadas. |
HF_XET_CLIENT_MAX_IDLE_CONNECTIONS | 16 | Número máximo de conexões ociosas na pool. |
HF_XET_CLIENT_RECONSTRUCTION_API_VERSION | (não definido) | Force a versão da API de download (reconstrução) para 1 ou 2, sem fallback. Quando não definido, o hf_xet tenta a versão 2 e recua para a versão 1 se o servidor não a suportar. |
HF_XET_CLIENT_SHARD_API_VERSION | (não definido) | Force a versão da API de upload (shard) para 1 ou 2, sem fallback. Quando não definido, o hf_xet tenta a versão 2 e recorre à versão 1 se o servidor não a suportar. |
Transferência de Dados
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_DATA_MAX_CONCURRENT_FILE_INGESTION | 8 | Número máximo de arquivos processados simultaneamente durante o upload. Modo HP: 100. |
HF_XET_DATA_MAX_CONCURRENT_FILE_DOWNLOADS | 8 | Número máximo de arquivos baixados simultaneamente. |
HF_XET_DATA_INGESTION_BLOCK_SIZE | 8mb | Tamanho dos blocos lidos durante a ingestão de arquivos. |
HF_XET_DATA_PROGRESS_UPDATE_INTERVAL | 200ms | Com que frequência as barras de progresso são atualizadas. |
HF_XET_DATA_PROGRESS_UPDATE_SPEED_SAMPLING_WINDOW | 10s | Janela de tempo usada para agregar as medições de velocidade de transferência no relatório de progresso. |
HF_XET_CLIENT_LEGACY_DIRECT_XORB_UPLOAD | false | Defina como 1 para enviar todos os dados de upload através do serviço de armazenamento Xet em vez de diretamente para o S3 (hf_xet 1.8.0+). Consulte Upload atrás de um proxy ou firewall. |
Baixar Buffers
Esses controlam o uso de memória durante os downloads.
A partir da versão 1.7.0 do hf_xet, os valores padrão das três variáveis DOWNLOAD_BUFFER são baseados na quantidade de memória que o hf_xet pode utilizar. Isso corresponde à RAM do computador ou ao limite de memória do contêiner, caso este seja menor. Cada valor padrão é uma fração dessa memória, mantida entre o mínimo e o máximo indicados na tabela. O modo HP utiliza o dobro da fração, com o mesmo mínimo e máximo. Por exemplo, um contêiner limitado a 4 GB recebe um buffer de aproximadamente 256 MB com um limite de 1 GB, e um computador com 32 GB recebe aproximadamente o mesmo buffer de 2 GB e limite de 8 GB das versões anteriores.
Versões anteriores, ou qualquer versão que não consiga determinar a quantidade de memória disponível, usam padrões fixos de 2gb, 512mb e 8gb (16gb, 2gb e 64gb no modo HP). Os valores em uso são gravados no arquivo de log hf_xet quando ele inicia (veja Logging).
| Variável de Ambiente | Padrão | Modo HP | Descrição |
|---|---|---|---|
HF_XET_RECONSTRUCTION_MIN_RECONSTRUCTION_FETCH_SIZE | 256mb | 1gb | Tamanho mínimo de busca para solicitações de reconstrução. |
HF_XET_RECONSTRUCTION_MAX_RECONSTRUCTION_FETCH_SIZE | 8gb | 16gb | Tamanho máximo de busca para solicitações de reconstrução. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE | 1/16 da memória, de 64mb a 16gb | 1/8 da memória | Orçamento base do buffer compartilhado. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_PERFILE_SIZE | 1/64 da memória, de 16mb a 2gb | 1/32 da memória | Orçamento adicional de buffer por arquivo ativo. |
HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_LIMIT | 1/4 da memória, de 264mb a 64gb | 1/2 da memória | Limite rígido para a memória total do buffer de download. Se HF_XET_RECONSTRUCTION_DOWNLOAD_BUFFER_SIZE for definido com um valor maior que este, o limite será elevado para corresponder a ele. |
HF_XET_DISABLE_MEMORY_DERIVED_DOWNLOAD_BUFFERS | unset | — | Defina como 1 para usar os padrões fixos em vez de dimensionar os buffers com base na memória disponível. |
HF_XET_RECONSTRUCTION_TARGET_BLOCK_COMPLETION_TIME | 15m | — | Tempo alvo para a conclusão de um bloco de pré-busca. Usado para determinar a quantidade de dados a serem pré-buscados antecipadamente durante os downloads. |
HF_XET_RECONSTRUCTION_MIN_PREFETCH_BUFFER | 1gb | — | Quantidade mínima de dados a manter pré-carregados durante os downloads, independentemente do tempo estimado de conclusão. |
Cache de Shards
O shard cache armazena o índice de deduplicação (os “shards” que descrevem os blocos já enviados) no disco, dentro do diretório de cache do Xet. Um cache maior permite que o cliente deduplique contra mais dados previamente vistos, de modo que menos bytes são reenviados.
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_SHARD_CACHE_SIZE_LIMIT | 16gb | Limite superior para o cache de shards em disco. O cache é reduzido para esse tamanho no início de uma execução, mas pode crescer além dele durante uma única sessão de longa duração. Como guia geral, um cache de tamanho X deduplica em relação a aproximadamente 1000 × X de dados (16 GB → ~16 TB). Aumente-o para obter melhor deduplicação em repositórios muito grandes; diminua-o se o crescimento do cache representar risco de encher seu disco. Aceita um tamanho legível por humanos (por exemplo, 32gb) ou uma contagem bruta de bytes. |
HF_XET_SHARD_CHUNK_INDEX_TABLE_MAX_SIZE | 67108864 | Número máximo de entradas de chunk no índice de deduplicação em memória. Defina um número inteiro, não um tamanho como 128mb. A partir da versão 1.7.1 do hf_xet, quando o índice está cheio, os shards mais antigos são removidos dele para fazer espaço para os novos; versões anteriores param de adicionar chunks assim que ele fica cheio. |
HF_XET_SHARD_CACHE_SUBDIR | shard-cache | Subdiretório para o cache de shards dentro do diretório de cache do Xet. |
Cache de Chunk
hf_xet não usa mais um cache local de blocos para downloads. Os arquivos baixados ainda são armazenados no cache baseado em arquivos do huggingface_hub.
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_CHUNK_CACHE_SIZE_BYTES | — | Não é mais usado pelo hf_xet. Definir isso não habilita um cache de download em blocos. |
Registro
| Variável de Ambiente | Padrão | Descrição |
|---|---|---|
HF_XET_LOG_DEST | (nenhum) | Destino do log. Aceita um caminho de arquivo ou caminho de diretório (terminando com /). Quando definido como um diretório, os arquivos de log são criados com nomes com carimbo de data e hora. Quando definido como uma string vazia, os logs são enviados para o console. Quando não definido, os logs são enviados para o subdiretório logs/ no diretório de cache do Hugging Face Xet. |
HF_XET_LOG_FORMAT | (nenhum) | Formato do log. Defina como json para logs em formato JSON; caso contrário, texto simples. Por padrão, o log em arquivo usa JSON e o log no console usa texto. |
HF_XET_LOG_PREFIX | xet | Prefixo para os nomes dos arquivos de log ao registrar em um diretório. |
HF_XET_LOG_DIR_DISABLE_CLEANUP | false | Desative a limpeza automática de arquivos de log antigos no diretório de log. |
HF_XET_LOG_DIR_MAX_SIZE | 250mb | Tamanho total máximo dos arquivos de log no diretório de log. Os arquivos antigos são removidos para permanecer abaixo desse limite. |
HF_XET_LOG_DIR_MIN_DELETION_AGE | 1d | Idade mínima antes que um arquivo de log possa ser excluído durante a limpeza. |
HF_XET_LOG_DIR_MAX_RETENTION_AGE | 14d | Idade máxima para arquivos de log. Arquivos mais antigos que isso são sempre excluídos durante a limpeza. |
Telemetria
hf_xet envia um relatório curto após cada upload e download. Consulte Telemetria para saber o que ele contém. Para desativá-lo, defina HF_HUB_DISABLE_TELEMETRY=1.
Limitações Atuais
Embora o Xet traga deduplicação de granularidade fina e desempenho aprimorado para o armazenamento baseado em Git, alguns recursos e compatibilidades de plataforma ainda estão em desenvolvimento. Como resultado, mantenha as seguintes restrições em mente ao trabalhar com um repositório habilitado para Xet:
- Somente sistemas de 64 bits: Tanto o
hf_xetquanto o Git Xet atualmente exigem uma arquitetura de 64 bits; sistemas de 32 bits não são suportados.