|
# μΈμ΄νν
μ λ‘λ |
|
|
|
[safetensors](https://github.com/huggingface/safetensors)λ ν
μλ₯Ό μ μ₯νκ³ λ‘λνκΈ° μν μμ νκ³ λΉ λ₯Έ νμΌ νμμ
λλ€. μΌλ°μ μΌλ‘ PyTorch λͺ¨λΈ κ°μ€μΉλ Pythonμ [`pickle`](https://docs.python.org/3/library/pickle.html) μ νΈλ¦¬ν°λ₯Ό μ¬μ©νμ¬ `.bin` νμΌμ μ μ₯λκ±°λ `νΌν΄`λ©λλ€. κ·Έλ¬λ `νΌν΄`μ μμ νμ§ μμΌλ©° νΌν΄λ νμΌμλ μ€νλ μ μλ μ
μ± μ½λκ° ν¬ν¨λ μ μμ΅λλ€. μΈμ΄νν
μλ `νΌν΄`μ μμ ν λμμΌλ‘ λͺ¨λΈ κ°μ€μΉλ₯Ό 곡μ νλ λ° μ΄μμ μ
λλ€. |
|
|
|
μ΄ κ°μ΄λμμλ `.safetensor` νμΌμ λ‘λνλ λ°©λ²κ³Ό λ€λ₯Έ νμμΌλ‘ μ μ₯λ μμ μ νμ° λͺ¨λΈ κ°μ€μΉλ₯Ό `.safetensor`λ‘ λ³ννλ λ°©λ²μ 보μ¬λλ¦¬κ² μ΅λλ€. μμνκΈ° μ μ μΈμ΄νν
μκ° μ€μΉλμ΄ μλμ§ νμΈνμΈμ: |
|
|
|
```bash |
|
!pip install safetensors |
|
``` |
|
|
|
['runwayml/stable-diffusion-v1-5`] (https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main) 리ν¬μ§ν 리λ₯Ό 보면 `text_encoder`, `unet` λ° `vae` νμ ν΄λμ κ°μ€μΉκ° `.safetensors` νμμΌλ‘ μ μ₯λμ΄ μλ κ²μ λ³Ό μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ π€ λν¨μ λ λͺ¨λΈ μ μ₯μμμ μ¬μ©ν μ μλ κ²½μ° ν΄λΉ νμ ν΄λμμ μ΄λ¬ν '.safetensors` νμΌμ μλμΌλ‘ λ‘λν©λλ€. |
|
|
|
λ³΄λ€ λͺ
μμ μΈ μ μ΄λ₯Ό μν΄ μ νμ μΌλ‘ `μ¬μ©_μΈμ΄νν
μ=True`λ₯Ό μ€μ ν μ μμ΅λλ€(`μΈμ΄νν
μ`κ° μ€μΉλμ§ μμ κ²½μ° μ€μΉνλΌλ μ€λ₯ λ©μμ§κ° νμλ¨): |
|
|
|
```py |
|
from diffusers import DiffusionPipeline |
|
|
|
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_safetensors=True) |
|
``` |
|
|
|
κ·Έλ¬λ λͺ¨λΈ κ°μ€μΉκ° μμ μμμ²λΌ λ°λμ λ³λμ νμ ν΄λμ μ μ₯λλ κ²μ μλλλ€. λͺ¨λ κ°μ€μΉκ° νλμ '.safetensors` νμΌμ μ μ₯λλ κ²½μ°λ μμ΅λλ€. μ΄ κ²½μ° κ°μ€μΉκ° Stable Diffusion κ°μ€μΉμΈ κ²½μ° [`~diffusers.loaders.FromCkptMixin.from_ckpt`] λ©μλλ₯Ό μ¬μ©νμ¬ νμΌμ μ§μ λ‘λν μ μμ΅λλ€: |
|
|
|
```py |
|
from diffusers import StableDiffusionPipeline |
|
|
|
pipeline = StableDiffusionPipeline.from_ckpt( |
|
"https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors" |
|
) |
|
``` |
|
|
|
## μΈμ΄νν
μλ‘ λ³ν |
|
|
|
νλΈμ λͺ¨λ κ°μ€μΉλ₯Ό '.safetensors` νμμΌλ‘ μ¬μ©ν μ μλ κ²μ μλλ©°, '.bin`μΌλ‘ μ μ₯λ κ°μ€μΉκ° μμ μ μμ΅λλ€. μ΄ κ²½μ° [Convert Space](https://huggingface.co/spaces/diffusers/convert)μ μ¬μ©νμ¬ κ°μ€μΉλ₯Ό '.safetensors'λ‘ λ³ννμΈμ. Convert Spaceλ νΌν΄λ κ°μ€μΉλ₯Ό λ€μ΄λ‘λνμ¬ λ³νν ν ν 리νμ€νΈλ₯Ό μ΄μ΄ νλΈμ μλ‘ λ³νλ `.safetensors` νμΌμ μ
λ‘λν©λλ€. μ΄λ κ² νλ©΄ νΌν΄λ νμΌμ μ
μ± μ½λκ° ν¬ν¨λμ΄ μλ κ²½μ°, μμ νμ§ μμ νμΌκ³Ό μμ¬μ€λ¬μ΄ νΌν΄ κ°μ Έμ€κΈ°λ₯Ό νμ§νλ [보μ μ€μΊλ](https://huggingface.co/docs/hub/security-pickle#hubs-security-scanner)κ° μλ νλΈλ‘ μ
λ‘λλ©λλ€. - κ°λ³ μ»΄ν¨ν°κ° μλ. |
|
|
|
κ°μ ` 맀κ°λ³μμ ν 리νμ€νΈμ λν μ°Έμ‘°λ₯Ό μ§μ νμ¬ μλ‘μ΄ '.safetensors` κ°μ€μΉκ° μ μ©λ λͺ¨λΈμ μ¬μ©ν μ μμ΅λλ€(νλΈμ [Check PR](https://huggingface.co/spaces/diffusers/check_pr) 곡κ°μμ ν
μ€νΈν μλ μμ)(μ: `refs/pr/22`): |
|
|
|
```py |
|
from diffusers import DiffusionPipeline |
|
|
|
pipeline = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", revision="refs/pr/22") |
|
``` |
|
|
|
## μΈμ΄νμΌμλ₯Ό μ¬μ©νλ μ΄μ λ 무μμΈκ°μ? |
|
|
|
μΈμ΄νν° μΌμλ₯Ό μ¬μ©νλ λ°μλ μ¬λ¬ κ°μ§ μ΄μ κ° μμ΅λλ€: |
|
|
|
- μΈμ΄νν
μλ₯Ό μ¬μ©νλ κ°μ₯ ν° μ΄μ λ μμ μ
λλ€.μ€ν μμ€ λ° λͺ¨λΈ λ°°ν¬κ° μ¦κ°ν¨μ λ°λΌ λ€μ΄λ‘λν λͺ¨λΈ κ°μ€μΉμ μ
μ± μ½λκ° ν¬ν¨λμ΄ μμ§ μλ€λ κ²μ μ λ’°ν μ μλ κ²μ΄ μ€μν΄μ‘μ΅λλ€.μΈμ΄νμΌμμ νμ¬ ν€λ ν¬κΈ°λ λ§€μ° ν° JSON νμΌμ ꡬ문 λΆμνμ§ λͺ»νκ² ν©λλ€. |
|
- λͺ¨λΈ μ ν κ°μ λ‘λ© μλλ ν
μμ μ λ‘ μΉ΄νΌλ₯Ό μννλ μΈμ΄νν
μλ₯Ό μ¬μ©ν΄μΌ νλ λ λ€λ₯Έ μ΄μ μ
λλ€. κ°μ€μΉλ₯Ό CPU(κΈ°λ³Έκ°)λ‘ λ‘λνλ κ²½μ° 'νΌν΄'μ λΉν΄ νΉν λΉ λ₯΄λ©°, κ°μ€μΉλ₯Ό GPUλ‘ μ§μ λ‘λνλ κ²½μ°μλ λΉ λ₯΄μ§λ μλλΌλ λΉμ·νκ² λΉ λ¦
λλ€. λͺ¨λΈμ΄ μ΄λ―Έ λ‘λλ κ²½μ°μλ§ μ±λ₯ μ°¨μ΄λ₯Ό λλ μ μμΌλ©°, κ°μ€μΉλ₯Ό λ€μ΄λ‘λνκ±°λ λͺ¨λΈμ μ²μ λ‘λνλ κ²½μ°μλ μ±λ₯ μ°¨μ΄λ₯Ό λλΌμ§ λͺ»ν κ²μ
λλ€. |
|
|
|
μ 체 νμ΄νλΌμΈμ λ‘λνλ λ° κ±Έλ¦¬λ μκ°μ
λλ€: |
|
|
|
```py |
|
from diffusers import StableDiffusionPipeline |
|
|
|
pipeline = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1") |
|
"Loaded in safetensors 0:00:02.033658" |
|
"Loaded in PyTorch 0:00:02.663379" |
|
``` |
|
|
|
νμ§λ§ μ€μ λ‘ 500MBμ λͺ¨λΈ κ°μ€μΉλ₯Ό λ‘λνλ λ° κ±Έλ¦¬λ μκ°μ μΌλ§ λμ§ μμ΅λλ€: |
|
|
|
```bash |
|
safetensors: 3.4873ms |
|
PyTorch: 172.7537ms |
|
``` |
|
|
|
μ§μ° λ‘λ©μ μΈμ΄νν
μμμλ μ§μλλ©°, μ΄λ λΆμ° μ€μ μμ μΌλΆ ν
μλ§ λ‘λνλ λ° μ μ©ν©λλ€. μ΄ νμμ μ¬μ©νλ©΄ [BLOOM](https://huggingface.co/bigscience/bloom) λͺ¨λΈμ μΌλ° PyTorch κ°μ€μΉλ₯Ό μ¬μ©νμ¬ 10λΆμ΄ 걸리λ κ²μ 8κ°μ GPUμμ 45μ΄ λ§μ λ‘λν μ μμ΅λλ€. |
|
|