# Compartilhamento

O [Hub](https://hf.co/models) do Hugging Face é uma plataforma para compartilhar, descobrir e consumir modelos de todos os tipos e tamanhos. Recomendamos fortemente que você compartilhe seu modelo no Hub para impulsionar o aprendizado de máquina de código aberto para todos!

Este guia mostrará como compartilhar um modelo no Hub a partir do Transformers.

## Configuração

Para compartilhar um modelo no Hub, você precisa de uma [conta](https://hf.co/join) do Hugging Face. Crie um [User Access Token](https://hf.co/docs/hub/security-tokens#user-access-tokens) (armazenado no [cache](./installation#cache-directory) por padrão) e faça login na sua conta pela linha de comando ou pelo notebook.

```bash
hf auth login
```

```py
from huggingface_hub import notebook_login

notebook_login()
```

## Recursos do repositório

Cada repositório de modelos oferece controle de versões, histórico de commits e visualização de diffs.

    

O versionamento é baseado em [Git](https://git-scm.com/) e [Git Large File Storage (LFS)](https://git-lfs.github.com/) e permite revisões, uma forma de especificar uma versão de modelo com um hash de commit, tag ou branch.

Por exemplo, use o parâmetro `revision` em [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar uma versão específica de um modelo a partir de um hash de commit.

```py
model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="4c77982"
)
```

Carregar de um branch ou tag fixa todos os arquivos naquela chamada em um único commit e, em seguida, busca todos os arquivos desse commit.

Esse pin é válido apenas para a chamada. Para reprodutibilidade entre execuções, passe um hash de commit explícito ou uma tag que você trate como fixa. Não dependa de `main` ou de outro ramo móvel permanecer fixo entre execuções.

Os repositórios de modelos também suportam [gating](https://hf.co/docs/hub/models-gated) para controlar quem pode acessar um modelo. O gating é comum para permitir que um grupo seleto de usuários visualize um modelo de pesquisa antes que ele seja tornado público.

    

Um repositório de modelos também inclui um [widget](https://hf.co/docs/hub/models-widgets) de inferência para que os usuários interajam diretamente com um modelo no Hub.

Consulte a documentação de [Modelos](https://hf.co/docs/hub/models) do Hub para obter mais informações.

## Enviando um modelo

Existem várias formas de enviar um modelo para o Hub, dependendo da sua preferência de fluxo de trabalho. Você pode enviar um modelo com o [Trainer](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer), chamar [push_to_hub()](/docs/transformers/main/pt/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) diretamente em um modelo ou usar a interface web do Hub.

### Trainer

[Trainer](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer) pode enviar um modelo diretamente para o Hub após o treinamento. Defina `push_to_hub=True` em [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments) e passe-o para [Trainer](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer). Quando o treinamento for concluído, chame [push_to_hub()](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer.push_to_hub) para fazer o upload do modelo.

[push_to_hub()](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer.push_to_hub) adiciona automaticamente informações úteis, como hiperparâmetros de treinamento e resultados, ao cartão do modelo.

```py
from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(output_dir="my-awesome-model", push_to_hub=True)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)
trainer.push_to_hub()
```

Para enviar o modelo para um repositório privado, defina `hub_private_repo=True` em [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments). Se o repositório ainda não tiver sido criado (por exemplo, quando `push_to_hub=False` em [TrainingArguments](/docs/transformers/main/pt/main_classes/trainer#transformers.TrainingArguments)), você também pode passar `private=True` para [push_to_hub()](/docs/transformers/main/pt/main_classes/trainer#transformers.Trainer.push_to_hub) em vez disso. O argumento `private` só tem efeito quando o repositório é criado, portanto, ele não altera a visibilidade de um repositório existente.

```py
trainer.push_to_hub(private=True)
```

### PushToHubMixin

O [PushToHubMixin](/docs/transformers/main/pt/main_classes/model#transformers.utils.PushToHubMixin) fornece a funcionalidade para enviar um modelo ou tokenizer para o Hub.

Chame [push_to_hub()](/docs/transformers/main/pt/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) diretamente em um modelo para enviá-lo ao Hub. Ele cria um repositório no seu namespace com o nome do modelo especificado em [push_to_hub()](/docs/transformers/main/pt/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

```py
model.push_to_hub("my-awesome-model")
```

Outros objetos, como um tokenizer, também são enviados para o Hub da mesma forma.

```py
tokenizer.push_to_hub("my-awesome-model")
```

Seu perfil no Hugging Face deve exibir o repositório de modelo recém-criado. Acesse a aba **Files** para ver todos os arquivos enviados.

Consulte o guia [Upload de arquivos para o Hub](https://hf.co/docs/hub/how-to-upstream) para obter mais informações sobre como enviar arquivos para o Hub.

### Interface web do Hub

A interface web do Hub é uma abordagem sem código para o upload de um modelo.

1. Crie um novo repositório selecionando [**Novo Modelo**](https://huggingface.co/new).

    

Adicione algumas informações sobre o seu modelo:

- Selecione o **proprietário** do repositório. Pode ser você mesmo ou qualquer uma das organizações às quais você pertence.
- Escolha um nome para o seu modelo, que também será o nome do repositório.
- Escolha se o seu modelo é público ou privado.
- Defina o uso da licença.

2. Clique em **Create model** para criar o repositório do modelo.

3. Selecione a aba **Files** e clique no botão **Add file** para arrastar e soltar um arquivo no seu repositório. Adicione uma mensagem de commit e clique em **Commit changes to main** para commitar o arquivo.

    

## Cartão do modelo

[Cards de modelo](https://hf.co/docs/hub/model-cards#model-cards) informam os usuários sobre o desempenho, as limitações, os possíveis vieses e as considerações éticas de um modelo. É altamente recomendável adicionar um card de modelo ao seu repositório!

Um model card é um arquivo `README.md` no seu repositório. Adicione este arquivo da seguinte forma:

- criando e enviando manualmente um arquivo `README.md`
- clicando no botão **Editar cartão do modelo** no repositório

Dê uma olhada no [model card](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) do Llama 3.1 para ver um exemplo do que incluir em um model card.

Saiba mais sobre outros metadados de cartões de modelo (emissões de carbono, licença, link para o paper, etc.) disponíveis no guia [Model Cards](https://hf.co/docs/hub/model-cards#model-cards).

