| # μΈμ΄νν μ λ‘λ | |
| [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μ΄ λ§μ λ‘λν μ μμ΅λλ€. | |