# Compartilhando pipelines e modelos

Compartilhe seus pipelines, modelos e agendadores no Hub com [PushToHubMixin](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin). Este mixin:

1. cria um repositório no Hub
2. salva os arquivos do seu modelo, agendador ou pipeline para que possam ser recarregados posteriormente
3. envia a pasta contendo esses arquivos para o Hub

Faça login na sua conta do Hugging Face com o seu [token](https://huggingface.co/settings/tokens) de acesso.

```py
from huggingface_hub import notebook_login

notebook_login()
```

```bash
hf auth login
```

Faça push para o namespace do seu usuário com um id curto (`"my-controlnet-model"`) ou para uma organização com `"your-org/my-controlnet-model"`.

## Modelos

Para enviar um modelo para o Hub, chame [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) e especifique o id do repositório do modelo.

```py
from diffusers import ControlNetModel

controlnet = ControlNetModel(
    block_out_channels=(32, 64),
    layers_per_block=2,
    in_channels=4,
    down_block_types=("DownBlock2D", "CrossAttnDownBlock2D"),
    cross_attention_dim=32,
    conditioning_embedding_out_channels=(16, 32),
)
controlnet.push_to_hub("my-controlnet-model")
```

O método [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) salva o arquivo `config.json` do modelo e os pesos são salvos automaticamente como [arquivos safetensors](./other-formats#safetensors).

Carregue o modelo novamente com [ControlNetModel.from_pretrained()](/docs/diffusers/main/pt/api/models/overview#diffusers.ModelMixin.from_pretrained).

```py
model = ControlNetModel.from_pretrained("your-namespace/my-controlnet-model")
```

## Agendador

Para enviar um agendador para o Hub, chame [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) e especifique o id do repositório do agendador.

```py
from diffusers import DDIMScheduler

scheduler = DDIMScheduler(
    beta_start=0.00085,
    beta_end=0.012,
    beta_schedule="scaled_linear",
    clip_sample=False,
    set_alpha_to_one=False,
)
scheduler.push_to_hub("my-ddim-scheduler")
```

O método [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) salva o arquivo `scheduler_config.json` do agendador no repositório especificado.

Carregue o agendador novamente com [from_pretrained()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained).

```py
scheduler = DDIMScheduler.from_pretrained("your-namespace/my-ddim-scheduler")
```

## Pipeline

Para enviar um pipeline para o Hub, carregue-o com [from_pretrained()](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) e, em seguida, chame [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) com um id de repositório.

```py
import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "Qwen/Qwen-Image", dtype=torch.bfloat16, device_map="cuda"  # or "mps", "xpu", "cpu"
)
pipeline.push_to_hub("your-namespace/my-qwen-image")
```

O método [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) salva cada componente em uma subpasta no repositório. Carregue o pipeline novamente com [DiffusionPipeline.from_pretrained()](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained).

```py
pipeline = DiffusionPipeline.from_pretrained("your-namespace/my-qwen-image")
```

## Privacidade

Defina `private=True` em [push_to_hub()](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) para manter os arquivos de um modelo, agendador ou pipeline privados.

```py
controlnet.push_to_hub("my-controlnet-model-private", private=True)
```

Pass `create_pr=True` para abrir um pull request em um repositório existente no Hub, em vez de fazer push diretamente para a branch padrão.

Modelos e pipelines também aceitam `variant=` no push quando você deseja um arquivo de pesos nomeado, como `fp16`. Schedulers não usam `variant`.

Repositórios privados são visíveis apenas para você. Outros usuários não poderão clonar o repositório e ele não aparecerá nos resultados de busca. Mesmo que um usuário tenha a URL do seu repositório privado, ele receberá um `404 - Sorry, we can't find the page you are looking for`. Você deve estar [logado](https://huggingface.co/docs/huggingface_hub/quick-start#login) para carregar um modelo de um repositório privado.

