Hub documentation

Carregando modelos

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Carregando modelos

Para enviar modelos para o Hub, você precisa criar uma conta no Hugging Face. Os modelos no Hub são repositórios baseados em Git, que oferecem versionamento, branches, descoberta e recursos de compartilhamento, integração com dezenas de bibliotecas e muito mais! Você tem controle sobre o que deseja enviar para o seu repositório, o que pode incluir checkpoints, configs e quaisquer outros arquivos.

Você pode vincular repositórios a um usuário individual, como osanseviero/fashion_brands_patterns, ou a uma organização, como facebook/bart-large-xsum. Organizações podem reunir modelos relacionados a uma empresa, comunidade ou biblioteca! Se você escolher uma organização, o modelo será destacado na página da organização e todos os membros da organização terão a capacidade de contribuir para o repositório. Você pode criar uma nova organização aqui.

NOTA: Os modelos NÃO precisam ser compatíveis com as bibliotecas Transformers/Diffusers para obter métricas de download. Qualquer modelo personalizado é suportado. Leia mais abaixo!

Existem várias maneiras de enviar modelos para que sejam bem integrados ao Hub e obtenham métricas de download, descritas abaixo.

  • Caso o seu modelo seja projetado para uma biblioteca que possui suporte nativo, você pode usar os métodos fornecidos pela biblioteca. Modelos personalizados que usam trust_remote_code=True também podem aproveitar esses métodos.
  • Caso seu modelo seja um modelo PyTorch personalizado, é possível aproveitar a classe PyTorchModelHubMixin, pois ela permite adicionar from_pretrained e push_to_hub a qualquer classe nn.Module, assim como nos modelos das bibliotecas Transformers, Diffusers e Timm.
  • Além dos uploads programáticos, você sempre pode usar a interface web ou a linha de comando do git.

Depois que o seu modelo for enviado, sugerimos adicionar um Model Card ao seu repositório para documentar o modelo e torná-lo mais fácil de encontrar.

drawing Example [repository](https://huggingface.co/LiheYoung/depth_anything_vitl14) that leverages [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub). Downloads are shown on the right.

Usando a interface web

Para criar um novo repositório de modelo, visite huggingface.co/new. Em seguida, siga estas etapas:

  1. Na aba “Files and versions”, selecione “Add File” e especifique “Upload File”:
  1. A partir daí, selecione um arquivo do seu computador para enviar e deixe uma mensagem de commit útil para saber o que está sendo enviado:
  1. Em seguida, clique em Commit changes para enviar seu modelo ao Hub!

  2. Inspecionar arquivos e histórico

Você pode verificar seu repositório com todos os arquivos adicionados recentemente!

A interface permite explorar os arquivos do modelo e os commits e visualizar a diferença introduzida por cada commit:

  1. Adicionar metadados

Você pode adicionar metadados ao seu cartão de modelo. Você pode especificar:

  • o tipo de tarefa para a qual este modelo é destinado, habilitando widgets e Inference Providers.
  • a biblioteca utilizada (transformers, spaCy, etc.)
  • a linguagem
  • o conjunto de dados
  • métricas
  • licença
  • muito mais!

Saiba mais sobre as tags de modelos aqui.

  1. Adicionar rastreamentos do TensorBoard

Qualquer repositório que contenha rastros do TensorBoard (nomes de arquivo que contenham tfevents) é categorizado com a tag TensorBoard. Como convenção, sugerimos que você salve os rastros na subpasta runs/. A aba “Training metrics” então facilita a revisão de gráficos das variáveis registradas, como a perda ou a precisão.

Modelos treinados com 🤗 Transformers gerarão trilhas do TensorBoard por padrão se tensorboard estiver instalado.

Upload a partir de uma biblioteca com suporte nativo

Primeiro, verifique se o seu modelo é de uma biblioteca que possui suporte nativo para enviar/carregar do Hub, como Transformers, Diffusers, Timm, Asteroid, etc.: https://huggingface.co/docs/hub/models-libraries. Abaixo, mostraremos como isso é simples para uma biblioteca como a Transformers:

from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

model.push_to_hub("nielsr/my-awesome-bert-model")

# reload
model = BertModel.from_pretrained("nielsr/my-awesome-bert-model")

Algumas bibliotecas, como a Transformers, suportam o carregamento de código do Hub. Essa é uma maneira de fazer seu modelo funcionar com a Transformers usando a flag trust_remote_code=True. Você pode considerar essa opção em vez de uma integração completa de biblioteca.

Envie um modelo do PyTorch usando huggingface_hub

Caso seu modelo seja um modelo (personalizado) do PyTorch, você pode aproveitar a classe PyTorchModelHubMixin disponível na biblioteca Python huggingface_hub. Trata-se de uma classe mínima que adiciona as capacidades from_pretrained e push_to_hub a qualquer nn.Module, além de métricas de download.

Aqui está como usá-lo (assumindo que você tenha executado pip install huggingface_hub):

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin


class MyModel(
    nn.Module,
    PyTorchModelHubMixin, 
    # optionally, you can add metadata which gets pushed to the model card
    repo_url="your-repo-url",
    pipeline_tag="text-to-image",
    license="mit",
):
    def __init__(self, num_channels: int, hidden_size: int, num_classes: int):
        super().__init__()
        self.param = nn.Parameter(torch.rand(num_channels, hidden_size))
        self.linear = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        return self.linear(x + self.param)

# create model
config = {"num_channels": 3, "hidden_size": 32, "num_classes": 10}
model = MyModel(**config)

# save locally
model.save_pretrained("my-awesome-model")

# push to the hub
model.push_to_hub("your-hf-username/my-awesome-model")

# reload
model = MyModel.from_pretrained("your-hf-username/my-awesome-model")

Como você pode ver, o único requisito é que seu modelo herde de PyTorchModelHubMixin. Todos os atributos de instância serão serializados automaticamente para um arquivo config.json. Observe que o método init só pode receber argumentos que sejam serializáveis em JSON. Dataclasses do Python são suportadas.

Isso vem com métricas de download automatizadas, o que significa que você poderá ver quantas vezes o modelo é baixado, da mesma forma que estão disponíveis para modelos integrados nativamente nas bibliotecas Transformers, Diffusers ou Timm. Com essa classe mixin, cada checkpoint separado é armazenado no Hub em um único repositório consistindo de 2 arquivos:

  • um arquivo pytorch_model.bin ou model.safetensors contendo os pesos
  • um arquivo config.json, que é uma versão serializada da configuração do modelo. Esta classe é usada para contar métricas de download: sempre que um usuário chama from_pretrained para carregar um config.json, a contagem aumenta em um. Consulte este guia sobre métricas de download automatizadas.

É recomendável adicionar um cartão de modelo a cada checkpoint para que as pessoas possam ler sobre o que o modelo trata, ter um link para o artigo, etc.

Acesse a documentação do huggingface_hub para saber mais.

Alternativamente, também é possível simplesmente fazer o upload de arquivos ou pastas para o hub de forma programática: https://huggingface.co/docs/huggingface_hub/guides/upload.

Usando Git

Por fim, como os repositórios de modelos são apenas repositórios Git, você também pode usar o Git para enviar seus arquivos de modelo para o Hub. Siga o guia em Primeiros passos com repositórios para aprender a usar a CLI git para commitar e enviar seus modelos.

Update on GitHub