mirror of
https://github.com/huggingface/diffusers.git
synced 2026-01-27 17:22:53 +03:00
* Update philosophy.md Some contributions were not reflected previously, so I am resubmitting them. * Update docs/source/ko/conceptual/philosophy.md Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com> * Update docs/source/ko/conceptual/philosophy.md Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com> --------- Co-authored-by: Steven Liu <59462357+stevhliu@users.noreply.github.com>
This commit is contained in:
@@ -10,30 +10,30 @@ an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express o
|
||||
specific language governing permissions and limitations under the License.
|
||||
-->
|
||||
|
||||
# ์ฒ ํ
|
||||
# ์ฒ ํ [[philosophy]]
|
||||
|
||||
๐งจ Diffusers๋ ๋ค์ํ ๋ชจ๋ฌ๋ฆฌํฐ์์ **์ต์ ์** ์ฌ์ ํ๋ จ๋ diffusion ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค.
|
||||
๊ทธ ๋ชฉ์ ์ ์ถ๋ก ๊ณผ ํ๋ จ์ ์ํ **๋ชจ๋์ ํด๋ฐ์ค**๋ก ์ฌ์ฉ๋๋ ๊ฒ์
๋๋ค.
|
||||
|
||||
์ฐ๋ฆฌ๋ ์ค๋ ์๊ฐ์ ๊ฒฌ๋ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ , ๋ฐ๋ผ์ API ์ค๊ณ๋ฅผ ๋งค์ฐ ์ค์์ํฉ๋๋ค.
|
||||
์ ํฌ๋ ์๊ฐ์ด ์ง๋๋ ๋ณ์น ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ธฐ์ API ์ค๊ณ๋ฅผ ๋งค์ฐ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค.
|
||||
|
||||
๊ฐ๋จํ ๋งํด์, Diffusers๋ PyTorch์ ์์ฐ์ค๋ฌ์ด ํ์ฅ์ด ๋๋๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ค๊ณ ์ ํ์ [PyTorch์ ์ค๊ณ ์์น](https://pytorch.org/docs/stable/community/design.html#pytorch-design-philosophy)์ ๊ธฐ๋ฐํฉ๋๋ค. ์ด์ ๊ฐ์ฅ ์ค์ํ ๊ฒ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
|
||||
๊ฐ๋จํ ๋งํด์, Diffusers๋ PyTorch๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ค๊ณ ์ ํ์ [PyTorch์ ์ค๊ณ ์์น](https://pytorch.org/docs/stable/community/design.html#pytorch-design-philosophy)์ ๊ธฐ๋ฐํฉ๋๋ค. ์ด์ ๊ฐ์ฅ ์ค์ํ ๊ฒ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
|
||||
|
||||
## ์ฑ๋ฅ๋ณด๋ค๋ ์ฌ์ฉ์ฑ์
|
||||
## ์ฑ๋ฅ๋ณด๋ค๋ ์ฌ์ฉ์ฑ์ [[usability-over-performance]]
|
||||
|
||||
- Diffusers๋ ๋ง์ ๋ด์ฅ ์ฑ๋ฅ ํฅ์ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์์ง๋ง (์์ธํ ๋ด์ฉ์ [๋ฉ๋ชจ๋ฆฌ์ ์๋](https://huggingface.co/docs/diffusers/optimization/fp16) ์ฐธ์กฐ), ๋ชจ๋ธ์ ํญ์ ๊ฐ์ฅ ๋์ ์ ๋ฐ๋์ ์ต์ํ์ ์ต์ ํ๋ก ๋ก๋๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ธ diffusion ํ์ดํ๋ผ์ธ์ ๋ฐ๋ก ์ ์ํ์ง ์๋๋ค๋ฉด CPU์์ float32 ์ ๋ฐ๋๋ก ์ธ์คํด์คํ๋ฉ๋๋ค. ์ด๋ ๋ค์ํ ํ๋ซํผ๊ณผ ๊ฐ์๊ธฐ์์์ ์ฌ์ฉ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ณต์กํ ์ค์น๊ฐ ํ์ํ์ง ์์์ ์๋ฏธํฉ๋๋ค.
|
||||
- Diffusers๋ ๋ค์ํ ์ฑ๋ฅ ํฅ์ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ง๋ง (์์ธํ ๋ด์ฉ์ [๋ฉ๋ชจ๋ฆฌ์ ์๋](https://huggingface.co/docs/diffusers/optimization/fp16) ์ฐธ์กฐ), ๋ชจ๋ธ์ ํญ์ ๊ฐ์ฅ ๋์ ์ ๋ฐ๋์ ์ต์ํ์ ์ต์ ํ๋ก ๋ก๋๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ๋ณ๋๋ก ์ ์ํ์ง ์๋ ํ ๊ธฐ๋ณธ์ ์ผ๋ก diffusion ํ์ดํ๋ผ์ธ์ ํญ์ float32 ์ ๋ฐ๋๋ก CPU์ ์ธ์คํด์คํ๋ฉ๋๋ค. ์ด๋ ๋ค์ํ ํ๋ซํผ๊ณผ ๊ฐ์๊ธฐ์์์ ์ฌ์ฉ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ณต์กํ ์ค์น๊ฐ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
|
||||
- Diffusers๋ **๊ฐ๋ฒผ์ด** ํจํค์ง๋ฅผ ์งํฅํ๊ธฐ ๋๋ฌธ์ ํ์ ์ข
์์ฑ์ ๊ฑฐ์ ์์ง๋ง ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ ๋ง์ ์ ํ์ ์ข
์์ฑ์ด ์์ต๋๋ค (`accelerate`, `safetensors`, `onnx` ๋ฑ). ์ ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ํ ๊ฐ๋ณ๊ฒ ์ ์งํ์ฌ ๋ค๋ฅธ ํจํค์ง์ ๋ํ ์ข
์์ฑ ๊ฑฑ์ ์ด ์๋๋ก ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
|
||||
- Diffusers๋ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์ ํธํฉ๋๋ค. ์ด๋ ๋๋ค ํจ์๋ ๊ณ ๊ธ PyTorch ์ฐ์ฐ์์ ๊ฐ์ ์์ถ๋ ์ฝ๋ ๊ตฌ๋ฌธ์ ์์ฃผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
|
||||
|
||||
## ์ฌ์๋ณด๋ค๋ ๊ฐ๋จํจ์
|
||||
## ์ฌ์๋ณด๋ค๋ ๊ฐ๋จํจ์ [[simple-over-easy]]
|
||||
|
||||
PyTorch์์๋ **๋ช
์์ ์ธ ๊ฒ์ด ์์์ ์ธ ๊ฒ๋ณด๋ค ๋ซ๋ค**์ **๋จ์ํ ๊ฒ์ด ๋ณต์กํ ๊ฒ๋ณด๋ค ๋ซ๋ค**๋ผ๊ณ ๋งํฉ๋๋ค. ์ด ์ค๊ณ ์ฒ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ๋ฌ ๋ถ๋ถ์ ๋ฐ์๋์ด ์์ต๋๋ค:
|
||||
- [`DiffusionPipeline.to`](https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.to)์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ฅ์น ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก PyTorch์ API๋ฅผ ๋ฐ๋ฆ
๋๋ค.
|
||||
- [`DiffusionPipeline.to`](https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.to)์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ฅ์น ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก PyTorch์ API๋ฅผ ๋ฐ๋ฆ
๋๋ค.
|
||||
- ์๋ชป๋ ์
๋ ฅ์ ์กฐ์ฉํ ์์ ํ๋ ๋์ ๊ฐ๊ฒฐํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ด ์ฐ์ ์
๋๋ค. Diffusers๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ํ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ๋ณด๋ค ์ฌ์ฉ์๋ฅผ ๊ฐ๋ฅด์น๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
|
||||
- ๋ณต์กํ ๋ชจ๋ธ๊ณผ ์ค์ผ์ค๋ฌ ๋ก์ง์ด ๋ด๋ถ์์ ๋ง๋ฒ์ฒ๋ผ ์ฒ๋ฆฌํ๋ ๋์ ๋
ธ์ถ๋ฉ๋๋ค. ์ค์ผ์ค๋ฌ/์ํ๋ฌ๋ ์๋ก์๊ฒ ์ต์ํ์ ์ข
์์ฑ์ ๊ฐ์ง๊ณ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ก์จ ์ฌ์ฉ์๋ ์ธ๋กค๋ ๋
ธ์ด์ฆ ์ ๊ฑฐ ๋ฃจํ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ถ๋ฆฌ๋ ๋๋ฒ๊น
์ ๋ ์ฝ๊ฒํ๊ณ ๋
ธ์ด์ฆ ์ ๊ฑฐ ๊ณผ์ ์ ์กฐ์ ํ๊ฑฐ๋ diffusers ๋ชจ๋ธ์ด๋ ์ค์ผ์ค๋ฌ๋ฅผ ๊ต์ฒดํ๋ ๋ฐ ์ฌ์ฉ์์๊ฒ ๋ ๋ง์ ์ ์ด๊ถ์ ์ ๊ณตํฉ๋๋ค.
|
||||
- diffusers ํ์ดํ๋ผ์ธ์ ๋ฐ๋ก ํ๋ จ๋ ๊ตฌ์ฑ ์์์ธ text encoder, unet ๋ฐ variational autoencoder๋ ๊ฐ๊ฐ ์์ฒด ๋ชจ๋ธ ํด๋์ค๋ฅผ ๊ฐ์ต๋๋ค. ์ด๋ก์จ ์ฌ์ฉ์๋ ์๋ก ๋ค๋ฅธ ๋ชจ๋ธ์ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํธ ์์ฉ์ ์ฒ๋ฆฌํด์ผ ํ๋ฉฐ, ์ง๋ ฌํ ํ์์ ๋ชจ๋ธ ๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฅธ ํ์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋๋ฒ๊น
๊ณผ ์ปค์คํฐ๋ง์ด์ง์ ๋ ์ฝ๊ฒํฉ๋๋ค. DreamBooth๋ Textual Inversion ํ๋ จ์ Diffusers์ 'diffusion ํ์ดํ๋ผ์ธ์ ๋จ์ผ ๊ตฌ์ฑ ์์๋ค์ ๋ถ๋ฆฌํ ์ ์๋ ๋ฅ๋ ฅ' ๋๋ถ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
|
||||
|
||||
## ์ถ์ํ๋ณด๋ค๋ ์์ ๊ฐ๋ฅํ๊ณ ๊ธฐ์ฌํ๊ธฐ ์ฌ์์
|
||||
## ์ถ์ํ๋ณด๋ค๋ ์์ ๊ฐ๋ฅํ๊ณ ๊ธฐ์ฌํ๊ธฐ ์ฌ์์ [[tweakable-contributor-friendly-over-abstraction]]
|
||||
|
||||
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ถ๋ถ์ ๋ํด Diffusers๋ [Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ](https://github.com/huggingface/transformers)์ ์ค์ํ ์ค๊ณ ์์น์ ์ฑํํฉ๋๋ค, ๋ฐ๋ก ์ฑ๊ธํ ์ถ์ํ๋ณด๋ค๋ copy-pasted ์ฝ๋๋ฅผ ์ ํธํ๋ค๋ ๊ฒ์
๋๋ค. ์ด ์ค๊ณ ์์น์ [Don't repeat yourself (DRY)](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)์ ๊ฐ์ ์ธ๊ธฐ ์๋ ์ค๊ณ ์์น๊ณผ๋ ๋์กฐ์ ์ผ๋ก ๋งค์ฐ ์๊ฒฌ์ด ๋ถ๋ถํ๋ฐ์.
|
||||
๊ฐ๋จํ ๋งํด์, Transformers๊ฐ ๋ชจ๋ธ๋ง ํ์ผ์ ๋ํด ์ํํ๋ ๊ฒ์ฒ๋ผ, Diffusers๋ ๋งค์ฐ ๋ฎ์ ์์ค์ ์ถ์ํ์ ๋งค์ฐ ๋
๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์ ์งํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ํจ์, ๊ธด ์ฝ๋ ๋ธ๋ก, ์ฌ์ง์ด ํด๋์ค๋ ์ฌ๋ฌ ํ์ผ์ ๋ณต์ฌํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ฒ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋ง๋๋ ๋์, ์ํฌ๋ฅธ ์ค๊ณ ์ ํ์ผ๋ก ๋ณด์ผ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฌํ ์ค๊ณ๋ ๋งค์ฐ ์ฑ๊ณต์ ์ด๋ฉฐ, ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฐ์ ์คํ ์์ค ๊ธฐ๊ณ ํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
|
||||
@@ -48,11 +48,11 @@ Diffusers์์๋ ์ด๋ฌํ ์ฒ ํ์ ํ์ดํ๋ผ์ธ๊ณผ ์ค์ผ์ค๋ฌ์ ๋ชจ๋
|
||||
์ข์์, ์ด์ ๐งจ Diffusers๊ฐ ์ค๊ณ๋ ๋ฐฉ์์ ๋๋ต์ ์ผ๋ก ์ดํดํ์ ๊ฒ์
๋๋ค ๐ค.
|
||||
์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ค๊ณ ์์น์ ์ผ๊ด๋๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด์ ์ ์ฉํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ฒ ํ์ ๋ํ ์ผ๋ถ ์์ธ ์ฌํญ์ด๋ ๋ถํํ ์ค๊ณ ์ ํ์ด ์์ ์ ์์ต๋๋ค. ๋์์ธ์ ๋ํ ํผ๋๋ฐฑ์ด ์๋ค๋ฉด [GitHub์์ ์ง์ ](https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=) ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
|
||||
|
||||
## ๋์์ธ ์ฒ ํ ์์ธํ ์์๋ณด๊ธฐ
|
||||
## ๋์์ธ ์ฒ ํ ์์ธํ ์์๋ณด๊ธฐ [[design-philosophy-in-details]]
|
||||
|
||||
์ด์ ๋์์ธ ์ฒ ํ์ ์ธ๋ถ ์ฌํญ์ ์ข ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Diffusers๋ ์ฃผ๋ก ์ธ ๊ฐ์ง ์ฃผ์ ํด๋์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค: [ํ์ดํ๋ผ์ธ](https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines), [๋ชจ๋ธ](https://github.com/huggingface/diffusers/tree/main/src/diffusers/models), ๊ทธ๋ฆฌ๊ณ [์ค์ผ์ค๋ฌ](https://github.com/huggingface/diffusers/tree/main/src/diffusers/schedulers). ๊ฐ ํด๋์ค์ ๋ํ ๋ ์์ธํ ์ค๊ณ ๊ฒฐ์ ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
|
||||
|
||||
### ํ์ดํ๋ผ์ธ
|
||||
### ํ์ดํ๋ผ์ธ [[pipelines]]
|
||||
|
||||
ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๊ธฐ ์ฝ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ (๋ฐ๋ผ์ [*์ฌ์๋ณด๋ค๋ ๊ฐ๋จํจ์*](#์ฌ์๋ณด๋ค๋-๊ฐ๋จํจ์)์ 100% ๋ฐ๋ฅด์ง๋ ์์), feature-completeํ์ง ์์ผ๋ฉฐ, ์ถ๋ก ์ ์ํ [๋ชจ๋ธ](#๋ชจ๋ธ)๊ณผ [์ค์ผ์ค๋ฌ](#์ค์ผ์ค๋ฌ)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค.
|
||||
|
||||
@@ -65,11 +65,11 @@ Diffusers์์๋ ์ด๋ฌํ ์ฒ ํ์ ํ์ดํ๋ผ์ธ๊ณผ ์ค์ผ์ค๋ฌ์ ๋ชจ๋
|
||||
- ํ์ดํ๋ผ์ธ์ ๋งค์ฐ ๊ฐ๋
์ฑ์ด ์ข๊ณ , ์ดํดํ๊ธฐ ์ฝ๊ณ , ์ฝ๊ฒ ์กฐ์ ํ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ํ์ดํ๋ผ์ธ์ ์๋ก ์ํธ์์ฉํ๊ณ , ์์ ์์ค API์ ์ฝ๊ฒ ํตํฉํ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ํ์ดํ๋ผ์ธ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ feature-completeํ์ง ์๊ฒ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. future-completeํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ํ๋ค๋ฉด [InvokeAI](https://github.com/invoke-ai/InvokeAI), [Diffuzers](https://github.com/abhishekkrthakur/diffuzers), [lama-cleaner](https://github.com/Sanster/lama-cleaner)๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
|
||||
- ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ค๋ก์ง `__call__` ๋ฉ์๋๋ฅผ ํตํด ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. `__call__` ์ธ์์ ์ด๋ฆ์ ๋ชจ๋ ํ์ดํ๋ผ์ธ์์ ๊ณต์ ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ค๋ก์ง `__call__` ๋ฉ์๋๋ฅผ ํตํด ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. `__call__` ์ธ์์ ์ด๋ฆ์ ๋ชจ๋ ํ์ดํ๋ผ์ธ์์ ๊ณต์ ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ํ์ดํ๋ผ์ธ์ ํด๊ฒฐํ๊ณ ์ ํ๋ ์์
์ ์ด๋ฆ์ผ๋ก ์ง์ ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์๋ก์ด diffusion ํ์ดํ๋ผ์ธ์ ์๋ก์ด ํ์ดํ๋ผ์ธ ํด๋/ํ์ผ์ ๊ตฌํ๋์ด์ผ ํฉ๋๋ค.
|
||||
|
||||
### ๋ชจ๋ธ
|
||||
### ๋ชจ๋ธ [[models]]
|
||||
|
||||
๋ชจ๋ธ์ [PyTorch์ Module ํด๋์ค](https://pytorch.org/docs/stable/generated/torch.nn.Module.html)์ ์์ฐ์ค๋ฌ์ด ํ์ฅ์ด ๋๋๋ก, ๊ตฌ์ฑ ๊ฐ๋ฅํ ํด๋ฐ์ค๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธ์ **๋จ์ผ ํ์ผ ์ ์ฑ
**์ ์ผ๋ถ๋ง ๋ฐ๋ฆ
๋๋ค.
|
||||
|
||||
@@ -85,7 +85,7 @@ Diffusers์์๋ ์ด๋ฌํ ์ฒ ํ์ ํ์ดํ๋ผ์ธ๊ณผ ์ค์ผ์ค๋ฌ์ ๋ชจ๋
|
||||
- ๋ชจ๋ธ์ ๋ฏธ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ณต๊ฐ ํจ์ ์ธ์๋ค๊ณผ ๊ตฌ์ฑ ์ธ์๋ค์ ์ ํํ๊ณ ,๋ฏธ๋์ ๋ณ๊ฒฝ ์ฌํญ์ "์์"ํ๋ ๊ฒ์ ํตํด ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถ๋ฆฌ์ธ `is_..._type` ์ธ์๋ณด๋ค๋ ์๋ก์ด ๋ฏธ๋ ์ ํ์ ์ฝ๊ฒ ํ์ฅํ ์ ์๋ ๋ฌธ์์ด "...type" ์ธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ ์ข์ต๋๋ค. ์๋ก์ด ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๊ฐ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ๊ธฐ์กด ์ํคํ
์ฒ์ ์ต์ํ์ ๋ณ๊ฒฝ๋ง์ ๊ฐํด์ผ ํฉ๋๋ค.
|
||||
- ๋ชจ๋ธ ๋์์ธ์ ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ๊ฐ๊ฒฐ์ฑ์ ์ ์งํ๋ ๊ฒ๊ณผ ๋ง์ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ง์ํ๋ ๊ฒ ์ฌ์ด์ ์ด๋ ค์ด ๊ท ํ ์กฐ์ ์
๋๋ค. ๋ชจ๋ธ๋ง ์ฝ๋์ ๋๋ถ๋ถ์ ์๋ก์ด ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ํด ํด๋์ค๋ฅผ ์์ ํ๋ ๊ฒ์ด ์ข์ง๋ง, [UNet ๋ธ๋ก](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unet_2d_blocks.py) ๋ฐ [Attention ํ๋ก์ธ์](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py)์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ฅ๊ธฐ์ ์ผ๋ก ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์ ์งํ๊ธฐ ์ํด ์๋ก์ด ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ์์ธ๋ ์์ต๋๋ค.
|
||||
|
||||
### ์ค์ผ์ค๋ฌ
|
||||
### ์ค์ผ์ค๋ฌ [[schedulers]]
|
||||
|
||||
์ค์ผ์ค๋ฌ๋ ์ถ๋ก ์ ์ํ ๋
ธ์ด์ฆ ์ ๊ฑฐ ๊ณผ์ ์ ์๋ดํ๊ณ ํ๋ จ์ ์ํ ๋
ธ์ด์ฆ ์ค์ผ์ค์ ์ ์ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ค์ผ์ค๋ฌ๋ ๊ฐ๋ณ ํด๋์ค๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ, ๋ก๋ ๊ฐ๋ฅํ ๊ตฌ์ฑ ํ์ผ๊ณผ **๋จ์ผ ํ์ผ ์ ์ฑ
**์ ์๊ฒฉํ ๋ฐ๋ฆ
๋๋ค.
|
||||
|
||||
@@ -95,7 +95,7 @@ Diffusers์์๋ ์ด๋ฌํ ์ฒ ํ์ ํ์ดํ๋ผ์ธ๊ณผ ์ค์ผ์ค๋ฌ์ ๋ชจ๋
|
||||
- ํ๋์ ์ค์ผ์ค๋ฌ Python ํ์ผ์ ํ๋์ ์ค์ผ์ค๋ฌ ์๊ณ ๋ฆฌ์ฆ(๋
ผ๋ฌธ์์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์)์ ํด๋นํฉ๋๋ค.
|
||||
- ์ค์ผ์ค๋ฌ๊ฐ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ณต์ ํ๋ ๊ฒฝ์ฐ, `# Copied from` ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
||||
- ๋ชจ๋ ์ค์ผ์ค๋ฌ๋ `SchedulerMixin`๊ณผ `ConfigMixin`์ ์์ํฉ๋๋ค.
|
||||
- [`ConfigMixin.from_config`](https://huggingface.co/docs/diffusers/main/en/api/configuration#diffusers.ConfigMixin.from_config) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ผ์ค๋ฌ๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ [์ฌ๊ธฐ](../using-diffusers/schedulers.md)์์ ์ค๋ช
ํฉ๋๋ค.
|
||||
- [`ConfigMixin.from_config`](https://huggingface.co/docs/diffusers/main/en/api/configuration#diffusers.ConfigMixin.from_config) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ผ์ค๋ฌ๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ [์ฌ๊ธฐ](../using-diffusers/schedulers.md)์์ ์ค๋ช
ํฉ๋๋ค.
|
||||
- ๋ชจ๋ ์ค์ผ์ค๋ฌ๋ `set_num_inference_steps`์ `step` ํจ์๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค. `set_num_inference_steps(...)`๋ ๊ฐ ๋
ธ์ด์ฆ ์ ๊ฑฐ ๊ณผ์ (์ฆ, `step(...)`์ด ํธ์ถ๋๊ธฐ ์ ) ์ด์ ์ ํธ์ถ๋์ด์ผ ํฉ๋๋ค.
|
||||
- ๊ฐ ์ค์ผ์ค๋ฌ๋ ๋ชจ๋ธ์ด ํธ์ถ๋ ํ์์คํ
์ ๋ฐฐ์ด์ธ `timesteps` ์์ฑ์ ํตํด ๋ฃจํ๋ฅผ ๋ ์ ์๋ ํ์์คํ
์ ๋
ธ์ถํฉ๋๋ค.
|
||||
- `step(...)` ํจ์๋ ์์ธก๋ ๋ชจ๋ธ ์ถ๋ ฅ๊ณผ "ํ์ฌ" ์ํ(x_t)์ ์
๋ ฅ์ผ๋ก ๋ฐ๊ณ , "์ด์ " ์ฝ๊ฐ ๋ ๋
ธ์ด์ฆ๊ฐ ์ ๊ฑฐ๋ ์ํ(x_t-1)์ ๋ฐํํฉ๋๋ค.
|
||||
|
||||
Reference in New Issue
Block a user