Hub Python Library documentation
Paradigma Git vs HTTP
Paradigma Git vs HTTP
A biblioteca huggingface_hub é uma biblioteca para interagir com o Hugging Face Hub, que é uma coleção de repositórios baseados em git (modelos, conjuntos de dados ou Spaces). Existem duas maneiras principais de acessar o Hub usando huggingface_hub.
A primeira abordagem, a chamada abordagem “baseada em git”, depende do uso de comandos padrão do git diretamente em um terminal. Esse método permite clonar repositórios, criar commits e enviar alterações manualmente. A segunda opção, chamada de abordagem “baseada em HTTP”, envolve fazer requisições HTTP usando o cliente HfApi. Vamos examinar os prós e contras de cada abordagem.
Git: a abordagem histórica baseada em CLI
Inicialmente, a maioria dos usuários interagia com o Hugging Face Hub usando comandos simples de git, como git clone, git add, git commit, git push, git tag ou git checkout.
Essa abordagem permite trabalhar com uma cópia local completa do repositório na sua máquina, assim como no desenvolvimento de software tradicional. Isso pode ser uma vantagem quando você precisa de acesso offline ou deseja trabalhar com o histórico completo de um repositório. No entanto, ela também traz desvantagens: você é responsável por manter o repositório atualizado localmente, gerenciar as credenciais e lidar com arquivos grandes (via git-lfs), o que pode se tornar trabalhoso ao trabalhar com grandes modelos de machine learning ou conjuntos de dados.
Em muitos fluxos de trabalho de aprendizado de máquina, você pode precisar apenas de baixar alguns arquivos para inferência ou converter pesos, sem a necessidade de clonar o repositório inteiro. Nesses casos, usar git pode ser excessivo e introduzir complexidade desnecessária.
HfApi: um cliente HTTP flexível e conveniente
A classe HfApi foi desenvolvida para oferecer uma alternativa ao uso de repositórios git locais, que podem ser difíceis de manter, especialmente ao lidar com modelos ou conjuntos de dados grandes. A classe HfApi oferece a mesma funcionalidade dos fluxos de trabalho baseados em git -como baixar e enviar arquivos e criar branches e tags- mas sem a necessidade de uma pasta local que precise ser mantida em sincronia.
Além das funcionalidades já fornecidas pelo git, a classe HfApi oferece recursos adicionais, como a capacidade de gerenciar repositórios, baixar arquivos usando cache para reutilização eficiente, buscar repositórios e metadados no Hub, acessar recursos da comunidade, como discussões, PRs e comentários, e configurar o hardware e os segredos dos Spaces.
O que devo usar? E quando?
No geral, a abordagem baseada em HTTP é a maneira recomendada de usar huggingface_hub em todos os casos. HfApi permite que você faça pull e push de alterações, trabalhe com PRs, tags e branches, interaja com discussões e muito mais.
No entanto, nem todos os comandos do git estão disponíveis por meio do HfApi. Alguns podem nunca ser implementados, mas estamos sempre tentando melhorar e reduzir essa lacuna. Se você não encontrar seu caso de uso coberto, abra uma issue no GitHub! Acolhemos feedback para ajudar a construir o ecossistema da HF com e para nossos usuários.
Essa preferência pela API HfApi baseada em HTTP em relação aos comandos diretos de git não significa que o versionamento com git desaparecerá do Hugging Face Hub em breve. Sempre será possível usar o git localmente em fluxos de trabalho em que ele fizer sentido.