Spaces:
Runtime error
Runtime error
File size: 6,580 Bytes
a49cc2f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
<!--Copyright 2024 The HuggingFace Team. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
-->
# νμΌλ€μ Hubλ‘ νΈμνκΈ°
[[open-in-colab]]
π€ Diffusersλ λͺ¨λΈ, μ€μΌμ€λ¬ λλ νμ΄νλΌμΈμ Hubμ μ
λ‘λν μ μλ [`~diffusers.utils.PushToHubMixin`]μ μ 곡ν©λλ€. μ΄λ Hubμ λΉμ μ νμΌμ μ μ₯νλ μ¬μ΄ λ°©λ²μ΄λ©°, λ€λ₯Έ μ¬λλ€κ³Ό μμ
μ 곡μ ν μλ μμ΅λλ€. μ€μ μ μΌλ‘ [`~diffusers.utils.PushToHubMixin`]κ° λμνλ λ°©μμ λ€μκ³Ό κ°μ΅λλ€:
1. Hubμ 리ν¬μ§ν 리λ₯Ό μμ±ν©λλ€.
2. λμ€μ λ€μ λΆλ¬μ¬ μ μλλ‘ λͺ¨λΈ, μ€μΌμ€λ¬ λλ νμ΄νλΌμΈ νμΌμ μ μ₯ν©λλ€.
3. μ΄λ¬ν νμΌμ΄ ν¬ν¨λ ν΄λλ₯Ό Hubμ μ
λ‘λν©λλ€.
μ΄ κ°μ΄λλ [`~diffusers.utils.PushToHubMixin`]μ μ¬μ©νμ¬ Hubμ νμΌμ μ
λ‘λνλ λ°©λ²μ 보μ¬μ€λλ€.
λ¨Όμ μ‘μΈμ€ [ν ν°](https://huggingface.co/settings/tokens)μΌλ‘ Hub κ³μ μ λ‘κ·ΈμΈν΄μΌ ν©λλ€:
```py
from huggingface_hub import notebook_login
notebook_login()
```
## λͺ¨λΈ
λͺ¨λΈμ νλΈμ νΈμνλ €λ©΄ [`~diffusers.utils.PushToHubMixin.push_to_hub`]λ₯Ό νΈμΆνκ³ Hubμ μ μ₯ν λͺ¨λΈμ 리ν¬μ§ν 리 idλ₯Ό μ§μ ν©λλ€:
```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")
```
λͺ¨λΈμ κ²½μ° Hubμ νΈμν κ°μ€μΉμ [*λ³ν*](loading#checkpoint-variants)μ μ§μ ν μλ μμ΅λλ€. μλ₯Ό λ€μ΄, `fp16` κ°μ€μΉλ₯Ό νΈμνλ €λ©΄ λ€μκ³Ό κ°μ΄ νμΈμ:
```py
controlnet.push_to_hub("my-controlnet-model", variant="fp16")
```
[`~diffusers.utils.PushToHubMixin.push_to_hub`] ν¨μλ λͺ¨λΈμ `config.json` νμΌμ μ μ₯νκ³ κ°μ€μΉλ `safetensors` νμμΌλ‘ μλμΌλ‘ μ μ₯λ©λλ€.
μ΄μ Hubμ 리ν¬μ§ν 리μμ λͺ¨λΈμ λ€μ λΆλ¬μ¬ μ μμ΅λλ€:
```py
model = ControlNetModel.from_pretrained("your-namespace/my-controlnet-model")
```
## μ€μΌμ€λ¬
μ€μΌμ€λ¬λ₯Ό νλΈμ νΈμνλ €λ©΄ [`~diffusers.utils.PushToHubMixin.push_to_hub`]λ₯Ό νΈμΆνκ³ Hubμ μ μ₯ν μ€μΌμ€λ¬μ 리ν¬μ§ν 리 idλ₯Ό μ§μ ν©λλ€:
```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-controlnet-scheduler")
```
[`~diffusers.utils.PushToHubMixin.push_to_hub`] ν¨μλ μ€μΌμ€λ¬μ `scheduler_config.json` νμΌμ μ§μ λ 리ν¬μ§ν 리μ μ μ₯ν©λλ€.
μ΄μ νλΈμ 리ν¬μ§ν 리μμ μ€μΌμ€λ¬λ₯Ό λ€μ λΆλ¬μ¬ μ μμ΅λλ€:
```py
scheduler = DDIMScheduler.from_pretrained("your-namepsace/my-controlnet-scheduler")
```
## νμ΄νλΌμΈ
λͺ¨λ μ»΄ν¬λνΈκ° ν¬ν¨λ μ 체 νμ΄νλΌμΈμ Hubλ‘ νΈμν μλ μμ΅λλ€. μλ₯Ό λ€μ΄, μνλ νλΌλ―Έν°λ‘ [`StableDiffusionPipeline`]μ μ»΄ν¬λνΈλ€μ μ΄κΈ°νν©λλ€:
```py
from diffusers import (
UNet2DConditionModel,
AutoencoderKL,
DDIMScheduler,
StableDiffusionPipeline,
)
from transformers import CLIPTextModel, CLIPTextConfig, CLIPTokenizer
unet = UNet2DConditionModel(
block_out_channels=(32, 64),
layers_per_block=2,
sample_size=32,
in_channels=4,
out_channels=4,
down_block_types=("DownBlock2D", "CrossAttnDownBlock2D"),
up_block_types=("CrossAttnUpBlock2D", "UpBlock2D"),
cross_attention_dim=32,
)
scheduler = DDIMScheduler(
beta_start=0.00085,
beta_end=0.012,
beta_schedule="scaled_linear",
clip_sample=False,
set_alpha_to_one=False,
)
vae = AutoencoderKL(
block_out_channels=[32, 64],
in_channels=3,
out_channels=3,
down_block_types=["DownEncoderBlock2D", "DownEncoderBlock2D"],
up_block_types=["UpDecoderBlock2D", "UpDecoderBlock2D"],
latent_channels=4,
)
text_encoder_config = CLIPTextConfig(
bos_token_id=0,
eos_token_id=2,
hidden_size=32,
intermediate_size=37,
layer_norm_eps=1e-05,
num_attention_heads=4,
num_hidden_layers=5,
pad_token_id=1,
vocab_size=1000,
)
text_encoder = CLIPTextModel(text_encoder_config)
tokenizer = CLIPTokenizer.from_pretrained("hf-internal-testing/tiny-random-clip")
```
λͺ¨λ μ»΄ν¬λνΈλ€μ [`StableDiffusionPipeline`]μ μ λ¬νκ³ [`~diffusers.utils.PushToHubMixin.push_to_hub`]λ₯Ό νΈμΆνμ¬ νμ΄νλΌμΈμ Hubλ‘ νΈμν©λλ€:
```py
components = {
"unet": unet,
"scheduler": scheduler,
"vae": vae,
"text_encoder": text_encoder,
"tokenizer": tokenizer,
"safety_checker": None,
"feature_extractor": None,
}
pipeline = StableDiffusionPipeline(**components)
pipeline.push_to_hub("my-pipeline")
```
[`~diffusers.utils.PushToHubMixin.push_to_hub`] ν¨μλ κ° μ»΄ν¬λνΈλ₯Ό 리ν¬μ§ν 리μ νμ ν΄λμ μ μ₯ν©λλ€. μ΄μ Hubμ 리ν¬μ§ν 리μμ νμ΄νλΌμΈμ λ€μ λΆλ¬μ¬ μ μμ΅λλ€:
```py
pipeline = StableDiffusionPipeline.from_pretrained("your-namespace/my-pipeline")
```
## λΉκ³΅κ°
λͺ¨λΈ, μ€μΌμ€λ¬ λλ νμ΄νλΌμΈ νμΌλ€μ λΉκ³΅κ°λ‘ λλ €λ©΄ [`~diffusers.utils.PushToHubMixin.push_to_hub`] ν¨μμμ `private=True`λ₯Ό μ€μ νμΈμ:
```py
controlnet.push_to_hub("my-controlnet-model-private", private=True)
```
λΉκ³΅κ° 리ν¬μ§ν 리λ λ³ΈμΈλ§ λ³Ό μ μμΌλ©° λ€λ₯Έ μ¬μ©μλ 리ν¬μ§ν 리λ₯Ό 볡μ ν μ μκ³ λ¦¬ν¬μ§ν λ¦¬κ° κ²μ κ²°κ³Όμ νμλμ§ μμ΅λλ€. μ¬μ©μκ° λΉκ³΅κ° 리ν¬μ§ν 리μ URLμ κ°μ§κ³ μλλΌλ `404 - Sorry, we can't find the page you are looking for`λΌλ λ©μμ§κ° νμλ©λλ€. λΉκ³΅κ° 리ν¬μ§ν 리μμ λͺ¨λΈμ λ‘λνλ €λ©΄ [λ‘κ·ΈμΈ](https://huggingface.co/docs/huggingface_hub/quick-start#login) μνμ¬μΌ ν©λλ€. |