Buckets:
| import"../chunks/DsnmJJEf.js";import{i as be,h as Je,C as Me,H as l,a as s,b as Te,E as ye,s as Ie}from"../chunks/CxueWNWA.js";import{p as Ue,o as je,s as e,f as pe,a as i,b as Ze,d as o,c as a,r as t,n as Ge}from"../chunks/CrV5djYC.js";import{H as ce}from"../chunks/CozusF9x.js";const _e='{"title":"Diffusers์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ ๐งจ","local":"how-to-contribute-to-diffusers-","sections":[{"title":"๊ฐ์","local":"overview","sections":[{"title":"1. Diffusers ํ ๋ก ํฌ๋ผ์ด๋ Diffusers Discord์์ ์ง๋ฌธํ๊ณ ๋ต๋ณํ๊ธฐ","local":"1-asking-and-answering-questions-on-the-diffusers-discussion-forum-or-on-the-diffusers-discord","sections":[],"depth":3},{"title":"2. GitHub ์ด์ ํญ์์ ์๋ก์ด ์ด์ ์ด๊ธฐ","local":"2-opening-new-issues-on-the-github-issues-tab","sections":[{"title":"2.1 ์ฌํ ๊ฐ๋ฅํ ์ต์ํ์ ๋ฒ๊ทธ ๋ฆฌํฌํธ","local":"21-reproducible-minimal-bug-reports","sections":[],"depth":4},{"title":"2.2. ๊ธฐ๋ฅ ์์ฒญ","local":"22-feature-requests","sections":[],"depth":4},{"title":"2.3 ํผ๋๋ฐฑ","local":"23-feedback","sections":[],"depth":4},{"title":"2.4 ๊ธฐ์ ์ ์ธ ์ง๋ฌธ","local":"24-technical-questions","sections":[],"depth":4},{"title":"2.5 ์๋ก์ด ๋ชจ๋ธ, ์ค์ผ์ค๋ฌ ๋๋ ํ์ดํ๋ผ์ธ ์ถ๊ฐ ์ ์","local":"25-proposal-to-add-a-new-model-scheduler-or-pipeline","sections":[],"depth":4}],"depth":3},{"title":"3. GitHub ์ด์ ํญ์์ ๋ฌธ์ ์ ๋ํ ๋ต๋ณํ๊ธฐ","local":"3-answering-issues-on-the-github-issues-tab","sections":[],"depth":3},{"title":"4. โGood first issueโ ๊ณ ์น๊ธฐ","local":"4-fixing-a-good-first-issue","sections":[],"depth":3},{"title":"5. ๋ฌธ์์ ๊ธฐ์ฌํ๊ธฐ","local":"5-contribute-to-the-documentation","sections":[],"depth":3},{"title":"6. ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ๊ธฐ์ฌํ๊ธฐ","local":"6-contribute-a-community-pipeline","sections":[],"depth":3},{"title":"7. ํ๋ จ ์์ ์ ๊ธฐ์ฌํ๊ธฐ","local":"7-contribute-to-training-examples","sections":[],"depth":3},{"title":"8. โGood second issueโ ๊ณ ์น๊ธฐ","local":"8-fixing-a-good-second-issue","sections":[],"depth":3},{"title":"9. ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ, ์ค์ผ์ค๋ฌ ์ถ๊ฐํ๊ธฐ","local":"9-adding-pipelines-models-schedulers","sections":[{"title":"Copied from mechanism","local":"copied-from-mechanism","sections":[],"depth":4}],"depth":3}],"depth":2},{"title":"์ข์ ์ด์ ์์ฑ ๋ฐฉ๋ฒ","local":"how-to-write-a-good-issue","sections":[],"depth":2},{"title":"์ข์ PR ์์ฑ ๋ฐฉ๋ฒ","local":"how-to-write-a-good-pr","sections":[],"depth":2},{"title":"PR์ ์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ","local":"how-to-open-a-pr","sections":[{"title":"ํ ์คํธ","local":"tests","sections":[],"depth":3},{"title":"upstream(HuggingFace) main๊ณผ forked main ๋๊ธฐํํ๊ธฐ","local":"syncing-forked-main-with-upstream-huggingface-main","sections":[],"depth":3},{"title":"์คํ์ผ ๊ฐ์ด๋","local":"style-guide","sections":[],"depth":3}],"depth":2}],"depth":1}';var Re=a('<meta name="hf:doc:metadata"/>'),ve=a('<p>GitHub ํ์ดํ๋ผ์ธ์ ๊ณต์ ํ๋ ค๋ฉด Diffusers <a href="https://github.com/huggingface/diffusers" rel="nofollow">์ ์ฅ์</a>์์ Pull Request๋ฅผ ์ด๊ณ one_step_unet.py ํ์ผ์ <a href="https://github.com/huggingface/diffusers/tree/main/examples/community" rel="nofollow">examples/community</a> ํ์ ํด๋์ ์ถ๊ฐํ์ธ์.</p>'),Ve=a("<p>Hub ํ์ดํ๋ผ์ธ์ ๊ณต์ ํ๋ ค๋ฉด, ํ๋ธ์ ๋ชจ๋ธ ์ ์ฅ์๋ฅผ ์์ฑํ๊ณ one_step_unet.py ํ์ผ์ ์ ๋ก๋ํ์ธ์.</p>"),We=a("<!> <!>",1),Be=a(`<p></p> <!> <!> <p>์คํ ์์ค ์ปค๋ฎค๋ํฐ์์์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ๋๊ตฌ๋ ์ฐธ์ฌํ ์ ์์ผ๋ฉฐ, ์ฝ๋๋ฟ๋ง ์๋๋ผ ์ง๋ฌธ์ ๋ต๋ณํ๊ฑฐ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ํ๋ ๋ฑ ๋ชจ๋ ์ ํ์ ์ฐธ์ฌ๊ฐ ๊ฐ์น ์๊ณ ๊ฐ์ฌํ ์ฌ๊ฒจ์ง๋๋ค. ์ง๋ฌธ์ ๋ต๋ณํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋์์ฃผ๋ฉฐ ์ํตํ๊ณ ๋ฌธ์๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋ชจ๋ ์ปค๋ฎค๋ํฐ์๊ฒ ํฐ ๋์์ด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ด์ฌ์ด ์๋ค๋ฉด ๋๋ ค์ํ์ง ๋ง๊ณ ์ฐธ์ฌํด๋ณด์ธ์!</p> <p>๋๊ตฌ๋ ์ฐ๋ฆฌ์ ๊ณต๊ฐ Discord ์ฑ๋์์ ๐ ์ธ์ฌํ๋ฉฐ ์์ํ ์ ์๋๋ก ์ฅ๋ คํฉ๋๋ค. ์ฐ๋ฆฌ๋ diffusion ๋ชจ๋ธ์ ์ต์ ๋ํฅ์ ๋ ผ์ํ๊ณ ์ง๋ฌธ์ ํ๋ฉฐ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์๋ํ๊ณ ๊ธฐ์ฌ์ ๋ํด ์๋ก ๋์์ฃผ๊ฑฐ๋ ๊ทธ๋ฅ ์ด์ธ๋ฆฌ๊ธฐ ์ํด ๋ชจ์ด๋ ๊ณณ์ ๋๋คโ. <a href="https://Discord.gg/G7tWnz98XR"><img alt="Join us on Discord" src="https://img.shields.io/discord/823813159592001537?color=5865F2&logo=discord&logoColor=white"/></a></p> <p>์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๊ธฐ์ฌํ๋ ค๋ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ๊ฐ๋ฐฉ์ ์ด๊ณ ํ์ํ๋ฉฐ ์น๊ทผํ ์ปค๋ฎค๋ํฐ์ ์ผ๋ถ๊ฐ ๋๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ์ <a href="https://github.com/huggingface/diffusers/blob/main/CODE_OF_CONDUCT.md" rel="nofollow">ํ๋ ๊ฐ๋ น</a>์ ์ฝ๊ณ ์ํธ ์์ฉ ์ค์ ์ด๋ฅผ ์กด์คํ๋๋ก ์ฃผ์ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ๋ํ ํ๋ก์ ํธ๋ฅผ ์๋ดํ๋ <a href="https://huggingface.co/docs/diffusers/conceptual/ethical_guidelines" rel="nofollow">์ค๋ฆฌ ์ง์นจ</a>์ ์ต์ํด์ง๊ณ ๋์ผํ ํฌ๋ช ์ฑ๊ณผ ์ฑ ์์ฑ์ ์์น์ ์ค์ํด์ฃผ์๊ธฐ๋ฅผ ๋ถํ๋๋ฆฝ๋๋ค.</p> <p>์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ๋ก๋ถํฐ์ ํผ๋๋ฐฑ์ ๋งค์ฐ ์ค์ํ๊ฒ ์๊ฐํ๋ฏ๋ก, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ๊ฐ์น ์๋ ํผ๋๋ฐฑ์ด ์๋ค๊ณ ์๊ฐ๋๋ฉด ๋ง์ค์ด์ง ๋ง๊ณ ์๊ฒฌ์ ์ ์ํด์ฃผ์ธ์ - ๋ชจ๋ ๋ฉ์์ง, ๋๊ธ, ์ด์, Pull Request(PR)๋ ์ฝํ๊ณ ๊ณ ๋ ค๋ฉ๋๋ค.</p> <!> <p>์ด์์ ์๋ ์ง๋ฌธ์ ๋ต๋ณํ๋ ๊ฒ์์๋ถํฐ ์ฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ก์ด diffusion ๋ชจ๋ธ์ ์ถ๊ฐํ๋ ๊ฒ๊น์ง ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ธฐ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค.</p> <p>์ด์ด์ง๋ ๋ถ๋ถ์์ ์ฐ๋ฆฌ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๊ธฐ์ฌ์ ๋ํ ๊ฐ์๋ฅผ ๋์ด๋์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค. ๋ชจ๋ ๊ธฐ์ฌ๋ ์ปค๋ฎค๋ํฐ์๊ฒ ๊ฐ์น๊ฐ ์์ต๋๋ค.</p> <ol><li><a href="https://discuss.huggingface.co/c/discussion-related-to-httpsgithubcomhuggingfacediffusers" rel="nofollow">Diffusers ํ ๋ก ํฌ๋ผ</a>์ด๋ <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>์์ ์ง๋ฌธ์ ๋๋ตํ๊ฑฐ๋ ์ง๋ฌธ์ ํ ์ ์์ต๋๋ค.</li> <li><a href="https://github.com/huggingface/diffusers/issues/new/choose" rel="nofollow">GitHub Issues ํญ</a>์์ ์๋ก์ด ์ด์๋ฅผ ์ด ์ ์์ต๋๋ค.</li> <li><a href="https://github.com/huggingface/diffusers/issues" rel="nofollow">GitHub Issues ํญ</a>์์ ์ด์์ ๋๋ตํ ์ ์์ต๋๋ค.</li> <li>โGood first issueโ ๋ผ๋ฒจ์ด ์ง์ ๋ ๊ฐ๋จํ ์ด์๋ฅผ ์์ ํ ์ ์์ต๋๋ค. <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">์ฌ๊ธฐ</a>๋ฅผ ์ฐธ์กฐํ์ธ์.</li> <li><a href="https://github.com/huggingface/diffusers/tree/main/docs/source" rel="nofollow">๋ฌธ์</a>์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.</li> <li><a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3Acommunity-examples" rel="nofollow">Community Pipeline</a>์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.</li> <li><a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">์์ </a>์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.</li> <li>โGood second issueโ ๋ผ๋ฒจ์ด ์ง์ ๋ ์ด๋ ค์ด ์ด์๋ฅผ ์์ ํ ์ ์์ต๋๋ค. <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+second+issue%22" rel="nofollow">์ฌ๊ธฐ</a>๋ฅผ ์ฐธ์กฐํ์ธ์.</li> <li>์๋ก์ด ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ ๋๋ ์ค์ผ์ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+pipeline%2Fmodel%22" rel="nofollow">โ์๋ก์ด ํ์ดํ๋ผ์ธ/๋ชจ๋ธโ</a> ๋ฐ <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+scheduler%22" rel="nofollow">โ์๋ก์ด ์ค์ผ์ค๋ฌโ</a> ์ด์๋ฅผ ์ฐธ์กฐํ์ธ์. ์ด ๊ธฐ์ฌ์ ๋ํด์๋ <a href="https://huggingface.co/docs/diffusers/main/ko/conceptual/philosophy" rel="nofollow">๋์์ธ ์ฒ ํ</a>์ ํ์ธํด์ฃผ์ธ์.</li></ol> <p>์์ ๋งํ ๋๋ก, <strong>๋ชจ๋ ๊ธฐ์ฌ๋ ์ปค๋ฎค๋ํฐ์๊ฒ ๊ฐ์น๊ฐ ์์ต๋๋ค</strong>. ์ด์ด์ง๋ ๋ถ๋ถ์์ ๊ฐ ๊ธฐ์ฌ์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.</p> <p>4๋ถํฐ 9๊น์ง์ ๋ชจ๋ ๊ธฐ์ฌ์๋ Pull Request์ ์ด์ด์ผ ํฉ๋๋ค. <a href="#how-to-open-a-pr">Pull Request ์ด๊ธฐ</a>์์ ์์ธํ ์ค๋ช ๋์ด ์์ต๋๋ค.</p> <!> <p>Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ด๋ จ๋ ๋ชจ๋ ์ง๋ฌธ์ด๋ ์๊ฒฌ์ <a href="https://discuss.huggingface.co/c/discussion-related-to-httpsgithubcomhuggingfacediffusers/63" rel="nofollow">ํ ๋ก ํฌ๋ผ</a>์ด๋ <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>์์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ง๋ฌธ๊ณผ ์๊ฒฌ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ํฌํจ๋ฉ๋๋ค(ํ์ง๋ง ์ด์ ๊ตญํ๋์ง๋ ์์ต๋๋ค):</p> <ul><li>์ง์์ ๊ณต์ ํ๊ธฐ ์ํด์ ํ๋ จ ๋๋ ์ถ๋ก ์คํ์ ๋ํ ๊ฒฐ๊ณผ ๋ณด๊ณ </li> <li>๊ฐ์ธ ํ๋ก์ ํธ ์๊ฐ</li> <li>๋น๊ณต์ ํ๋ จ ์์ ์ ๋ํ ์ง๋ฌธ</li> <li>ํ๋ก์ ํธ ์ ์</li> <li>์ผ๋ฐ์ ์ธ ํผ๋๋ฐฑ</li> <li>๋ ผ๋ฌธ ์์ฝ</li> <li>Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ํ ๋์ ์์ฒญ</li> <li>์ผ๋ฐ์ ์ธ ์ง๋ฌธ</li> <li>Diffusion ๋ชจ๋ธ์ ๋ํ ์ค๋ฆฌ์ ์ง๋ฌธ</li> <li>โฆ</li></ul> <p>ํฌ๋ผ์ด๋ Discord์์ ์ง๋ฌธ์ ํ๋ฉด ์ปค๋ฎค๋ํฐ๊ฐ ์ง์์ ๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ํ๋๋ก ์ฅ๋ ค๋๋ฉฐ, ํฅํ ๋์ผํ ์ง๋ฌธ์ ๊ฐ์ง ์ด๋ณด์์๊ฒ๋ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ถ๊ธํ ์ง๋ฌธ์ ์ธ์ ๋ ์ง ํ์๊ธฐ ๋ฐ๋๋๋ค. | |
| ๋ํ, ์ด๋ฌํ ์ง๋ฌธ์ ๋ต๋ณํ๋ ๊ฒ์ ์ปค๋ฎค๋ํฐ์๊ฒ ๋งค์ฐ ํฐ ๋์์ด ๋ฉ๋๋ค. ์๋ํ๋ฉด ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋๊ฐ ํ์ตํ ์ ์๋ ๊ณต๊ฐ์ ์ธ ์ง์์ ๋ฌธ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.</p> <p><strong>์ฃผ์</strong>ํ์ญ์์ค. ์ง๋ฌธ์ด๋ ๋ต๋ณ์ ํฌ์ํ๋ ๋ ธ๋ ฅ์ด ๋ง์์๋ก ๊ณต๊ฐ์ ์ผ๋ก ๋ฌธ์ํ๋ ์ง์์ ํ์ง์ด ๋์์ง๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ ์ ์๋๊ณ ์ ๋ต๋ณ๋ ์ง๋ฌธ์ ๋ชจ๋์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ ๊ณ ํ์ง ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค. ๋ฐ๋ฉด์ ์๋ชป๋ ์ง๋ฌธ์ด๋ ๋ต๋ณ์ ๊ณต๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฐ์ ์ธ ํ์ง์ ๋ฎ์ถ ์ ์์ต๋๋ค. | |
| ๊ฐ๋จํ ๋งํด์, ๊ณ ํ์ง์ ์ง๋ฌธ์ด๋ ๋ต๋ณ์ <em>๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ ๊ด๋ จ์ฑ์ด ์์ผ๋ฉฐ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ ์ ํ์ํ๋์ด ์์ด์ผ</em> ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ <a href="#how-to-write-a-good-issue">์ข์ ์ด์ ์์ฑ ๋ฐฉ๋ฒ</a> ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.</p> <p><strong>์ฑ๋์ ๋ํ ์ฐธ๊ณ ์ฌํญ</strong>: <a href="https://discuss.huggingface.co/c/discussion-related-to-httpsgithubcomhuggingfacediffusers/63" rel="nofollow"><em>ํฌ๋ผ</em></a>์ ๊ตฌ๊ธ๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์์ ๋ ์ ์์ธํ๋ฉ๋๋ค. ๊ฒ์๋ฌผ์ ์ธ๊ธฐ์ ๋ฐ๋ผ ์์๊ฐ ๋งค๊ฒจ์ง๋ฉฐ, ์๊ฐ์์ผ๋ก ์ ๋ ฌ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์ ์ ๊ฒ์ํ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. | |
| ๋ํ, ํฌ๋ผ์ ๊ฒ์๋ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ์ฝ๊ฒ ๋งํฌํ ์ ์์ต๋๋ค. | |
| ๋ฐ๋ฉด <em>Discord</em>๋ ์ฑํ ํ์์ผ๋ก ๋์ด ์์ด ๋น ๋ฅธ ๋ํ๋ฅผ ์ ๋ํฉ๋๋ค. | |
| ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ๋น ๋ฅด๊ฒ ๋ฐ์ ์๋ ์๊ฒ ์ง๋ง, ์๊ฐ์ด ์ง๋๋ฉด ์ง๋ฌธ์ด ๋ ์ด์ ๋ณด์ด์ง ์์ต๋๋ค. ๋ํ, Discord์์ ์ด์ ์ ๊ฒ์๋ ์ ๋ณด๋ฅผ ์ฐพ๋ ๊ฒ์ ํจ์ฌ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๋ผ์ ์ฌ์ฉํ์ฌ ๊ณ ํ์ง์ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ํ์ฌ ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ ์ค๋ ์ง์๋๋ ์ง์์ ๋ง๋ค๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. Discord์์์ ํ ๋ก ์ด ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๋ต๋ณ๊ณผ ๊ฒฐ๋ก ์ ์ด๋์ด๋ด๋ ๊ฒฝ์ฐ, ํด๋น ์ ๋ณด๋ฅผ ํฌ๋ผ์ ๊ฒ์ํ์ฌ ํฅํ ๋ ์๋ค์๊ฒ ๋ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ๊ถ์ฅํฉ๋๋ค.</p> <!> <p>๐งจ Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ์๋ค์ด ๋ง์ฃผ์น๋ ๋ฌธ์ ๋ฅผ ์๋ ค์ฃผ๋ ๋๋ถ์ ๊ฒฌ๊ณ ํ๊ณ ์ ๋ขฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์๋ฅผ ๋ณด๊ณ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.</p> <p>๊ธฐ์ตํด์ฃผ์ธ์, GitHub ์ด์๋ Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋ ๊ธฐ์ ์ ์ธ ์ง๋ฌธ, ๋ฒ๊ทธ ๋ฆฌํฌํธ, ๊ธฐ๋ฅ ์์ฒญ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์์ธ์ ๋ํ ํผ๋๋ฐฑ์ ์ฌ์ฉ๋ฉ๋๋ค.</p> <p>๊ฐ๋จํ ๋งํด์, Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ <strong>์ฝ๋์ ๊ด๋ จ๋์ง ์์</strong> ๋ชจ๋ ๊ฒ(๋ฌธ์ ํฌํจ)์ GitHub๊ฐ ์๋ <a href="https://discuss.huggingface.co/c/discussion-related-to-httpsgithubcomhuggingfacediffusers/63" rel="nofollow">ํฌ๋ผ</a>์ด๋ <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>์์ ์ง๋ฌธํด์ผ ํฉ๋๋ค.</p> <p><strong>์๋ก์ด ์ด์๋ฅผ ์ด ๋ ๋ค์ ๊ฐ์ด๋๋ผ์ธ์ ๊ณ ๋ คํด์ฃผ์ธ์</strong>:</p> <ul><li>์ด๋ฏธ ๊ฐ์ ์ด์๊ฐ ์๋์ง ๊ฒ์ํ๋์ง ํ์ธํด์ฃผ์ธ์(GitHub์ ์ด์ ํญ์์ ๊ฒ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ธ์).</li> <li>๋ค๋ฅธ(๊ด๋ จ๋) ์ด์์ ์๋ก์ด ์ด์๋ฅผ ๋ณด๊ณ ํ์ง ๋ง์์ฃผ์ธ์. ๋ค๋ฅธ ์ด์์ ๊ด๋ จ์ด ๋๋ค๋ฉด, ์๋ก์ด ์ด์๋ฅผ ์ด๊ณ ๊ด๋ จ ์ด์์ ๋งํฌ๋ฅผ ๊ฑธ์ด์ฃผ์ธ์.</li> <li>์ด์๋ฅผ ์์ด๋ก ์์ฑํด์ฃผ์ธ์. ์์ด์ ์ต์ํ์ง ์๋ค๋ฉด, <a href="https://www.deepl.com/translator" rel="nofollow">DeepL</a>๊ณผ ๊ฐ์ ๋ฐ์ด๋ ๋ฌด๋ฃ ์จ๋ผ์ธ ๋ฒ์ญ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๊ตญ์ด์์ ์์ด๋ก ๋ฒ์ญํด์ฃผ์ธ์.</li> <li>์ด์๊ฐ ์ต์ Diffusers ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉด ํด๊ฒฐ๋ ์ ์๋์ง ํ์ธํด์ฃผ์ธ์. ์ด์๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ <code>python -c "import diffusers; print(diffusers.__version__)"</code> ๋ช ๋ น์ ์คํํ์ฌ ํ์ฌ ์ฌ์ฉ ์ค์ธ Diffusers ๋ฒ์ ์ด ์ต์ ๋ฒ์ ๊ณผ ์ผ์นํ๊ฑฐ๋ ๋ ๋์์ง ํ์ธํด์ฃผ์ธ์.</li> <li>์๋ก์ด ์ด์๋ฅผ ์ด ๋ ํฌ์ํ๋ ๋ ธ๋ ฅ์ด ๋ง์์๋ก ๋ต๋ณ์ ํ์ง์ด ๋์์ง๊ณ Diffusers ์ด์ ์ ์ฒด์ ํ์ง๋ ํฅ์๋ฉ๋๋ค.</li></ul> <!> <p>๋ฒ๊ทธ ๋ฆฌํฌํธ๋ ํญ์ ์ฌํ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ ํฌํจํ๊ณ ๊ฐ๋ฅํ ํ ์ต์ํ์ด์ด์ผ ํ๋ฉฐ ๊ฐ๊ฒฐํด์ผ ํฉ๋๋ค. | |
| ์์ธํ ๋งํ๋ฉด:</p> <ul><li>๋ฒ๊ทธ๋ฅผ ๊ฐ๋ฅํ ํ ์ขํ์ผ ํฉ๋๋ค. <strong>์ ์ฒด ์ฝ๋ ํ์ผ์ ๊ทธ๋ฅ ๋์ง์ง ๋ง์ธ์</strong>.</li> <li>์ฝ๋์ ์์์ ์ง์ ํด์ผ ํฉ๋๋ค.</li> <li>Diffusers๊ฐ ์์กดํ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌํจํ์ง ๋ง์ญ์์ค.</li> <li><strong>ํญ์</strong> ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ํ ๋ชจ๋ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ธ์. ์ด๋ฅผ ์ํด ์์์ <code>diffusers-cli env</code>๋ฅผ ์คํํ๊ณ ํ์๋ ์ ๋ณด๋ฅผ ์ด์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์์ต๋๋ค.</li> <li>์ด์๋ฅผ ์ค๋ช ํด์ผ ํฉ๋๋ค. ๋ ์๊ฐ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง, ์ ๋ฌธ์ ๊ฐ ๋๋์ง ๋ชจ๋ฅธ๋ค๋ฉด ์ด์๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.</li> <li><strong>ํญ์</strong> ๋ ์๊ฐ ๊ฐ๋ฅํ ํ ์ ์ ๋ ธ๋ ฅ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฝ๋ ์กฐ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ฑฐ๋ ์ ์๋์ง ์์ ๋ณ์ ๋๋ฌธ์ ์คํ๋์ง ์๋ ๊ฒฝ์ฐ ๋ ์๊ฐ ๋์์ ์ค ์ ์์ต๋๋ค. ์ฌํ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ด ๊ฐ๋ฅํ ํ ์ต์ํ๋๊ณ ๊ฐ๋จํ Python ์ ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.</li> <li>๋ฌธ์ ๋ฅผ ์ฌํํ๊ธฐ ์ํด ๋ชจ๋ธ๊ณผ/๋๋ ๋ฐ์ดํฐ์ ์ด ํ์ํ ๊ฒฝ์ฐ ๋ ์๊ฐ ํด๋น ๋ชจ๋ธ์ด๋ ๋ฐ์ดํฐ์ ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ๋ชจ๋ธ์ด๋ ๋ฐ์ดํฐ์ ์ <a href="https://huggingface.co" rel="nofollow">Hub</a>์ ์ ๋ก๋ํ์ฌ ์ฝ๊ฒ ๋ค์ด๋ก๋ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ๋ฌธ์ ์ฌํ์ ๊ฐ๋ฅํ ํ ์ฝ๊ฒํ๊ธฐ ์ํด ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ์ ์ ๊ฐ๋ฅํ ํ ์๊ฒ ์ ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ์ธ์.</li></ul> <p>์์ธํ ๋ด์ฉ์ <a href="#how-to-write-a-good-issue">์ข์ ์ด์ ์์ฑ ๋ฐฉ๋ฒ</a> ์น์ ์ ์ฐธ์กฐํ์ธ์.</p> <p>๋ฒ๊ทธ ๋ฆฌํฌํธ๋ฅผ ์ด๋ ค๋ฉด <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=bug&projects=&template=bug-report.yml" rel="nofollow">์ฌ๊ธฐ</a>๋ฅผ ํด๋ฆญํ์ธ์.</p> <!> <p>์ธ๊ณ์ ์ธ ๊ธฐ๋ฅ ์์ฒญ์ ๋ค์ ์ฌํญ์ ๋ค๋ฃน๋๋ค:</p> <ol><li>๋จผ์ ๋๊ธฐ๋ถ์ฌ:</li></ol> <ul><li>๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ด๋ จ๋ ๋ฌธ์ /๋ถ๋ง์ด ์๋์? ๊ทธ๋ ๋ค๋ฉด ์ ๊ทธ๋ฐ์ง ์ค๋ช ํด์ฃผ์ธ์. ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ฝ๋ ์กฐ๊ฐ์ ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.</li> <li>ํ๋ก์ ํธ์ ํ์ํ ๊ธฐ๋ฅ์ธ๊ฐ์? ์ฐ๋ฆฌ๋ ๊ทธ์ ๋ํด ๋ฃ๊ณ ์ถ์ต๋๋ค!</li> <li>์ปค๋ฎค๋ํฐ์ ๋์์ด ๋ ์ ์๋ ๊ฒ์ ์์ ํ๊ณ ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ๊ณ ์๋๊ฐ์? ๋ฉ์ง๋ค์! ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ์๋ ค์ฃผ์ธ์.</li></ul> <ol start="2"><li>๊ธฐ๋ฅ์ <em>์์ธํ ์ค๋ช ํ๋</em> ๋ฌธ๋จ์ ์์ฑํด์ฃผ์ธ์;</li> <li>ํฅํ ์ฌ์ฉ์ ๋ณด์ฌ์ฃผ๋ <strong>์ฝ๋ ์กฐ๊ฐ</strong>์ ์ ๊ณตํด์ฃผ์ธ์;</li> <li>๋ ผ๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ด์ฉ์ธ ๊ฒฝ์ฐ ๋งํฌ๋ฅผ ์ฒจ๋ถํด์ฃผ์ธ์;</li> <li>๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐ๋๋ ์ถ๊ฐ ์ ๋ณด(๊ทธ๋ฆผ, ์คํฌ๋ฆฐ์ท ๋ฑ)๋ฅผ ์ฒจ๋ถํด์ฃผ์ธ์.</li></ol> <p>๊ธฐ๋ฅ ์์ฒญ์ <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feature_request.md&title=" rel="nofollow">์ฌ๊ธฐ</a>์์ ์ด ์ ์์ต๋๋ค.</p> <!> <p>๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์์ธ๊ณผ ๊ทธ๊ฒ์ด ์ ์ข์์ง ๋๋ ๋์์ง์ ๋ํ ์ด์ ์ ๋ํ ํผ๋๋ฐฑ์ ํต์ฌ ๋ฉ์ธํ ์ด๋๊ฐ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์์ฒญ๋ ๋์์ด ๋ฉ๋๋ค. ํ์ฌ ๋์์ธ ์ฒ ํ์ ์ดํดํ๋ ค๋ฉด <a href="https://huggingface.co/docs/diffusers/conceptual/philosophy" rel="nofollow">์ฌ๊ธฐ</a>๋ฅผ ์ฐธ์กฐํด ์ฃผ์ธ์. ํน์ ๋์์ธ ์ ํ์ด ํ์ฌ ๋์์ธ ์ฒ ํ๊ณผ ๋ง์ง ์๋๋ค๊ณ ์๊ฐ๋๋ฉด, ๊ทธ ์ด์ ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์ด์ผ ํ๋์ง ์ค๋ช ํด ์ฃผ์ธ์. ๋ฐ๋๋ก ํน์ ๋์์ธ ์ ํ์ด ๋์์ธ ์ฒ ํ์ ๋๋ฌด ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ํํ๋ค๊ณ ์๊ฐ๋๋ฉด, ๊ทธ ์ด์ ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์ด์ผ ํ๋์ง ์ค๋ช ํด ์ฃผ์ธ์. ํน์ ๋์์ธ ์ ํ์ด ๋งค์ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด, ํฅํ ๋์์ธ ๊ฒฐ์ ์ ํฐ ๋์์ด ๋๋ฏ๋ก ์ด์ ๋ํ ์๊ฒฌ์ ๋จ๊ฒจ ์ฃผ์ธ์.</p> <p>ํผ๋๋ฐฑ์ ๊ดํ ์ด์๋ <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=" rel="nofollow">์ฌ๊ธฐ</a>์์ ์ด ์ ์์ต๋๋ค.</p> <!> <p>๊ธฐ์ ์ ์ธ ์ง๋ฌธ์ ์ฃผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ์ฝ๋๊ฐ ์ ํน์ ๋ฐฉ์์ผ๋ก ์์ฑ๋์๋์ง ๋๋ ์ฝ๋์ ํน์ ๋ถ๋ถ์ด ๋ฌด์์ ํ๋์ง์ ๋ํ ์ง๋ฌธ์ ๋๋ค. ์ง๋ฌธํ์ ์ฝ๋ ๋ถ๋ถ์ ๋ํ ๋งํฌ๋ฅผ ์ ๊ณตํ๊ณ ํด๋น ์ฝ๋ ๋ถ๋ถ์ด ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ด์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.</p> <p>๊ธฐ์ ์ ์ธ ์ง๋ฌธ์ ๊ดํ ์ด์๋ฅผ <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=bug&template=bug-report.yml" rel="nofollow">์ฌ๊ธฐ</a>์์ ์ด ์ ์์ต๋๋ค.</p> <!> <p>๋ง์ฝ diffusion ๋ชจ๋ธ ์ปค๋ฎค๋ํฐ์์ Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐํ๊ณ ์ถ์ ์๋ก์ด ๋ชจ๋ธ, ํ์ดํ๋ผ์ธ ๋๋ ์ค์ผ์ค๋ฌ๊ฐ ์๋ค๋ฉด, ๋ค์ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ์ธ์:</p> <ul><li>Diffusion ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ ๋๋ ์ค์ผ์ค๋ฌ์ ๋ํ ๊ฐ๋จํ ์ค๋ช ๊ณผ ๋ ผ๋ฌธ ๋๋ ๊ณต๊ฐ๋ ๋ฒ์ ์ ๋งํฌ</li> <li>ํด๋น ๋ชจ๋ธ์ ์คํ ์์ค ๊ตฌํ์ ๋ํ ๋งํฌ</li> <li>๋ชจ๋ธ ๊ฐ์ค์น๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ฐ์ค์น์ ๋งํฌ</li></ul> <p>์ง์ ๋ชจ๋ธ์ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด, ๊ฐ์ฅ ์ ์๋ดํด๋๋ฆด ์ ์์ต๋๋ค. ๋ํ, ๊ฐ๋ฅํ๋ค๋ฉด ๊ตฌ์ฑ ์์(๋ชจ๋ธ, ์ค์ผ์ค๋ฌ, ํ์ดํ๋ผ์ธ ๋ฑ)์ ์์ ์๋ฅผ GitHub ํธ๋ค๋ก ํ๊ทธํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.</p> <p>๋ชจ๋ธ/ํ์ดํ๋ผ์ธ/์ค์ผ์ค๋ฌ์ ๋ํ ์์ฒญ์ <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=New+model%2Fpipeline%2Fscheduler&template=new-model-addition.yml" rel="nofollow">์ฌ๊ธฐ</a>์์ ์ด ์ ์์ต๋๋ค.</p> <!> <p>GitHub์์ ์ด์์ ๋ํ ๋ต๋ณ์ ํ๊ธฐ ์ํด์๋ Diffusers์ ๋ํ ๊ธฐ์ ์ ์ธ ์ง์์ด ํ์ํ ์ ์์ง๋ง, ์ ํํ ๋ต๋ณ์ด ์๋๋๋ผ๋ ๋ชจ๋๊ฐ ์๋ํด๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์ด์์ ๋ํ ๊ณ ํ์ง ๋ต๋ณ์ ์ ๊ณตํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ํ:</p> <ul><li>๊ฐ๋ฅํ ํ ๊ฐ๊ฒฐํ๊ณ ์ต์ํ์ผ๋ก ์ ์งํฉ๋๋ค.</li> <li>์ฃผ์ ์ ์ง์คํฉ๋๋ค. ์ด์์ ๋ํ ๋ต๋ณ์ ํด๋น ์ด์์ ๊ด๋ จ๋ ๋ด์ฉ์๋ง ์ง์คํด์ผ ํฉ๋๋ค.</li> <li>์์ ์ ์ฃผ์ฅ์ ์ฆ๋ช ํ๊ฑฐ๋ ์ฅ๋ คํ๋ ์ฝ๋, ๋ ผ๋ฌธ ๋๋ ๊ธฐํ ์ถ์ฒ๋ ๋งํฌ๋ฅผ ์ ๊ณตํ์ธ์.</li> <li>์ฝ๋๋ก ๋ต๋ณํฉ๋๋ค. ๊ฐ๋จํ ์ฝ๋ ์กฐ๊ฐ์ด ์ด์์ ๋ํ ๋ต๋ณ์ด๊ฑฐ๋ ์ด์๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋ค๋ฉด, ์์ ํ ์ฌํ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ ์ ๊ณตํด์ฃผ์ธ์.</li></ul> <p>๋ํ, ๋ง์ ์ด์๋ค์ ๋จ์ํ ์ฃผ์ ์ ๋ฌด๊ดํ๊ฑฐ๋ ๋ค๋ฅธ ์ด์์ ์ค๋ณต์ด๊ฑฐ๋ ๊ด๋ จ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ด์๋ค์ ๋ํ ๋ต๋ณ์ ์ ๊ณตํ๊ณ , ์ด์ ์์ฑ์์๊ฒ ๋ ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฑฐ๋, ์ค๋ณต๋ ์ด์์ ๋ํ ๋งํฌ๋ฅผ ์ ๊ณตํ๊ฑฐ๋, <a href="https://discuss.huggingface.co/c/discussion-related-to-httpsgithubcomhuggingfacediffusers/63" rel="nofollow">ํฌ๋ผ</a> ์ด๋ <a href="https://discord.gg/G7tWnz98XR" rel="nofollow">Discord</a>๋ก ๋ฆฌ๋๋ ์ ํ๋ ๊ฒ์ ๋ฉ์ธํ ์ด๋์๊ฒ ํฐ ๋์์ด ๋ฉ๋๋ค.</p> <p>์ด์๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฒ๊ทธ ๋ณด๊ณ ์์ด๊ณ ์์ค ์ฝ๋์์ ์์ ์ด ํ์ํ๋ค๊ณ ํ์ธํ ๊ฒฝ์ฐ, ๋ค์ ์น์ ์ ์ดํด๋ณด์ธ์.</p> <p>๋ค์ ๋ชจ๋ ๊ธฐ์ฌ์ ๋ํด์๋ PR์ ์ด์ฌ์ผ ํฉ๋๋ค. <a href="#how-to-open-a-pr">Pull Request ์ด๊ธฐ</a> ์น์ ์์ ์์ธํ ์ค๋ช ๋์ด ์์ต๋๋ค.</p> <!> <p><em>Good first issues</em>๋ <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">Good first issue</a> ๋ผ๋ฒจ๋ก ํ์๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก, ์ด์๋ ์ด๋ฏธ ์ ์ฌ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์ค๋ช ํ๊ณ ์์ด์ ์์ ํ๊ธฐ ์ฝ์ต๋๋ค. | |
| ๋ง์ฝ ์ด์๊ฐ ์์ง ๋ซํ์ง ์์๊ณ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๊ณ ์ถ๋ค๋ฉด, โ์ด ์ด์๋ฅผ ํด๊ฒฐํด๋ณด๊ณ ์ถ์ต๋๋ค.โ๋ผ๋ ๋ฉ์์ง๋ฅผ ๋จ๊ธฐ๋ฉด ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ธ ๊ฐ์ง ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค:</p> <ul><li>a.) ์ด์ ์ค๋ช ์ ์ด๋ฏธ ์์ ์ฌํญ์ ์ ์ํ๋ ๊ฒฝ์ฐ, ํด๊ฒฐ์ฑ ์ด ์ดํด๋๊ณ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ธ๋ค๋ฉด, PR ๋๋ ๋๋ํํธ PR์ ์ด์ด์ ์์ ํ ์ ์์ต๋๋ค.</li> <li>b.) ์ด์ ์ค๋ช ์ ์์ ์ฌํญ์ด ์ ์๋์ด ์์ง ์์ ๊ฒฝ์ฐ, ์ ์ํ ์์ ์ฌํญ์ด ๊ฐ๋ฅํ ์ง ๋ฌผ์ด๋ณผ ์ ์๊ณ , Diffusers ํ์ ๋๊ตฐ๊ฐ๊ฐ ๊ณง ๋ต๋ณํด์ค ๊ฒ์ ๋๋ค. ๋ง์ฝ ์ด๋ป๊ฒ ์์ ํ ์ง ์ข์ ์์ด๋์ด๊ฐ ์๋ค๋ฉด, ์ง์ PR์ ์ด์ด๋ ๋ฉ๋๋ค.</li> <li>c.) ์ด๋ฏธ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ฆฐ PR์ด ์์ง๋ง, ์ด์๊ฐ ์์ง ๋ซํ์ง ์์์ต๋๋ค. PR์ด ๋ ์ด์ ์งํ๋์ง ์์๋ค๋ฉด, ์๋ก์ด PR์ ์ด๊ณ ์ด์ PR์ ๋งํฌ๋ฅผ ๊ฑธ๋ฉด ๋ฉ๋๋ค. PR์ ์ข ์ข ์๋ ๊ธฐ์ฌ์๊ฐ ๊ฐ์๊ธฐ ์๊ฐ์ ๋ด์ง ๋ชปํด ๋ ์ด์ ์งํํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ ๋ ์ด์ ์งํ๋์ง ์๊ฒ ๋ฉ๋๋ค. ์ด๋ ์คํ ์์ค์์ ์์ฃผ ๋ฐ์ํ๋ ์ผ์ด๋ฉฐ ๋งค์ฐ ์ ์์ ์ธ ์ํฉ์ ๋๋ค. ์ด ๊ฒฝ์ฐ, ์ปค๋ฎค๋ํฐ๋ ์๋ก ์๋ํ๊ณ ๊ธฐ์กด PR์ ์ง์์ ํ์ฉํด์ฃผ๋ฉด ๋งค์ฐ ๊ธฐ์ ๊ฒ์ ๋๋ค. ์ด๋ฏธ PR์ด ์๊ณ ํ์ฑํ๋์ด ์๋ค๋ฉด, ์ ์์ ํด์ฃผ๊ฑฐ๋ PR์ ๊ฒํ ํ๊ฑฐ๋ PR์ ๊ธฐ์ฌํ ์ ์๋์ง ๋ฌผ์ด๋ณด๋ ๋ฑ ์์ฑ์๋ฅผ ๋์์ค ์ ์์ต๋๋ค.</li></ul> <!> <p>์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํญ์ ์ข์ ๋ฌธ์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค! ๊ณต์ ๋ฌธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์๊ฒ ์ฒซ ๋ฒ์งธ ์ ์ ์ค ํ๋์ด๋ฉฐ, ๋ฐ๋ผ์ ๋ฌธ์์ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ์น ์๋ ๊ธฐ์ฌ์ ๋๋ค.</p> <p>๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํฉ๋๋ค:</p> <ul><li>๋ง์ถค๋ฒ์ด๋ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค.</li> <li>๊ณต์ ๋ฌธ์๊ฐ ์ด์ํ๊ฒ ํ์๋๊ฑฐ๋ ๋งํฌ๊ฐ ๊นจ์ง ๊ฒฝ์ฐ, ์ฌ๋ฐ๋ฅด๊ฒ ์์ ํ๋ ๋ฐ ์๊ฐ์ ๋ด์ฃผ์๋ฉด ๋งค์ฐ ๊ธฐ์ ๊ฒ์ ๋๋ค.</li> <li>๋ฌธ์์ ์ ๋ ฅ ๋๋ ์ถ๋ ฅ ํ ์์ ๋ชจ์์ด๋ ์ฐจ์์ ์์ ํฉ๋๋ค.</li> <li>์ดํดํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ์๋ชป๋ ๋ฌธ์๋ฅผ ๋ช ํํ๊ฒ ํฉ๋๋ค.</li> <li>์ค๋๋ ์ฝ๋ ์์ ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.</li> <li>๋ฌธ์๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ๋ฒ์ญํฉ๋๋ค.</li></ul> <p><a href="https://huggingface.co/docs/diffusers/index" rel="nofollow">๊ณต์ Diffusers ๋ฌธ์ ํ์ด์ง</a>์ ํ์๋ ๋ชจ๋ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์ ์ผ๋ถ์ด๋ฉฐ, ํด๋น <a href="https://github.com/huggingface/diffusers/tree/main/docs/source" rel="nofollow">๋ฌธ์ ์์ค</a>์์ ์์ ํ ์ ์์ต๋๋ค.</p> <p>๋ฌธ์์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ์์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ <a href="https://github.com/huggingface/diffusers/tree/main/docs" rel="nofollow">์ด ํ์ด์ง</a>๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์.</p> <!> <blockquote class="tip"><p>์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด <a href="../using-diffusers/custom_pipeline_overview#community-pipelines">์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ</a> ๊ฐ์ด๋๋ฅผ ์ฝ์ด๋ณด์ธ์. ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ด ์ ํ์ํ์ง ๊ถ๊ธํ๋ค๋ฉด GitHub ์ด์ <a href="https://github.com/huggingface/diffusers/issues/841" rel="nofollow">#841</a>๋ฅผ ํ์ธํด๋ณด์ธ์ (๊ธฐ๋ณธ์ ์ผ๋ก, ์ฐ๋ฆฌ๋ diffusion ๋ชจ๋ธ์ด ์ถ๋ก ์ ์ฌ์ฉ๋ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ ์งํ ์ ์์ง๋ง ์ปค๋ฎค๋ํฐ๊ฐ ์ด๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ฐฉํดํ๊ณ ์ถ์ง ์์ต๋๋ค).</p></blockquote> <p>์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ๊ธฐ์ฌํ๋ ๊ฒ์ ์ฐฝ์์ฑ๊ณผ ์์ ์ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค. <code>DiffusionPipeline</code>์ ๊ธฐ๋ฐ์ผ๋ก ๋น๋ํ์ฌ <code>custom_pipeline</code> ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํจ์ผ๋ก์จ ๋๊ตฌ๋ ๋ก๋ํ๊ณ ์ฌ์ฉํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ด ์น์ ์์๋ UNet์ด ๋จ์ผ ์๋ฐฉํฅ ํจ์ค๋ง ์ํํ๊ณ ์ค์ผ์ค๋ฌ๋ฅผ ํ ๋ฒ ํธ์ถํ๋ ๊ฐ๋จํ ํ์ดํ๋ผ์ธ (๋จ๊ณ๋ณ ํ์ดํ๋ผ์ธ)์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.</p> <ol><li><p>์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ์ํ one_step_unet.py ํ์ผ์ ์์ฑํ์ธ์. ์ด ํ์ผ์ ์ฌ์ฉ์์ ์ํด ์ค์น๋๋ ํจํค์ง๋ฅผ ํฌํจํ ์ ์์ง๋ง, <code>DiffusionPipeline</code>์์ ๋ชจ๋ธ ๊ฐ์ค์น์ ์ค์ผ์ค๋ฌ ๊ตฌ์ฑ์ ๋ก๋ํ๊ธฐ ์ํด ํ๋์ ํ์ดํ๋ผ์ธ ํด๋์ค๋ง ์์ด์ผ ํฉ๋๋ค. <code>__init__</code> ํจ์์ UNet๊ณผ ์ค์ผ์ค๋ฌ๋ฅผ ์ถ๊ฐํ์ธ์.</p> <p>๋ํ <code>save_pretrained()</code>๋ฅผ ์ฌ์ฉํ์ฌ ํ์ดํ๋ผ์ธ๊ณผ ๊ทธ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ฅํ ์ ์๋๋ก <code>register_modules</code> ํจ์๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.</p></li></ol> <!> <ol><li>forward ํจ์ค์์ (<code>__call__</code>๋ก ์ ์ํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค), ์ํ๋ ์ด๋ค ๊ธฐ๋ฅ์ด๋ ์ถ๊ฐํ ์ ์์ต๋๋ค. โone-stepโ ํ์ดํ๋ผ์ธ์ ๊ฒฝ์ฐ, ๋ฌด์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ <code>timestep=1</code>๋ก ์ค์ ํ์ฌ UNet๊ณผ ์ค์ผ์ค๋ฌ๋ฅผ ํ ๋ฒ ํธ์ถํฉ๋๋ค.</li></ol> <!> <p>์ด์ UNet๊ณผ ์ค์ผ์ค๋ฌ๋ฅผ ์ ๋ฌํ์ฌ ํ์ดํ๋ผ์ธ์ ์คํํ๊ฑฐ๋, ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.</p> <!> <p>ํ์ดํ๋ผ์ธ์ GitHub ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ ๋๋ Hub ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ผ๋ก ๊ณต์ ํ ์ ์์ต๋๋ค.</p> <!> <!> <p>Diffusers ์์ ๋ <a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">examples</a> ํด๋์ ์๋ ํ๋ จ ์คํฌ๋ฆฝํธ์ ๋ชจ์์ ๋๋ค.</p> <p>๋ ๊ฐ์ง ์ ํ์ ํ๋ จ ์์ ๋ฅผ ์ง์ํฉ๋๋ค:</p> <ul><li>๊ณต์ ํ๋ จ ์์ </li> <li>์ฐ๊ตฌ์ฉ ํ๋ จ ์์ </li></ul> <p>์ฐ๊ตฌ์ฉ ํ๋ จ ์์ ๋ <a href="https://github.com/huggingface/diffusers/tree/main/examples/research_projects" rel="nofollow">examples/research_projects</a>์ ์์นํ๋ฉฐ, ๊ณต์ ํ๋ จ ์์ ๋ <code>research_projects</code> ๋ฐ <code>community</code> ํด๋๋ฅผ ์ ์ธํ <a href="https://github.com/huggingface/diffusers/tree/main/examples" rel="nofollow">examples</a>์ ๋ชจ๋ ํด๋๋ฅผ ํฌํจํฉ๋๋ค. | |
| ๊ณต์ ํ๋ จ ์์ ๋ Diffusers์ ํต์ฌ ๋ฉ์ธํ ์ด๋๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ฉฐ, ์ฐ๊ตฌ์ฉ ํ๋ จ ์์ ๋ ์ปค๋ฎค๋ํฐ๊ฐ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. | |
| ์ด๋ ๊ณต์ ํ์ดํ๋ผ์ธ vs ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ๋ํ <a href="#6-contribute-a-community-pipeline">6. ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ ๊ธฐ์ฌํ๊ธฐ</a>์์ ์ ์ํ ์ด์ ์ ๋์ผํฉ๋๋ค: ํต์ฌ ๋ฉ์ธํ ์ด๋๊ฐ diffusion ๋ชจ๋ธ์ ๋ชจ๋ ๊ฐ๋ฅํ ํ๋ จ ๋ฐฉ๋ฒ์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค. | |
| Diffusers ํต์ฌ ๋ฉ์ธํ ์ด๋์ ์ปค๋ฎค๋ํฐ๊ฐ ํน์ ํ๋ จ ํจ๋ฌ๋ค์์ ๋๋ฌด ์คํ์ ์ด๊ฑฐ๋ ์ถฉ๋ถํ ๋์ค์ ์ด์ง ์๋ค๊ณ ํ๋จํ๋ค๋ฉด, ํด๋น ํ๋ จ ์ฝ๋๋ <code>research_projects</code> ํด๋์ ๋ฃ๊ณ ์์ฑ์์ ์ํด ๊ด๋ฆฌ๋์ด์ผ ํฉ๋๋ค.</p> <p>๊ณต์ ํ๋ จ ๋ฐ ์ฐ๊ตฌ ์์ ๋ ํ๋ ์ด์์ ํ๋ จ ์คํฌ๋ฆฝํธ, requirements.txt ํ์ผ ๋ฐ README.md ํ์ผ์ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ จ ์์ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํด์ผ ํฉ๋๋ค:</p> <!> <p>๊ทธ๋ฆฌ๊ณ ํ๋ จ์ ํ์ํ ๋ชจ๋ ์ถ๊ฐ์ ์ธ ์์กด์ฑ๋ ์ค์นํด์ผ ํฉ๋๋ค:</p> <!> <p>๋ฐ๋ผ์ ์์ ๋ฅผ ์ถ๊ฐํ ๋, <code>requirements.txt</code> ํ์ผ์ ํ๋ จ ์์ ์ ํ์ํ ๋ชจ๋ pip ์ข ์์ฑ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ์ค์น๋ ๋ชจ๋ ์ข ์์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์์ ์ ํ๋ จ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, <a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/requirements.txt" rel="nofollow">DreamBooth <code>requirements.txt</code> ํ์ผ</a>์ ์ฐธ์กฐํ์ธ์.</p> <p>Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ จ ์์ ๋ ๋ค์ ์ฒ ํ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค:</p> <ul><li>์์ ๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ฝ๋๋ ํ๋์ Python ํ์ผ์ ์์ด์ผ ํฉ๋๋ค.</li> <li>์ฌ์ฉ์๋ ๋ช ๋ น ์ค์์ <code>python <your-example>.py --args</code>์ ๊ฐ์ด ์์ ๋ฅผ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค.</li> <li>์์ ๋ ๊ฐ๋จํ๊ฒ ์ ์ง๋์ด์ผ ํ๋ฉฐ, Diffusers๋ฅผ ์ฌ์ฉํ ํ๋ จ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ <strong>์์</strong>๋ก ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค. ์์ ์คํฌ๋ฆฝํธ์ ๋ชฉ์ ์ ์ต์ฒจ๋จ diffusion ๋ชจ๋ธ์ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ, ๋๋ฌด ๋ง์ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ์ถ๊ฐํ์ง ์๊ณ ์ด๋ฏธ ์๋ ค์ง ํ๋ จ ๋ฐฉ๋ฒ์ ์ฌํํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ์ ๋ถ์ฐ๋ฌผ๋ก์, ์์ ๋ ์ข์ ๊ต์ก ์๋ฃ๋ก์จ์ ์ญํ ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํฉ๋๋ค.</li></ul> <p>์์ ์ ๊ธฐ์ฌํ๊ธฐ ์ํด์๋, ์ด๋ฏธ ์กด์ฌํ๋ ์์ ์ธ <a href="https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/train_dreambooth.py" rel="nofollow">dreambooth</a>์ ๊ฐ์ ์์ ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ด๋ป๊ฒ ๋ณด์ฌ์ผ ํ๋์ง์ ๋ํ ์์ด๋์ด๋ฅผ ์ป๋ ๊ฒ์ด ๋งค์ฐ ๊ถ์ฅ๋ฉ๋๋ค. | |
| Diffusers์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์๊ธฐ ๋๋ฌธ์, ๊ธฐ์ฌ์๋ค์ด <a href="https://github.com/huggingface/accelerate" rel="nofollow">Accelerate ๋ผ์ด๋ธ๋ฌ๋ฆฌ</a>๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. | |
| ์์ ์คํฌ๋ฆฝํธ๊ฐ ์๋ํ๋ ๊ฒฝ์ฐ, ๋ฐ๋์ ์์ ๋ฅผ ์ ํํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ํฌ๊ด์ ์ธ <code>README.md</code>๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ด README์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค:</p> <ul><li><a href="https://github.com/huggingface/diffusers/tree/main/examples/dreambooth#running-locally-with-pytorch" rel="nofollow">์ฌ๊ธฐ</a>์ ํ์๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ ๋ช ๋ น์ด.</li> <li><a href="https://api.wandb.ai/report/patrickvonplaten/xm6cd5q5" rel="nofollow">์ฌ๊ธฐ</a>์ ํ์๋ ํ๋ จ ๊ฒฐ๊ณผ (๋ก๊ทธ, ๋ชจ๋ธ ๋ฑ)์ ๋ํ ๋งํฌ๋ก ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ ์ ์๋ ๋ด์ฉ์ ๋ณด์ฌ์ค๋๋ค.</li> <li>๋น๊ณต์/์ฐ๊ตฌ์ฉ ํ๋ จ ์์ ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, <strong>๋ฐ๋์</strong> git ํธ๋ค์ ํฌํจํ์ฌ ์ด ํ๋ จ ์์ ๋ฅผ ์ ์ง ๊ด๋ฆฌํ ๊ฒ์์ ๋ช ์ํ๋ ๋ฌธ์ฅ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. <a href="https://github.com/huggingface/diffusers/tree/main/examples/research_projects/intel_opts#diffusers-examples-with-intel-optimizations" rel="nofollow">์ฌ๊ธฐ</a>์ ํ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.</li></ul> <p>๋ง์ฝ ๊ณต์ ํ๋ จ ์์ ์ ๊ธฐ์ฌํ๋ ๊ฒฝ์ฐ, <a href="https://github.com/huggingface/diffusers/blob/main/examples/test_examples.py" rel="nofollow">examples/test_examples.py</a>์ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ ํ์ธํด์ฃผ์ธ์. ๋น๊ณต์ ํ๋ จ ์์ ์๋ ์ด ์์ ์ด ํ์ํ์ง ์์ต๋๋ค.</p> <!> <p>โGood second issueโ๋ <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+second+issue%22" rel="nofollow">Good second issue</a> ๋ผ๋ฒจ๋ก ํ์๋ฉ๋๋ค. Good second issue๋ <a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22" rel="nofollow">Good first issues</a>๋ณด๋ค ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ๋ณต์กํฉ๋๋ค. | |
| ์ด์ ์ค๋ช ์ ์ผ๋ฐ์ ์ผ๋ก ์ด์๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ๊ตฌ์ฒด์ ์ด๋ฉฐ, ๊ด์ฌ ์๋ ๊ธฐ์ฌ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฝค ๊น์ ์ดํด๊ฐ ํ์ํฉ๋๋ค. | |
| Good second issue๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ, ํด๋น ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด PR์ ์ด๊ณ PR์ ์ด์์ ๋งํฌํ์ธ์. ์ด๋ฏธ ํด๋น ์ด์์ ๋ํ PR์ด ์ด๋ ค์์ง๋ง ๋ณํฉ๋์ง ์์ ๊ฒฝ์ฐ, ์ ๋ณํฉ๋์ง ์์๋์ง ์ดํดํ๊ธฐ ์ํด ์ดํด๋ณด๊ณ ๊ฐ์ ๋ PR์ ์ด์ด๋ณด์ธ์. | |
| Good second issue๋ ์ผ๋ฐ์ ์ผ๋ก Good first issue ์ด์๋ณด๋ค ๋ณํฉํ๊ธฐ๊ฐ ๋ ์ด๋ ค์ฐ๋ฏ๋ก, ํต์ฌ ๋ฉ์ธํ ์ด๋์๊ฒ ๋์์ ์์ฒญํ๋ ๊ฒ์ด ์ข์ต๋๋ค. PR์ด ๊ฑฐ์ ์๋ฃ๋ ๊ฒฝ์ฐ, ํต์ฌ ๋ฉ์ธํ ์ด๋๋ PR์ ์ฐธ์ฌํ์ฌ ์ปค๋ฐํ๊ณ ๋ณํฉ์ ์งํํ ์ ์์ต๋๋ค.</p> <!> <p>ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ, ์ค์ผ์ค๋ฌ๋ Diffusers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. | |
| ์ด๋ค์ ์ต์ฒจ๋จ diffusion ๊ธฐ์ ์ ์ฝ๊ฒ ์ ๊ทผํ๋๋ก ํ๋ฉฐ, ๋ฐ๋ผ์ ์ปค๋ฎค๋ํฐ๊ฐ ๊ฐ๋ ฅํ ์์ฑํ AI ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ํฉ๋๋ค.</p> <p>์๋ก์ด ๋ชจ๋ธ, ํ์ดํ๋ผ์ธ ๋๋ ์ค์ผ์ค๋ฌ๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์๋ก์ด ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ฑํํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ์ฒด ์์ฑํ AI ์ํ๊ณ์ ๋งค์ฐ ์ค์ํ ๊ฐ์น๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.</p> <p>Diffusers์๋ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์์ ๋ํ ์ฌ๋ฌ ๊ฐ๋ฐ ์์ฒญ์ด ์์ต๋๋ค. ํน์ ๊ตฌ์ฑ ์์๋ฅผ ์์ง ์ ํํ ์ด๋ค ๊ฒ์ ์ถ๊ฐํ๊ณ ์ถ์์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ, ๋ค์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ธ์:</p> <ul><li><a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+pipeline%2Fmodel%22" rel="nofollow">๋ชจ๋ธ ๋๋ ํ์ดํ๋ผ์ธ</a></li> <li><a href="https://github.com/huggingface/diffusers/issues?q=is%3Aopen+is%3Aissue+label%3A%22New+scheduler%22" rel="nofollow">์ค์ผ์ค๋ฌ</a></li></ul> <p>์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์, <a href="philosophy">์ฒ ํ ๊ฐ์ด๋</a>๋ฅผ ์ฝ์ด๋ณด๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์ ์ค ์ด๋ ๊ฒ์ ์ถ๊ฐํ๋ , ๋์์ธ ์ฒ ํ๊ณผ ๊ด๋ จ๋ API ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฐ๋ฆฌ์ ๋์์ธ ์ฒ ํ๊ณผ ํฌ๊ฒ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ ๋ณํฉํ ์ ์์ต๋๋ค. ๋์์ธ ์ ํ์ ๊ทผ๋ณธ์ ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒฝ์ฐ, <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=" rel="nofollow">ํผ๋๋ฐฑ ์ด์</a>๋ฅผ ์ด์ด ํด๋น ๋์์ธ ํจํด/์ ํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด์์ ๋ณ๊ฒฝ๋์ด์ผ ํ๋์ง, ๋์์ธ ์ฒ ํ์ ์ ๋ฐ์ดํธํด์ผ ํ๋์ง์ ๋ํด ๋ ผ์ํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด์ ์ผ๊ด์ฑ์ ์ฐ๋ฆฌ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.</p> <p>PR์ ์๋ณธ ์ฝ๋๋ฒ ์ด์ค/๋ ผ๋ฌธ ๋งํฌ๋ฅผ ์ถ๊ฐํ๊ณ , ๊ฐ๋ฅํ๋ฉด PR์์ ์๋ ์์ฑ์์๊ฒ ์ง์ ์๋ฆผ์ ๋ณด๋ด์ด ์งํ ์ํฉ์ ๋ฐ๋ผ๊ฐ ์ ์๋๋ก ํด์ฃผ์ธ์.</p> <p>PR์์ ๋งํ ๊ฒฝ์ฐ๋ ๋์์ด ํ์ํ ๊ฒฝ์ฐ, ์ฒซ ๋ฒ์งธ ๋ฆฌ๋ทฐ๋ ๋์์ ์์ฒญํ๋ ๋ฉ์์ง๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ ์ฃผ์ ํ์ง ๋ง์ธ์.</p> <!> <p><code># Copied from mechanism</code> ์ ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ ๋๋ ์ค์ผ์ค๋ฌ ์ฝ๋๋ฅผ ์ถ๊ฐํ ๋ ์ดํดํด์ผ ํ ๋ ํนํ๊ณ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๊ฒ์ Diffusers ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์์ ๋ณผ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด์์ ๋๋ค. <code># Copied from mechanism</code> ์ผ๋ก ํ์๋ ์ฝ๋๋ ๋ณต์ฌํ ์ฝ๋์ ์ ํํ ๋์ผํ๋๋ก ๊ฐ์ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด <code>make fix-copies</code>๋ฅผ ์คํํ ๋๋ง๋ค ์ฌ๋ฌ ํ์ผ์ ๊ฑธ์ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ๊ณ ์ ํํ ์ ์์ต๋๋ค.</p> <p>์๋ฅผ ๋ค์ด, ์๋ ์ฝ๋ ์์ ์์ <code>StableDiffusionPipelineOutput</code>์ ์๋ ์ฝ๋์ด๋ฉฐ, <code>AltDiffusionPipelineOutput</code>์ <code># Copied from mechanism</code>์ ์ฌ์ฉํ์ฌ ๋ณต์ฌํฉ๋๋ค. ์ ์ผํ ์ฐจ์ด์ ์ ํด๋์ค ์ ๋์ฌ๋ฅผ <code>Stable</code>์์ <code>Alt</code>๋ก ๋ณ๊ฒฝํ ๊ฒ์ ๋๋ค.</p> <!> <p>๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด <a href="https://huggingface.co/blog/transformers-design-philosophy#4-machine-learning-models-are-static" rel="nofollow">~Donโt~ Repeat Yourself*</a> ๋ธ๋ก๊ทธ ํฌ์คํธ์ ์ด ์น์ ์ ์ฝ์ด๋ณด์ธ์.</p> <!> <p><strong>์ด์๋ฅผ ์ ์์ฑํ ์๋ก ๋น ๋ฅด๊ฒ ํด๊ฒฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.</strong></p> <ol><li>์ด์์ ์ ์ ํ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋์ง ํ์ธํ์ธ์. <a href="https://github.com/huggingface/diffusers/issues/new/choose" rel="nofollow">์ ์ด์๋ฅผ ์ด ๋</a> ์ฌ๋ฐ๋ฅธ ํ ํ๋ฆฟ์ ์ ํํด์ผ ํฉ๋๋ค. <em>๋ฒ๊ทธ ๋ณด๊ณ ์</em>, <em>๊ธฐ๋ฅ ์์ฒญ</em>, <em>API ๋์์ธ์ ๋ํ ํผ๋๋ฐฑ</em>, <em>์๋ก์ด ๋ชจ๋ธ/ํ์ดํ๋ผ์ธ/์ค์ผ์ค๋ฌ ์ถ๊ฐ</em>, <em>ํฌ๋ผ</em>, ๋๋ ๋น ์ด์ ์ค์์ ์ ํํ์ธ์. ์ด์๋ฅผ ์ด ๋ ์ฌ๋ฐ๋ฅธ ํ ํ๋ฆฟ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.</li> <li><strong>๋ช ํ์ฑ</strong>: ์ด์์ ์ ํฉํ ์ ๋ชฉ์ ์ง์ ํ์ธ์. ์ด์ ์ค๋ช ์ ๊ฐ๋ฅํ ๊ฐ๋จํ๊ฒ ์์ฑํ์ธ์. ์ด์๋ฅผ ์ดํดํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๊ฐ๋ฅํ ํ ๋ช ํํ๊ฒ ์์ฑํ์ธ์. ํ๋์ ์ด์์ ๋ํด ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํฌํจํ์ง ์๋๋ก ์ฃผ์ํ์ธ์. ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ, ๊ฐ๊ฐ์ ์ด์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ด์ด์ฃผ์ธ์. ๋ฒ๊ทธ์ธ ๊ฒฝ์ฐ, ์ด๋ค ๋ฒ๊ทธ์ธ์ง ๊ฐ๋ฅํ ํ ์ ํํ๊ฒ ์ค๋ช ํด์ผ ํฉ๋๋ค. โdiffusers์์ ์ค๋ฅโ์ ๊ฐ์ด ๊ฐ๋จํ ์์ฑํ์ง ๋ง์ธ์.</li> <li><strong>์ฌํ ๊ฐ๋ฅ์ฑ</strong>: ์ฌํ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ด ์์ผ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ, ์ ์ง ๊ด๋ฆฌ์๋ ๊ทธ ๋ฒ๊ทธ๋ฅผ ์ฌํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด์์ ์ฌํ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ฝ๋ ์กฐ๊ฐ์ Python ์ธํฐํ๋ฆฌํฐ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์๋ ํํ์ฌ์ผ ํฉ๋๋ค. ์ฝ๋ ์กฐ๊ฐ์ด ์๋ํด์ผ ํฉ๋๋ค. ์ฆ, ๋๋ฝ๋ import๋ ์ด๋ฏธ์ง์ ๋ํ ๋งํฌ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด์์๋ ์ค๋ฅ ๋ฉ์์ง์ ์ ํํ ๋์ผํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ฌํํ๊ธฐ ์ํด ์์ ํ์ง ์๊ณ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์๋ ์ฝ๋ ์กฐ๊ฐ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด์์ ์ฌ์ฉ์์ ๋ก์ปฌ ๋ชจ๋ธ ๊ฐ์ค์น๋ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ ์๊ฐ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ ์ด์๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ๊ณต์ ํ ์ ์๋ ๊ฒฝ์ฐ, ๋๋ฏธ ๋ชจ๋ธ์ด๋ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํด๋ณด์ธ์.</li> <li><strong>๊ฐ๊ฒฐ์ฑ</strong>: ๊ฐ๋ฅํ ํ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ์ฌ ๋ ์๊ฐ ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ฃผ์ธ์. ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ ์ฝ๋๋ ์ ๋ณด๋ ๋ชจ๋ ์ ๊ฑฐํด์ฃผ์ธ์. ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ, ๋ฌธ์ ๋ฅผ ์ค๋ช ํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ์ฝ๋ ์์ ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์. ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ํ์๋ ์์ ํ๋ฆ ์ ์ฒด๋ฅผ ๋ฌธ์ ์ ๋์ง๋ ๊ฒ์ด ์๋๋ผ, ์๋ฌ๊ฐ ๋ฐ์ํ๋ ํ๋ จ ์ฝ๋์ ์ด๋ ๋ถ๋ถ์ด ๋ฌธ์ ์ธ์ง ๋จผ์ ์ดํดํ๊ณ ๋ช ์ค๋ก ์ฌํํด๋ณด์ธ์. ์ ์ฒด ๋ฐ์ดํฐ์ ๋์ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด๋ณด์ธ์.</li> <li>๋งํฌ ์ถ๊ฐํ๊ธฐ. ํน์ ํ ์ด๋ฆ, ๋ฉ์๋, ๋๋ ๋ชจ๋ธ์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ, ๋ ์๊ฐ ๋ ์ ์ดํดํ ์ ์๋๋ก ๋งํฌ๋ฅผ ์ ๊ณตํด์ฃผ์ธ์. ํน์ PR์ด๋ ์ด์๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ, ํด๋น ์ด์์ ๋งํฌ๋ฅผ ๊ฑธ์ด์ฃผ์ธ์. ๋ ์๊ฐ ๋ฌด์์ ๋งํ๋์ง ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์. ์ด์์ ๋งํฌ๋ฅผ ์ถ๊ฐํ ์๋ก ์ข์ต๋๋ค.</li> <li>ํฌ๋งทํ . ์ฝ๋๋ฅผ ํ์ด์ฌ ์ฝ๋ ๊ตฌ๋ฌธ์ผ๋ก, ์๋ฌ ๋ฉ์์ง๋ฅผ ์ผ๋ฐ ์ฝ๋ ๊ตฌ๋ฌธ์ผ๋ก ํ์ํํ์ฌ ์ด์๋ฅผ ๊น๋ํ๊ฒ ์์ฑํ์ธ์. ์์ธํ ๋ด์ฉ์ <a href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" rel="nofollow">GitHub ๊ณต์ ํฌ๋งทํ ๋ฌธ์</a>๋ฅผ ์ฐธ์กฐํ์ธ์.</li> <li>์ฌ๋ฌ๋ถ์ ์ด์๋ฅผ ๋จ์ํ ํด๊ฒฐํด์ผ ํ ํฐ์ผ์ผ๋ก ์๊ฐํ์ง ๋ง๊ณ , ์ ์์ฑ๋ ๋ฐฑ๊ณผ์ฌ์ ํญ๋ชฉ์ผ๋ก ์๊ฐํด๋ณด์ธ์. ์ถ๊ฐ๋ ๋ชจ๋ ์ด์๋ ๊ณต๊ฐ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅํ ์ง์์ ๋ํ ๊ธฐ์ฌ์ ๋๋ค. ์ ์์ฑ๋ ์ด์๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ๋ฉ์ธํ ์ด๋๊ฐ ์ฌ๋ฌ๋ถ์ ์ด์๋ฅผ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๊ฒ ํ ๋ฟ๋ง ์๋๋ผ, ์ ์ฒด ์ปค๋ฎค๋ํฐ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํน์ ์ธก๋ฉด์ ๋ ์ ์ดํดํ ์ ์๋๋ก ๋์์ ์ฃผ๊ฒ ๋ฉ๋๋ค.</li></ol> <!> <ol><li>์นด๋ฉ๋ ์จ์ด ๋์ธ์. ๊ธฐ์กด์ ๋์์ธ ํจํด๊ณผ ๊ตฌ๋ฌธ์ ์ดํดํ๊ณ , ์ฌ๋ฌ๋ถ์ด ์ถ๊ฐํ๋ ์ฝ๋๊ฐ ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค์ ์์ฐ์ค๋ฝ๊ฒ ์ด์ฐ๋ฌ์ง๋๋ก ํด์ผ ํฉ๋๋ค. ๊ธฐ์กด ๋์์ธ ํจํด์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํฌ๊ฒ ๋ค๋ฅธ Pull Request๋ค์ ๋ณํฉ๋์ง ์์ต๋๋ค.</li> <li>๋ ์ด์ ์ฒ๋ผ ์ง์คํ์ธ์. Pull Request๋ ํ๋์ ๋ฌธ์ , ์ค์ง ํ๋์ ๋ฌธ์ ๋ง ํด๊ฒฐํด์ผ ํฉ๋๋ค. โ์ด์ ์ถ๊ฐํ๋ ๊น์ ๋ค๋ฅธ ๋ฌธ์ ๋ ๊ณ ์น์โ๋ ํจ์ ์ ๋น ์ง์ง ์๋๋ก ์ฃผ์ํ์ธ์. ์ฌ๋ฌ ๊ฐ์ ๊ด๋ จ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๋ฒ์ ํด๊ฒฐํ๋ Pull Request๋ค์ ๊ฒํ ํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค.</li> <li>๋์์ด ๋๋ ๊ฒฝ์ฐ, ์ถ๊ฐํ ๋ด์ฉ์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์ ์ฝ๋ ์กฐ๊ฐ์ ์ถ๊ฐํด๋ณด์ธ์.</li> <li>Pull Request์ ์ ๋ชฉ์ ๊ธฐ์ฌ ๋ด์ฉ์ ์์ฝํด์ผ ํฉ๋๋ค.</li> <li>Pull Request๊ฐ ์ด์๋ฅผ ํด๊ฒฐํ๋ ๊ฒฝ์ฐ, Pull Request์ ์ค๋ช ์ ์ด์ ๋ฒํธ๋ฅผ ์ธ๊ธํ์ฌ ์ฐ๊ฒฐ๋๋๋ก ํด์ฃผ์ธ์ (์ด์๋ฅผ ์ฐธ์กฐํ๋ ์ฌ๋๋ค์ด ์์ ์ค์์ ์ ์ ์๋๋ก).</li> <li>์งํ ์ค์ธ ์์ ์ ๋ํ๋ด๋ ค๋ฉด ์ ๋ชฉ์ <code>[WIP]</code>๋ฅผ ์ ๋์ฌ๋ก ๋ถ์ฌ์ฃผ์ธ์. ์ด๋ ์ค๋ณต ์์ ์ ํผํ๊ณ , ๋ณํฉ ์ค๋น๊ฐ ๋ PR๊ณผ ๊ตฌ๋ถํ ์ ์๋๋ก ๋์์ด ๋ฉ๋๋ค.</li> <li><a href="#how-to-write-a-good-issue">์ข์ ์ด์๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ</a>์ ์ค๋ช ๋ ๋๋ก ํ ์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ํ์์ ์ง์ ํด๋ณด์ธ์.</li> <li>๊ธฐ์กด ํ ์คํธ๊ฐ ํต๊ณผํ๋์ง ํ์ธํ์ธ์</li> <li>๋์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ฐ์ง ํ ์คํธ๋ฅผ ์ถ๊ฐํ์ธ์. ํ์ง ํ ์คํธ๊ฐ ์์ผ๋ฉด ๋ณํฉํ ์ ์์ต๋๋ค.</li></ol> <ul><li>์๋ก์ด <code>@slow</code> ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํต๊ณผํ๋์ง ํ์ธํ์ธ์. <code>RUN_SLOW=1 python -m pytest tests/test_my_new_model.py</code>. | |
| CircleCI๋ ๋๋ฆฐ ํ ์คํธ๋ฅผ ์คํํ์ง ์์ง๋ง, GitHub Actions๋ ๋งค์ผ ์คํํฉ๋๋ค!</li></ul> <ol start="10"><li>๋ชจ๋ ๊ณต๊ฐ ๋ฉ์๋๋ ๋งํฌ๋ค์ด๊ณผ ์ ์๋ํ๋ ์ ๋ณด์ฑ docstring์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ์์๋ก <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py" rel="nofollow"><code>pipeline_latent_diffusion.py</code></a>๋ฅผ ์ฐธ์กฐํ์ธ์.</li> <li>๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฐ ๋ถ๋ด์ ์ฃผ๋ ํ์ผ์ด ์ถ๊ฐ๋์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ์ง, ๋น๋์ค ๋ฐ ๊ธฐํ ํ ์คํธ๊ฐ ์๋ ํ์ผ์ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ํ์ผ์ ๋ฐฐ์นํ๊ธฐ ์ํด hf.co ํธ์คํ <code>dataset</code>์ธ <a href="https://huggingface.co/hf-internal-testing" rel="nofollow"><code>hf-internal-testing</code></a> ๋๋ <a href="https://huggingface.co/datasets/huggingface/documentation-images" rel="nofollow">huggingface/documentation-images</a>๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ฐ์ ์ ๋๋ค. | |
| ์ธ๋ถ ๊ธฐ์ฌ์ธ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง๋ฅผ PR์ ์ถ๊ฐํ๊ณ Hugging Face ๊ตฌ์ฑ์์๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ด ๋ฐ์ดํฐ์ ์ผ๋ก ์ด๋ํ๋๋ก ์์ฒญํ์ธ์.</li></ol> <!> <p>์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์, ์ด๋ฏธ ๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ์์ ์ ํ๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๊ธฐ์กด์ PR์ด๋ ์ด์๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์คํ์ง ์์ ๊ฒฝ์ฐ, ํผ๋๋ฐฑ์ ๋ฐ๊ธฐ ์ํด ์ด์๋ฅผ ์ด์ด๋ณด๋ ๊ฒ์ด ํญ์ ์ข์ ์์ด๋์ด์ ๋๋ค.</p> <p>๐งจ Diffusers์ ๊ธฐ์ฌํ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธ์ ์ธ <code>git</code> ์ฌ์ฉ๋ฒ์ ์์์ผ ํฉ๋๋ค. <code>git</code>์ ๊ฐ์ฅ ์ฌ์ด ๋๊ตฌ๋ ์๋์ง๋ง, ๊ฐ์ฅ ํ๋ฅญํ ๋งค๋ด์ผ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ธ์์ <code>git --help</code>์ ์ ๋ ฅํ๊ณ ์ฆ๊ธฐ์ธ์. ์ฑ ์ ์ ํธํ๋ ๊ฒฝ์ฐ, <a href="https://git-scm.com/book/en/v2" rel="nofollow">Pro Git</a>์ ๋งค์ฐ ์ข์ ์ฐธ๊ณ ์๋ฃ์ ๋๋ค.</p> <p>๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ๊ธฐ์ฌ๋ฅผ ์์ํ์ธ์ (<a href="https://github.com/huggingface/diffusers/blob/main/setup.py#L244" rel="nofollow">์ง์๋๋ Python ๋ฒ์ </a>):</p> <ol><li><p>์ ์ฅ์ ํ์ด์ง์์ โForkโ ๋ฒํผ์ ํด๋ฆญํ์ฌ <a href="https://github.com/huggingface/diffusers" rel="nofollow">์ ์ฅ์</a>๋ฅผ ํฌํฌํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋์ ์ฌ๋ณธ์ด GitHub ์ฌ์ฉ์ ๊ณ์ ์ ์์ฑ๋ฉ๋๋ค.</p></li> <li><p>ํฌํฌํ ์ ์ฅ์๋ฅผ ๋ก์ปฌ ๋์คํฌ์ ํด๋ก ํ๊ณ , ๊ธฐ๋ณธ ์ ์ฅ์๋ฅผ ์๊ฒฉ์ผ๋ก ์ถ๊ฐํ์ธ์:</p> <!></li> <li><p>๊ฐ๋ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณด๊ดํ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ์ธ์:</p> <!></li></ol> <p><code>main</code> ๋ธ๋์น ์์์ <strong>์ ๋</strong> ์์ ํ์ง ๋ง์ธ์.</p> <ol start="4"><li><p>๊ฐ์ ํ๊ฒฝ์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ์ธ์:</p> <!></li></ol> <p>๋ง์ฝ ์ ์ฅ์๋ฅผ ์ด๋ฏธ ํด๋ก ํ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด <code>git pull</code>์ ์คํํด์ผ ํ ์๋ ์์ต๋๋ค.</p> <ol start="5"><li>๊ธฐ๋ฅ์ ๋ธ๋์น์์ ๊ฐ๋ฐํ์ธ์.</li></ol> <p>๊ธฐ๋ฅ์ ์์ ํ๋ ๋์ ํ ์คํธ ์ค์ํธ๊ฐ ํต๊ณผ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ฐ๋ ํ ์คํธ๋ฅผ ์คํํด์ผ ํฉ๋๋ค:</p> <!> <p>ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ ์ ํ ์คํธ๋ฅผ ์ํด ํ์ํ ์์กด์ฑ๋ค์ ์ค์นํ์๋์ง ํ์ธํ์ธ์. ๋ค์์ ์ปค๋งจ๋๋ฅผ ํตํด์ ํ์ธํ ์ ์์ต๋๋ค:</p> <!> <p>๋ค์ ๋ช ๋ น์ด๋ก ์ ์ฒด ํ ์คํธ ๋ฌถ์ ์คํํ ์๋ ์์ง๋ง, Diffusers๊ฐ ๋ง์ด ์ฑ์ฅํ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๋นํ ์๊ฐ ๋ด์ ์์ฑํ๊ธฐ ์ํด์๋ ๊ฐ๋ ฅํ ์ปดํจํฐ๊ฐ ํ์ํฉ๋๋ค. ๋ค์์ ํด๋น ๋ช ๋ น์ด์ ๋๋ค:</p> <!> <p>๐งจ Diffusers๋ ์์ค ์ฝ๋๋ฅผ ์ผ๊ด๋๊ฒ ํฌ๋งทํ ํ๊ธฐ ์ํด <code>black</code>๊ณผ <code>isort</code>๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ ์คํ์ผ ์์ ๋ฐ ์ฝ๋ ๊ฒ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค:</p> <!> <p>๐งจ Diffusers <code>ruff</code>์ ๋ช๊ฐ์ ์ปค์คํ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์ฝ๋ฉ ์ค์๋ฅผ ํ์ธํฉ๋๋ค. ํ์ง ์ ์ด๋ CI์์ ์๋ํ์ง๋ง, ๋์ผํ ๊ฒ์ฌ๋ฅผ ๋ค์์ ํตํด์๋ ํ ์ ์์ต๋๋ค:</p> <!> <p>๋ณ๊ฒฝ์ฌํญ์ ๋ํด ๋ง์กฑํ๋ค๋ฉด <code>git add</code>๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ถ๊ฐํ๊ณ <code>git commit</code>์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ๋ํด ๋ก์ปฌ์์ผ๋ก ์ ์ฅํ๋ค:</p> <!> <p>์ฝ๋๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์๋ณธ ์ ์ฅ์์ ๋๊ธฐํํ๋ ๊ฒ์ ์ข์ ์์ด๋์ด์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค:</p> <!> <p>๋ณ๊ฒฝ ์ฌํญ์ ๊ณ์ ์ ํธ์ํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์:</p> <!> <ol start="6"><li><p>๋ง์กฑํ์ จ๋ค๋ฉด, GitHub์์ ํฌํฌํ ์นํ์ด์ง๋ก ์ด๋ํ์ฌ โPull requestโ๋ฅผ ํด๋ฆญํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ๊ฒํ ๋ฅผ ์์ฒญํฉ๋๋ค.</p></li> <li><p>๋ฉ์ธํ ์ด๋๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฒญํ๋ ๊ฒ์ ๊ด์ฐฎ์ต๋๋ค. ํต์ฌ ๊ธฐ์ฌ์๋ค์๊ฒ๋ ์ผ์ด๋๋ ์ผ์ ๋๋ค! ๋ฐ๋ผ์ ๋ณ๊ฒฝ ์ฌํญ์ Pull request์์ ๋ณผ ์ ์๋๋ก ๋ก์ปฌ ๋ธ๋์น์์ ์์ ํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํฌ์ ํธ์ํ๋ฉด ์๋์ผ๋ก Pull request์ ๋ํ๋ฉ๋๋ค.</p></li></ol> <!> <p>๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์๊ณผ ์ฌ๋ฌ ์์ ๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ํฌ๊ด์ ์ธ ํ ์คํธ ๋ฌถ์์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ ์คํธ๋ <a href="https://github.com/huggingface/diffusers/tree/main/tests" rel="nofollow">tests ํด๋</a>์์ ์ฐพ์ ์ ์์ต๋๋ค.</p> <p><code>pytest</code>์ <code>pytest-xdist</code>๋ฅผ ์ ํธํ๋ ์ด์ ๋ ๋ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฃจํธ ๋๋ ํ ๋ฆฌ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํด <code>pytest</code>๋ก ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:</p> <!> <p>์ฌ์ค, <code>make test</code>๋ ์ด๋ ๊ฒ ๊ตฌํ๋์ด ์์ต๋๋ค!</p> <p>์์ ์ค์ธ ๊ธฐ๋ฅ๋ง ํ ์คํธํ๊ธฐ ์ํด ๋ ์์ ํ ์คํธ ์ธํธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.</p> <p>๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฆฐ ํ ์คํธ๋ ๊ฑด๋๋๋๋ค. <code>RUN_SLOW</code> ํ๊ฒฝ ๋ณ์๋ฅผ <code>yes</code>๋ก ์ค์ ํ์ฌ ์คํํ ์ ์์ต๋๋ค. ์ด๋ ๋ง์ ๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋ชจ๋ธ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ์ถฉ๋ถํ ๋์คํฌ ๊ณต๊ฐ๊ณผ ์ข์ ์ธํฐ๋ท ์ฐ๊ฒฐ ๋๋ ๋ง์ ์ธ๋ด์ฌ์ด ํ์ํฉ๋๋ค!</p> <!> <p><code>unittest</code>๋ ์์ ํ ์ง์๋ฉ๋๋ค. ๋ค์์ <code>unittest</code>๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค:</p> <!> <!> <p>upstream ์ ์ฅ์์ ๋ถํ์ํ ์ฐธ์กฐ ๋ ธํธ๋ฅผ ์ถ๊ฐํ๊ณ ๊ด๋ จ ๊ฐ๋ฐ์์๊ฒ ์๋ฆผ์ ๋ณด๋ด๋ ๊ฒ์ ํผํ๊ธฐ ์ํด, | |
| forked ์ ์ฅ์์ main ๋ธ๋์น๋ฅผ ๋๊ธฐํํ ๋ ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์:</p> <ol><li>๊ฐ๋ฅํ ๊ฒฝ์ฐ, forked ์ ์ฅ์์์ ๋ธ๋์น์ PR์ ์ฌ์ฉํ์ฌ upstream๊ณผ ๋๊ธฐํํ๋ ๊ฒ์ ํผํ์ธ์. ๋์ forked main์ผ๋ก ์ง์ ๋ณํฉํ์ธ์.</li> <li>PR์ด ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ, ๋ธ๋์น๋ฅผ ์ฒดํฌ์์ํ ํ ๋ค์ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ธ์:</li></ol> <!> <!> <p>Documentation string์ ๋ํด์๋, ๐งจ Diffusers๋ <a href="https://google.github.io/styleguide/pyguide.html" rel="nofollow">Google ์คํ์ผ</a>์ ๋ฐ๋ฆ ๋๋ค.</p> <!> <p></p>`,1);function He(re,de){Ue(de,!1),je(()=>{new URLSearchParams(window.location.search).get("fw")}),be();var f=Be();Je("110sasa",n=>{var d=Re();Ie(d,"content",_e),i(n,d)});var g=e(pe(f),2);Me(g,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var m=e(g,2);l(m,{title:"Diffusers์ ๊ธฐ์ฌํ๋ ๋ฐฉ๋ฒ ๐งจ",local:"how-to-contribute-to-diffusers-",headingTag:"h1"});var w=e(m,10);l(w,{title:"๊ฐ์",local:"overview",headingTag:"h2"});var b=e(w,12);l(b,{title:"1. Diffusers ํ ๋ก ํฌ๋ผ์ด๋ Diffusers Discord์์ ์ง๋ฌธํ๊ณ ๋ต๋ณํ๊ธฐ",local:"1-asking-and-answering-questions-on-the-diffusers-discussion-forum-or-on-the-diffusers-discord",headingTag:"h3"});var J=e(b,12);l(J,{title:"2. GitHub ์ด์ ํญ์์ ์๋ก์ด ์ด์ ์ด๊ธฐ",local:"2-opening-new-issues-on-the-github-issues-tab",headingTag:"h3"});var M=e(J,12);l(M,{title:"2.1 ์ฌํ ๊ฐ๋ฅํ ์ต์ํ์ ๋ฒ๊ทธ ๋ฆฌํฌํธ",local:"21-reproducible-minimal-bug-reports",headingTag:"h4"});var T=e(M,10);l(T,{title:"2.2. ๊ธฐ๋ฅ ์์ฒญ",local:"22-feature-requests",headingTag:"h4"});var y=e(T,12);l(y,{title:"2.3 ํผ๋๋ฐฑ",local:"23-feedback",headingTag:"h4"});var I=e(y,6);l(I,{title:"2.4 ๊ธฐ์ ์ ์ธ ์ง๋ฌธ",local:"24-technical-questions",headingTag:"h4"});var U=e(I,6);l(U,{title:"2.5 ์๋ก์ด ๋ชจ๋ธ, ์ค์ผ์ค๋ฌ ๋๋ ํ์ดํ๋ผ์ธ ์ถ๊ฐ ์ ์",local:"25-proposal-to-add-a-new-model-scheduler-or-pipeline",headingTag:"h4"});var j=e(U,10);l(j,{title:"3. GitHub ์ด์ ํญ์์ ๋ฌธ์ ์ ๋ํ ๋ต๋ณํ๊ธฐ",local:"3-answering-issues-on-the-github-issues-tab",headingTag:"h3"});var Z=e(j,12);l(Z,{title:"4. โGood first issueโ ๊ณ ์น๊ธฐ",local:"4-fixing-a-good-first-issue",headingTag:"h3"});var G=e(Z,6);l(G,{title:"5. ๋ฌธ์์ ๊ธฐ์ฌํ๊ธฐ",local:"5-contribute-to-the-documentation",headingTag:"h3"});var _=e(G,12);l(_,{title:"6. ์ปค๋ฎค๋ํฐ ํ์ดํ๋ผ์ธ์ ๊ธฐ์ฌํ๊ธฐ",local:"6-contribute-a-community-pipeline",headingTag:"h3"});var R=e(_,8);s(R,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFjbGFzcyUyMFVuZXRTY2hlZHVsZXJPbmVGb3J3YXJkUGlwZWxpbmUoRGlmZnVzaW9uUGlwZWxpbmUpJTNBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiUyQyUyMHVuZXQlMkMlMjBzY2hlZHVsZXIpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoKS5fX2luaXRfXygpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5yZWdpc3Rlcl9tb2R1bGVzKHVuZXQlM0R1bmV0JTJDJTIwc2NoZWR1bGVyJTNEc2NoZWR1bGVyKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">UnetSchedulerOneForwardPipeline</span>(<span class="hljs-title class_ inherited__">DiffusionPipeline</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, unet, scheduler</span>): | |
| <span class="hljs-built_in">super</span>().__init__() | |
| <span class="hljs-variable language_">self</span>.register_modules(unet=unet, scheduler=scheduler)`,lang:"py",wrap:!1});var v=e(R,4);s(v,{code:"JTIwJTIwZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTIwJTIwaW1wb3J0JTIwdG9yY2glMEElMEElMjAlMjBjbGFzcyUyMFVuZXRTY2hlZHVsZXJPbmVGb3J3YXJkUGlwZWxpbmUoRGlmZnVzaW9uUGlwZWxpbmUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiUyQyUyMHVuZXQlMkMlMjBzY2hlZHVsZXIpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3VwZXIoKS5fX2luaXRfXygpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZi5yZWdpc3Rlcl9tb2R1bGVzKHVuZXQlM0R1bmV0JTJDJTIwc2NoZWR1bGVyJTNEc2NoZWR1bGVyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMGRlZiUyMF9fY2FsbF9fKHNlbGYpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjB0b3JjaC5yYW5kbiglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAoMSUyQyUyMHNlbGYudW5ldC5jb25maWcuaW5fY2hhbm5lbHMlMkMlMjBzZWxmLnVuZXQuY29uZmlnLnNhbXBsZV9zaXplJTJDJTIwc2VsZi51bmV0LmNvbmZpZy5zYW1wbGVfc2l6ZSklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGltZXN0ZXAlMjAlM0QlMjAxJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbW9kZWxfb3V0cHV0JTIwJTNEJTIwc2VsZi51bmV0KGltYWdlJTJDJTIwdGltZXN0ZXApLnNhbXBsZSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNjaGVkdWxlcl9vdXRwdXQlMjAlM0QlMjBzZWxmLnNjaGVkdWxlci5zdGVwKG1vZGVsX291dHB1dCUyQyUyMHRpbWVzdGVwJTJDJTIwaW1hZ2UpLnByZXZfc2FtcGxlJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwc2NoZWR1bGVyX291dHB1dA==",highlighted:` <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">class</span> <span class="hljs-title class_">UnetSchedulerOneForwardPipeline</span>(<span class="hljs-title class_ inherited__">DiffusionPipeline</span>): | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, unet, scheduler</span>): | |
| <span class="hljs-built_in">super</span>().__init__() | |
| <span class="hljs-variable language_">self</span>.register_modules(unet=unet, scheduler=scheduler) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self</span>): | |
| image = torch.randn( | |
| (<span class="hljs-number">1</span>, <span class="hljs-variable language_">self</span>.unet.config.in_channels, <span class="hljs-variable language_">self</span>.unet.config.sample_size, <span class="hljs-variable language_">self</span>.unet.config.sample_size), | |
| ) | |
| timestep = <span class="hljs-number">1</span> | |
| model_output = <span class="hljs-variable language_">self</span>.unet(image, timestep).sample | |
| scheduler_output = <span class="hljs-variable language_">self</span>.scheduler.step(model_output, timestep, image).prev_sample | |
| <span class="hljs-keyword">return</span> scheduler_output`,lang:"py",wrap:!1});var V=e(v,4);s(V,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1TY2hlZHVsZXIlMkMlMjBVTmV0MkRNb2RlbCUwQSUwQXNjaGVkdWxlciUyMCUzRCUyMEREUE1TY2hlZHVsZXIoKSUwQXVuZXQlMjAlM0QlMjBVTmV0MkRNb2RlbCgpJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBVbmV0U2NoZWR1bGVyT25lRm9yd2FyZFBpcGVsaW5lKHVuZXQlM0R1bmV0JTJDJTIwc2NoZWR1bGVyJTNEc2NoZWR1bGVyKSUwQW91dHB1dCUyMCUzRCUyMHBpcGVsaW5lKCklMEElMjMlMjBsb2FkJTIwcHJldHJhaW5lZCUyMHdlaWdodHMlMEFwaXBlbGluZSUyMCUzRCUyMFVuZXRTY2hlZHVsZXJPbmVGb3J3YXJkUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMmdvb2dsZSUyRmRkcG0tY2lmYXIxMC0zMiUyMiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUpJTBBb3V0cHV0JTIwJTNEJTIwcGlwZWxpbmUoKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DDPMScheduler, UNet2DModel | |
| scheduler = DDPMScheduler() | |
| unet = UNet2DModel() | |
| pipeline = UnetSchedulerOneForwardPipeline(unet=unet, scheduler=scheduler) | |
| output = pipeline() | |
| <span class="hljs-comment"># load pretrained weights</span> | |
| pipeline = UnetSchedulerOneForwardPipeline.from_pretrained(<span class="hljs-string">"google/ddpm-cifar10-32"</span>, use_safetensors=<span class="hljs-literal">True</span>) | |
| output = pipeline()`,lang:"py",wrap:!1});var W=e(V,4);Te(W,{id:"pipeline type",options:["GitHub pipeline","Hub pipeline"],children:(n,d)=>{var ae=We(),ne=pe(ae);ce(ne,{id:"pipeline type",option:"GitHub pipeline",children:(u,we)=>{var h=ve();i(u,h)},$$slots:{default:!0}});var me=e(ne,2);ce(me,{id:"pipeline type",option:"Hub pipeline",children:(u,we)=>{var h=Ve();i(u,h)},$$slots:{default:!0}}),i(n,ae)},$$slots:{default:!0}});var B=e(W,2);l(B,{title:"7. ํ๋ จ ์์ ์ ๊ธฐ์ฌํ๊ธฐ",local:"7-contribute-to-training-examples",headingTag:"h3"});var X=e(B,12);s(X,{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZodWdnaW5nZmFjZSUyRmRpZmZ1c2Vycw==",highlighted:'git <span class="hljs-built_in">clone</span> https://github.com/huggingface/diffusers',lang:"bash",wrap:!1});var A=e(X,4);s(A,{code:"cGlwJTIwaW5zdGFsbCUyMC1yJTIwJTJGZXhhbXBsZXMlMkYlM0N5b3VyLWV4YW1wbGUtZm9sZGVyJTNFJTJGcmVxdWlyZW1lbnRzLnR4dA==",highlighted:"pip install -r /examples/<your-example-folder>/requirements.txt",lang:"bash",wrap:!1});var C=e(A,14);l(C,{title:"8. โGood second issueโ ๊ณ ์น๊ธฐ",local:"8-fixing-a-good-second-issue",headingTag:"h3"});var N=e(C,4);l(N,{title:"9. ํ์ดํ๋ผ์ธ, ๋ชจ๋ธ, ์ค์ผ์ค๋ฌ ์ถ๊ฐํ๊ธฐ",local:"9-adding-pipelines-models-schedulers",headingTag:"h3"});var H=e(N,16);l(H,{title:"Copied from mechanism",local:"copied-from-mechanism",headingTag:"h4"});var k=e(H,6);s(k,{code:"JTIzJTIwQ29waWVkJTIwZnJvbSUyMGRpZmZ1c2Vycy5waXBlbGluZXMuc3RhYmxlX2RpZmZ1c2lvbi5waXBlbGluZV9vdXRwdXQuU3RhYmxlRGlmZnVzaW9uUGlwZWxpbmVPdXRwdXQlMjB3aXRoJTIwU3RhYmxlLSUzRUFsdCUwQWNsYXNzJTIwQWx0RGlmZnVzaW9uUGlwZWxpbmVPdXRwdXQoQmFzZU91dHB1dCklM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBPdXRwdXQlMjBjbGFzcyUyMGZvciUyMEFsdCUyMERpZmZ1c2lvbiUyMHBpcGVsaW5lcy4lMEElMEElMjAlMjAlMjAlMjBBcmdzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaW1hZ2VzJTIwKCU2MExpc3QlNUJQSUwuSW1hZ2UuSW1hZ2UlNUQlNjAlMjBvciUyMCU2MG5wLm5kYXJyYXklNjApJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTGlzdCUyMG9mJTIwZGVub2lzZWQlMjBQSUwlMjBpbWFnZXMlMjBvZiUyMGxlbmd0aCUyMCU2MGJhdGNoX3NpemUlNjAlMjBvciUyME51bVB5JTIwYXJyYXklMjBvZiUyMHNoYXBlJTIwJTYwKGJhdGNoX3NpemUlMkMlMjBoZWlnaHQlMkMlMjB3aWR0aCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9jaGFubmVscyklNjAuJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbnNmd19jb250ZW50X2RldGVjdGVkJTIwKCU2MExpc3QlNUJib29sJTVEJTYwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMExpc3QlMjBpbmRpY2F0aW5nJTIwd2hldGhlciUyMHRoZSUyMGNvcnJlc3BvbmRpbmclMjBnZW5lcmF0ZWQlMjBpbWFnZSUyMGNvbnRhaW5zJTIwJTIybm90LXNhZmUtZm9yLXdvcmslMjIlMjAobnNmdyklMjBjb250ZW50JTIwb3IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNjBOb25lJTYwJTIwaWYlMjBzYWZldHklMjBjaGVja2luZyUyMGNvdWxkJTIwbm90JTIwYmUlMjBwZXJmb3JtZWQuJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIy",highlighted:'<span class="hljs-comment"># Copied from diffusers.pipelines.stable_diffusion.pipeline_output.StableDiffusionPipelineOutput with Stable->Alt</span>\n<span class="hljs-keyword">class</span> <span class="hljs-title class_">AltDiffusionPipelineOutput</span>(<span class="hljs-title class_ inherited__">BaseOutput</span>):\n <span class="hljs-string">"""\n Output class for Alt Diffusion pipelines.\n\n Args:\n images (`List[PIL.Image.Image]` or `np.ndarray`)\n List of denoised PIL images of length `batch_size` or NumPy array of shape `(batch_size, height, width,\n num_channels)`.\n nsfw_content_detected (`List[bool]`)\n List indicating whether the corresponding generated image contains "not-safe-for-work" (nsfw) content or\n `None` if safety checking could not be performed.\n """</span>',lang:"py",wrap:!1});var P=e(k,4);l(P,{title:"์ข์ ์ด์ ์์ฑ ๋ฐฉ๋ฒ",local:"how-to-write-a-good-issue",headingTag:"h2"});var D=e(P,6);l(D,{title:"์ข์ PR ์์ฑ ๋ฐฉ๋ฒ",local:"how-to-write-a-good-pr",headingTag:"h2"});var x=e(D,8);l(x,{title:"PR์ ์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ",local:"how-to-open-a-pr",headingTag:"h2"});var p=e(x,8),c=e(o(p),2),ue=e(o(c),2);s(ue,{code:"JTI0JTIwZ2l0JTIwY2xvbmUlMjBnaXQlNDBnaXRodWIuY29tJTNBJTNDeW91ciUyMEdpdEh1YiUyMGhhbmRsZSUzRSUyRmRpZmZ1c2Vycy5naXQlMEElMjQlMjBjZCUyMGRpZmZ1c2VycyUwQSUyNCUyMGdpdCUyMHJlbW90ZSUyMGFkZCUyMHVwc3RyZWFtJTIwaHR0cHMlM0ElMkYlMkZnaXRodWIuY29tJTJGaHVnZ2luZ2ZhY2UlMkZkaWZmdXNlcnMuZ2l0",highlighted:`$ git <span class="hljs-built_in">clone</span> git@github.com:<your GitHub handle>/diffusers.git | |
| $ <span class="hljs-built_in">cd</span> diffusers | |
| $ git remote add upstream https://github.com/huggingface/diffusers.git`,lang:"bash",wrap:!1}),t(c);var Y=e(c,2),he=e(o(Y),2);s(he,{code:"JTI0JTIwZ2l0JTIwY2hlY2tvdXQlMjAtYiUyMGEtZGVzY3JpcHRpdmUtbmFtZS1mb3ItbXktY2hhbmdlcw==",highlighted:"$ git checkout -b a-descriptive-name-for-my-changes",lang:"bash",wrap:!1}),t(Y),t(p);var r=e(p,4),Q=o(r),fe=e(o(Q),2);s(fe,{code:"JTI0JTIwcGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QmRldiU1RCUyMg==",highlighted:'$ pip install -e <span class="hljs-string">".[dev]"</span>',lang:"bash",wrap:!1}),t(Q),t(r);var S=e(r,8);s(S,{code:"JTI0JTIwcHl0ZXN0JTIwdGVzdHMlMkYlM0NURVNUX1RPX1JVTiUzRS5weQ==",highlighted:"$ pytest tests/<TEST_TO_RUN>.py",lang:"bash",wrap:!1});var z=e(S,4);s(z,{code:"JTI0JTIwcGlwJTIwaW5zdGFsbCUyMC1lJTIwJTIyLiU1QnRlc3QlNUQlMjI=",highlighted:'$ pip install -e <span class="hljs-string">".[test]"</span>',lang:"bash",wrap:!1});var E=e(z,4);s(E,{code:"JTI0JTIwbWFrZSUyMHRlc3Q=",highlighted:'$ make <span class="hljs-built_in">test</span>',lang:"bash",wrap:!1});var F=e(E,4);s(F,{code:"JTI0JTIwbWFrZSUyMHN0eWxl",highlighted:"$ make style",lang:"bash",wrap:!1});var q=e(F,4);s(q,{code:"JTI0JTIwbWFrZSUyMHF1YWxpdHk=",highlighted:"$ make quality",lang:"bash",wrap:!1});var L=e(q,4);s(L,{code:"JTI0JTIwZ2l0JTIwYWRkJTIwbW9kaWZpZWRfZmlsZS5weSUwQSUyNCUyMGdpdCUyMGNvbW1pdCUyMC1tJTIwJTIyQSUyMGRlc2NyaXB0aXZlJTIwbWVzc2FnZSUyMGFib3V0JTIweW91ciUyMGNoYW5nZXMuJTIy",highlighted:`$ git add modified_file.py | |
| $ git commit -m <span class="hljs-string">"A descriptive message about your changes."</span>`,lang:"bash",wrap:!1});var $=e(L,4);s($,{code:"JTI0JTIwZ2l0JTIwcHVsbCUyMHVwc3RyZWFtJTIwbWFpbg==",highlighted:"$ git pull upstream main",lang:"bash",wrap:!1});var O=e($,4);s(O,{code:"JTI0JTIwZ2l0JTIwcHVzaCUyMC11JTIwb3JpZ2luJTIwYS1kZXNjcmlwdGl2ZS1uYW1lLWZvci1teS1jaGFuZ2Vz",highlighted:"$ git push -u origin a-descriptive-name-for-my-changes",lang:"bash",wrap:!1});var K=e(O,4);l(K,{title:"ํ ์คํธ",local:"tests",headingTag:"h3"});var ee=e(K,6);s(ee,{code:"JTI0JTIwcHl0aG9uJTIwLW0lMjBweXRlc3QlMjAtbiUyMGF1dG8lMjAtLWRpc3QlM0Rsb2FkZmlsZSUyMC1zJTIwLXYlMjAuJTJGdGVzdHMlMkY=",highlighted:"$ python -m pytest -n auto --dist=loadfile -s -v ./tests/",lang:"bash",wrap:!1});var le=e(ee,8);s(le,{code:"JTI0JTIwUlVOX1NMT1clM0R5ZXMlMjBweXRob24lMjAtbSUyMHB5dGVzdCUyMC1uJTIwYXV0byUyMC0tZGlzdCUzRGxvYWRmaWxlJTIwLXMlMjAtdiUyMC4lMkZ0ZXN0cyUyRg==",highlighted:'$ RUN_SLOW=<span class="hljs-built_in">yes</span> python -m pytest -n auto --dist=loadfile -s -v ./tests/',lang:"bash",wrap:!1});var se=e(le,4);s(se,{code:"JTI0JTIwcHl0aG9uJTIwLW0lMjB1bml0dGVzdCUyMGRpc2NvdmVyJTIwLXMlMjB0ZXN0cyUyMC10JTIwLiUyMC12JTBBJTI0JTIwcHl0aG9uJTIwLW0lMjB1bml0dGVzdCUyMGRpc2NvdmVyJTIwLXMlMjBleGFtcGxlcyUyMC10JTIwZXhhbXBsZXMlMjAtdg==",highlighted:`$ python -m unittest discover -s tests -t . -v | |
| $ python -m unittest discover -s examples -t examples -v`,lang:"bash",wrap:!1});var ie=e(se,2);l(ie,{title:"upstream(HuggingFace) main๊ณผ forked main ๋๊ธฐํํ๊ธฐ",local:"syncing-forked-main-with-upstream-huggingface-main",headingTag:"h3"});var oe=e(ie,6);s(oe,{code:"JTI0JTIwZ2l0JTIwY2hlY2tvdXQlMjAtYiUyMHlvdXItYnJhbmNoLWZvci1zeW5jaW5nJTBBJTI0JTIwZ2l0JTIwcHVsbCUyMC0tc3F1YXNoJTIwLS1uby1jb21taXQlMjB1cHN0cmVhbSUyMG1haW4lMEElMjQlMjBnaXQlMjBjb21taXQlMjAtbSUyMCclM0N5b3VyJTIwbWVzc2FnZSUyMHdpdGhvdXQlMjBHaXRIdWIlMjByZWZlcmVuY2VzJTNFJyUwQSUyNCUyMGdpdCUyMHB1c2glMjAtLXNldC11cHN0cmVhbSUyMG9yaWdpbiUyMHlvdXItYnJhbmNoLWZvci1zeW5jaW5n",highlighted:`$ git checkout -b your-branch-for-syncing | |
| $ git pull --squash --no-commit upstream main | |
| $ git commit -m <span class="hljs-string">'<your message without GitHub references>'</span> | |
| $ git push --set-upstream origin your-branch-for-syncing`,lang:"bash",wrap:!1});var te=e(oe,2);l(te,{title:"์คํ์ผ ๊ฐ์ด๋",local:"style-guide",headingTag:"h3"});var ge=e(te,4);ye(ge,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/conceptual/contribution.md"}),Ge(2),i(re,f),Ze()}export{He as component}; | |
Xet Storage Details
- Size:
- 66.1 kB
- Xet hash:
- 275b631443f0e9d98241fcc4160b30b9ad8d6fffcac81462d8ad0e6986cda61d
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.