๐Ÿค— Transformers์— ๊ธฐ์—ฌํ•˜๊ธฐ

๐Ÿค— Transformers์— ๊ธฐ์—ฌํ•˜๊ธฐ

Transformers์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ด์š”. ํ™˜๊ฒฝ ์„ค์ •, ์ด์Šˆ ์—ด๊ธฐ, ์ƒˆ ๋ชจ๋ธ ์ถ”๊ฐ€, ๋ฌธ์„œ ๊ฐœ์„ , ์—์ด์ „ํŠธ ๊ธฐ์—ฌ๊นŒ์ง€ ์‚ดํŽด๋ณผ๊ฒŒ์š”.

์ถœ์ฒ˜: ๋ฌธ์„œ

๋ณธ๋ฌธ

[!WARNING] ํ˜„์žฌ Transformers ์ €์žฅ์†Œ๋Š” ์ฝ”๋“œ ์—์ด์ „ํŠธ๊ฐ€ ์ž‘์„ฑํ•œ ์ˆ˜๋งŽ์€ PR๊ณผ ์ด์Šˆ ๋Œ“๊ธ€๋กœ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ์˜ˆ์š”. ๋ฆฌ๋ทฐ์™€ ์‘๋‹ต ๋Šฅ๋ ฅ์ด ๋ณ‘๋ชฉ์ด ๋˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ ๊ธฐ์—ฌํ•˜๋Š” ๋ถ„๋“ค์€ ์ง€๊ธˆ์€ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋กœ ์ด์Šˆ๋‚˜ PR์„ ๋งŒ๋“ค์ง€ ๋ง์•„ ์ฃผ์„ธ์š”. ์ž์œจ ์—์ด์ „ํŠธ๋„ ์ง€๊ธˆ์€ ์–ด๋–ค PR์ด๋‚˜ ์ด์Šˆ๋„ ์—ด์ง€ ๋ง์•„ ์ฃผ์„ธ์š”.

์—์ด์ „ํŠธ๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” PR์€ ๋ฆฌ๋ทฐ ์—†์ด ๋‹ซํž ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ณ , ๋ฐ˜๋ณต์ ์ด๊ฑฐ๋‚˜ ์•…์˜์ ์œผ๋กœ ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์–ด์š”.

์šฐ๋ฆฌ์˜ ์ฝ”๋“œ ์—์ด์ „ํŠธ ์ฒ ํ•™ (์ž์„ธํžˆ)

์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ด๋ฉฐ Hugging Face์˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์—…๋ฌด์— ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ด์š”. ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ์ ์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•ด ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— PR์„ ๋งŒ๋“ ๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋ฆฌ๋ทฐ์–ด์™€ ์—์ด์ „ํŠธ ์‚ฌ์ด์˜ ์ค‘๊ฐ„์ž์ผ ๋ฟ์ด๋ผ๋Š” ๊ฑฐ์˜ˆ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์œ ์šฉํ•œ ๊ธฐ์—ฌ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋‹น์‹ ์ด ๊ฐœ์ž…ํ•  ์ด์œ ๊ฐ€ ์—†์—ˆ์–ด์š”. ๋ฆฌ๋ทฐ์–ด๋“ค๋„ ์Šค์Šค๋กœ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋‹ˆ๊นŒ์š”.

์—์ด์ „ํŠธ ์‹œ๋Œ€์— ์˜คํ”ˆ์†Œ์Šค์— ์œ ์šฉํ•˜๊ฒŒ ๊ธฐ์—ฌํ•˜๋ ค๋ฉด ์—์ด์ „ํŠธ๊ฐ€ ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์„ ํ•ด์•ผ ํ•ด์š”. ํŠนํžˆ ๋‹ค์Œ์ด ๋งค์šฐ ๋„์›€์ด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์–ด์š”:

  • ๋ฒ„๊ทธ์˜ ๋ช…ํ™•ํ•œ ์ง„๋‹จ. ์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ๋ณดํ†ต ์ฝ”๋“œ ๋น„๋Œ€ํ™”๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋ธ๊ณผ์˜ ๋น„ํ˜ธํ™˜์„ ์ผ์œผํ‚ค๋Š” ์ž„์‹œ๋ฐฉํŽธ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ณ ์น˜๊ธธ ์ข‹์•„ํ•ด์š”. ๋ฌธ์ œ์˜ ์ •ํ™•ํ•œ ์›์ธ์„ ์ถ”์ ํ•˜๊ณ , ํŠนํžˆ (git bisect ๊ฐ™์€ ๊ฒƒ์œผ๋กœ) ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์ปค๋ฐ‹์„ ์ฐพ๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์“ฐ๋Š” ๊ฒƒ์ด ๊ฐ€์น˜ ์žˆ์–ด์š”.
  • diff ์ตœ์†Œํ™”. PR์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ณ€๊ฒฝ์„ ์ œ๊ฑฐํ•˜์„ธ์š”. ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๊ด€๋ จ ์—†๋Š” ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ •๋ง ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ฃผ์„์„ ๋‹ฌ๊ณ , ์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ์„ธ ๊ฐœ์˜ ์ƒˆ ํ•จ์ˆ˜์™€ ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ด ์ž์‹ ์ด ํ•œ ํž˜๋“  ์ž‘์—…์— ์ฃผ๋ชฉ์„ ๋Œ๊ธธ ์ข‹์•„ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌ์ง€ ๋งˆ์„ธ์š”. PR์ด 1์ค„ ์ˆ˜์ •์œผ๋กœ ๋๋‚˜๋ฉด 1์ค„ ์ˆ˜์ •์œผ๋กœ ๋งŒ๋“œ์„ธ์š”. ๊ทธ๋Ÿฌ๋ฉด PR ๋ฆฌ๋ทฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง€๊ณ  ์ฑ„ํƒ๋  ๊ฐ€๋Šฅ์„ฑ๋„ ๋†’์•„์ ธ์š”.
  • ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„ ์“ฐ๊ธฐ. ์‚ฌ์šฉ์ž๊ฐ€ ์ด์Šˆ๋ฅผ ๋ณด๊ณ ํ•  ๋•Œ, ์‹ค์ œ๋กœ๋Š” ๊ทธ ๊ธฐ๊ธฐ์˜ ํ™˜๊ฒฝ ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ง„๋‹จํ•ด ์ž˜๋ชป๋œ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์•ˆํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„์ฃผ ํ”ํ•ด์š”. ๋งŽ์€ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ์‚ฌ์šฉ์ž ์ฃผ์„์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‹ ๋ขฐํ•ด์„œ, ๋•Œ๋กœ๋Š” ์กด์žฌํ•˜์ง€๋„ ์•Š๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ํ•ด๊ฒฐ์ฑ…์„ ๋งŒ๋“ค๊ธฐ๋„ ํ•ด์š”! ๊ฐ„๋‹จํ•œ ์žฌํ˜„์šฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ด ๋ฌธ์ œ๋ฅผ ์‹ค์ œ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜ ์žˆ์–ด์š”.
  • ๋‹ค๋ฅธ ๋ชจ๋ธ๊ณผ ๋น„๊ต. Transformers ์ €์žฅ์†Œ๋Š” ๋งค์šฐ ํฌ๊ณ  ๋งŽ์€ ๋ชจ๋ธ์ด ๋น„์Šทํ•œ ์ผ์„ ํ•ด์š”. ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น  ๋•Œ ๋‹ค๋ฅธ ๋ชจ๋ธ์—๋„ ๊ฐ™์€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜ ์žˆ์–ด์š”. PR์ด "(๋‹ค๋ฅธ ๋ชจ๋ธ)๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •"์ด๋ผ๊ณ  ๊ด€๋ จ ์ฝ”๋“œ ๋งํฌ์™€ ํ•จ๊ป˜ ์ ์–ด ์ฃผ๋ฉด ๋ฉ”์ธํ…Œ์ด๋„ˆ์—๊ฒŒ ๋งค์šฐ ๋„์›€์ด ๋ผ์š”. ์ˆ˜์ •์ด ์ •ํ™•ํ•˜๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚˜๋จธ์ง€์™€ ํ˜ธํ™˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ฑฐ๋“ ์š”. ์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ์ฝ”๋“œ๋ฅผ '์ข๊ฒŒ' ๋ณด๊ณ  ์ˆ˜์ •ํ•ด์„œ ๋ชจ๋ธ์ด ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚˜๋จธ์ง€์™€ ์–ด๊ธ‹๋‚˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์š”.
  • ์ž‘๊ณ  '๋ถ€์ˆ˜์ ์ธ(busywork)' PR ํ”ผํ•˜๊ธฐ. ๊ณผ๊ฑฐ์—๋Š” ์ด๋Ÿฐ ๊ฒƒ๋„ ๋ฐ›์•˜์ง€๋งŒ, ์ง€๊ธˆ์˜ ํ™์ˆ˜ ์ƒํ™ฉ์—์„œ๋Š” ์‚ฌ์†Œํ•œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ์ด๋‚˜ ์ฃผ์„์˜ ์˜คํƒ€๋ฅผ ๊ณ ์น  ์‹œ๊ฐ„์ด ์—†์–ด์š”. ๋ฌด์—‡์ด ์ •๋ง ์ค‘์š”ํ•œ์ง€์— ๋Œ€ํ•œ ์ข‹์€ ์•ˆ๋ชฉ๋งŒ์œผ๋กœ๋„ ์ฝ”๋“œ ์—์ด์ „ํŠธ๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ฝ”๋“œ ์—์ด์ „ํŠธ๋Š” ์ฝ”๋“œ ๋ถ„์„์œผ๋กœ ์ฐพ์•„๋‚ธ '์ด๋ก ์  ๋ฒ„๊ทธ'์— ์ง‘์ค‘ํ•˜๊ธฐ ์‰ฌ์šด๋ฐ, ์ด๋Ÿฐ ๋ฒ„๊ทธ๋Š” ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์–ด์š”. ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋ณดํ†ต ๊ณ ์น  ๊ฐ€์น˜๊ฐ€ ์—†์–ด์š”.
  • ๋กœ์ปฌ๊ณผ CI์—์„œ ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ. PR์„ ์—ด๊ธฐ ์ „์— make fix-repo๋ฅผ ์‹คํ–‰ํ•˜๊ณ  utils/tests_fetcher.py๋ฅผ ์‚ฌ์šฉํ•ด PR ๋ธŒ๋žœ์น˜์—์„œ ๋ณ€๊ฒฝํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ํ…Œ์ŠคํŠธ ๋ชฉ๋ก์„ ํ™•์ธํ•˜์„ธ์š”. ๊ทธ ํ…Œ์ŠคํŠธ๋“ค์„ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•ด PR์„ ์—ด๊ธฐ ์ „์— ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. PR์„ ์—ฐ ๋’ค์—๋Š” CI๊ฐ€ ์ดˆ๋ก์ƒ‰์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ๋ฅผ ๊ณ ์น˜์„ธ์š”! ์ด๋Ÿฌ๋ฉด ์•Œ๋ฆผ ์ŠคํŒธ์ด ํฌ๊ฒŒ ์ค„์–ด ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์ •์‹ ์„ ์ฐจ๋ฆด ์ˆ˜ ์žˆ์–ด์š”.

Transformers๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •, ๊ธฐ๋Šฅ ์š”์ฒญ, ์ƒˆ ๋ชจ๋ธ ๊ตฌํ˜„, ๋ฌธ์„œ ๊ฐœ์„  ๋“ฑ ๋ชจ๋“  ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ด์š”.

์–ด๋””์„œ ์‹œ์ž‘ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ์ดˆ๋ณด์ž ์นœํ™”์ ์ธ Good First Issues๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ๋” ๋„์ „์ ์ธ ์ด์Šˆ๋Š” Good Second Issues๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์—ฌํ•˜๋“  ์šฐ๋ฆฌ์˜ ํ–‰๋™ ๊ฐ•๋ น(code of conduct)์„ ์กด์ค‘ํ•ด ์ฃผ์„ธ์š”.

Transformers๋ฅผ ์ฆ๊ฒจ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ์ธ์šฉํ•˜๊ณ  ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๊ฑฐ๋‚˜, Twitter์—์„œ ์–ธ๊ธ‰ํ•˜๊ฑฐ๋‚˜, ์ €์žฅ์†Œ์— ์Šคํƒ€๋ฅผ ๋‚จ๊ฒจ ์ฃผ์„ธ์š”!

์ด ๊ฐ€์ด๋“œ๋Š” scikit-learn์˜ ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ์—์„œ ํฌ๊ฒŒ ์˜๊ฐ์„ ๋ฐ›์•˜์–ด์š”.

๋ชฉ์ฐจ (Contents)

  1. ํ™˜๊ฒฝ ์„ค์ • (Set up)
  2. ์ด์Šˆ ์—ด๊ธฐ (Opening issues)
  3. ์ƒˆ ๋ชจ๋ธ ์ถ”๊ฐ€ (Adding a new model)
  4. ๋ฌธ์„œ (Docs)
  5. ์—์ด์ „ํŠธ ๊ธฐ์—ฌ (Agentic contributions)

ํ™˜๊ฒฝ ์„ค์ • (Set up)

  1. GitHub์˜ Fork ๋ฒ„ํŠผ์œผ๋กœ Transformers๋ฅผ ํฌํฌํ•ด ๊ณ„์ • ์•„๋ž˜์— ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“  ๋’ค ๋กœ์ปฌ์— ํด๋ก ํ•ด์š”.
git clone [email protected]:<your Github handle>/transformers.git
cd transformers
  1. Transformers ์ €์žฅ์†Œ๋ฅผ upstream์ด๋ผ๋Š” ๋ฆฌ๋ชจํŠธ๋กœ ์ถ”๊ฐ€ํ•ด์š”. origin์€ ๋‹น์‹ ์˜ ํฌํฌ๋ฅผ, upstream์€ ์›๋ณธ ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌ์ผœ์š”. ๊ทธ๋Ÿฌ๋ฉด origin์— ํ‘ธ์‹œํ•˜๊ณ  PR์„ ์—ด๊ธฐ ์ „์— ๋กœ์ปฌ main์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”.
git remote add upstream https://github.com/huggingface/transformers.git
git remote -v
# origin    [email protected]:<your Github handle>/transformers.git (fetch)
# origin    [email protected]:<your Github handle>/transformers.git (push)
# upstream  https://github.com/huggingface/transformers.git (fetch)
# upstream  https://github.com/huggingface/transformers.git (push)
  1. ํฌํฌ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ณ  ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์š”. GitHub UI์˜ Sync fork ๋ฒ„ํŠผ์œผ๋กœ ํฌํฌ๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”.
git checkout main && git pull upstream main && git push origin main
git switch -c a-descriptive-name-for-my-branch
  1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ editable ๋ชจ๋“œ๋กœ ์„ค์น˜ํ•ด์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—ฌ์—๋Š” [dev]๋ฅผ ์“ฐ๋Š”๋ฐ, ์Šคํƒ€์ผยทํ’ˆ์งˆ ๊ฒ€์‚ฌ์— ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”. ๋ชจ๋ธ ๊ธฐ์—ฌ์—๋Š” [torch,testing]์„, ๋ฌธ์„œ ์ „์šฉ ๋ณ€๊ฒฝ๊ณผ ์ž‘์€ ์ˆ˜์ •(์ „์ฒด ๊ฐœ๋ฐœ ์˜์กด์„ฑ ์„ธํŠธ๊ฐ€ ํ•„์š” ์—†์„ ๋•Œ)์—๋Š” [quality]๋ฅผ ์‚ฌ์šฉํ•ด์š”.
pip install -e ".[dev]"

# for model contributions
pip install -e ".[torch,testing]"

# for docs-only changes and small fixes
pip install -e ".[quality]"

Windows

Windows์—์„œ๋Š” WSL์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด git์ด CRLF ์ค„๋ฐ”๊ฟˆ์„ LF๋กœ ๋ณ€ํ™˜ํ•˜๋„๋ก ์„ค์ •ํ•ด์š”.

git config core.autocrlf input

Windows์—์„œ make ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” MSYS2๋ฅผ ์“ฐ๋Š” ๊ฑฐ์˜ˆ์š”.

  1. MSYS2 ๋‹ค์šด๋กœ๋“œ (์šฐ๋ฆฌ๋Š” C:\msys64์— ์„ค์น˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด์š”).
  2. ๋ช…๋ น์ค„ C:\msys64\msys2.exe๋ฅผ ์—ฝ๋‹ˆ๋‹ค (Start ๋ฉ”๋‰ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ).
  3. ์…ธ์—์„œ pacman -Syu ์‹คํ–‰ ํ›„ pacman -S make๋กœ make๋ฅผ ์„ค์น˜ํ•ด์š”.
  4. C:\msys64\usr\bin์„ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์š”.

์ด์ œ ์–ด๋–ค ํ„ฐ๋ฏธ๋„(PowerShell, cmd.exe ๋“ฑ)์—์„œ๋„ make๋ฅผ ์“ธ ์ˆ˜ ์žˆ์–ด์š”.

์ด์Šˆ ์—ด๊ธฐ (Opening issues)

์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”.

์ด์Šˆ๋ฅผ ์—ด๊ธฐ ์ „์— ๋ฒ„๊ทธ๊ฐ€ ์ด๋ฏธ ๋ณด๊ณ ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š” (GitHub์˜ Issues ์•„๋ž˜ ๊ฒ€์ƒ‰ ๋ฐ”๋ฅผ ์‚ฌ์šฉ). ์ด์Šˆ๋Š” Transformers์˜ ๋ฒ„๊ทธ์—ฌ์•ผ์ง€, ๋‹น์‹  ์ฝ”๋“œ์˜ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•ด์š”.

๋ฒ„๊ทธ๊ฐ€ ๋‚ด ์ฝ”๋“œ์ธ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋จผ์ € ํฌ๋Ÿผ์ด๋‚˜ Discord์—์„œ ๋ฌผ์–ด๋ด์š”. ๊ทธ๋Ÿฌ๋ฉด GitHub๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์Šˆ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋น ๋ฅธ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋‹ค์Œ์„ ํฌํ•จํ•ด ์ฃผ์„ธ์š”.

  • ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ OS ์ข…๋ฅ˜์™€ ๋ฒ„์ „, Python, PyTorch ๋ฒ„์ „.
  • ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์งง๊ณ  ์ž์กฑ์ ์ธ(self-contained) ์ฝ”๋“œ ์Šค๋‹ˆํŽซ.
  • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ „์ฒด traceback.
  • ์Šคํฌ๋ฆฐ์ƒท ๊ฐ™์€, ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐํƒ€ ์ •๋ณด.

OS์™€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์„ ์ž๋™์œผ๋กœ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์š”.

transformers env

๊ธฐ๋Šฅ ์š”์ฒญ (Feature request)

์ด์Šˆ๋ฅผ ์—ด๊ณ  ๋‹ค์Œ์„ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”:

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ถˆ๋งŒ, ํ”„๋กœ์ ํŠธ ํ•„์š”, ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€์ด ๋  ๋งŒํ•œ ์ž‘์—… ๊ฐ™์€ ๋™๊ธฐ(motivation).
  • ๊ฐ€๋Šฅํ•œ ํ•œ ์ƒ์„ธํ•œ ๊ธฐ๋Šฅ.
  • ๊ธฐ๋Šฅ ์‚ฌ์šฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ.
  • ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ๊ด€๋ จ ๋…ผ๋ฌธ ๋งํฌ.

์ƒˆ ๋ชจ๋ธ ์ถ”๊ฐ€ (Adding a new model)

Transformers์— ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๊ทธ ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์™€ ํŒŒ์ธํŠœ๋‹ํ•˜๊ฑฐ๋‚˜ ์ถ”๋ก ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์š”. ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ๋‹น์‹ ์˜ ์•„ํ‚คํ…์ฒ˜์™€ Transformers์— ์ด๋ฏธ ์žˆ๋Š” ์ตœ์‹  state-of-the-art ๋ชจ๋ธ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ๋ถ„๋ฆฌํ•ด ๋ณด์„ธ์š”. ๊ทธ ์ฐจ์ด๋ฅผ ์ด์Šˆ๋‚˜ PR์—์„œ ์„ค๋ช…ํ•ด์„œ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ด ๋ชจ๋ธ์ด ๊ฐ€์ ธ์˜ค๋Š” ๋„์ „ ๊ณผ์ œ, ๊ธฐ์กด ํŒจํ„ด์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„, ๋ชจ๋ธ ๊ฐ„์— ํ‘œ์ค€ํ™”ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์š”.

์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ผ์š”.

  1. ๋ชจ๋“ˆ์‹ Transformers๋กœ ๋ชจ๋ธ ์ถ”๊ฐ€ โ€” ๋ชจ๋“ˆ์‹ ํŒŒ์ผ๋กœ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋…๋ฆฝํ˜• modeling ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์š”.
  2. docstring ์ž๋™ ์ƒ์„ฑ โ€” @auto_docstring ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์—†์ด ์ผ๊ด€๋œ docstring์„ ์ƒ์„ฑํ•ด์š”.
  3. ํ…Œ์ŠคํŒ… โ€” ์ •ํ™•์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ  ๊ธฐ์—ฌ๋ฅผ ์œ ์ง€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑยท์‹คํ–‰ํ•ด์š”. ์ธ๊ณผ ์–ธ์–ด ๋ชจ๋ธ์—์„œ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด causal LM tester๋ฅผ ์ƒ์†ํ•ด์š”. ์ „์ฒด processor, tokenizer, ๋ชจ๋ธ ๊ฒฝ๋กœ๋ฅผ ์‹ค์ œ ์ฒดํฌํฌ์ธํŠธ๋กœ ๊ฒ€์ฆํ•˜๋ฏ€๋กœ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์šฐ์„ ํ•ด์š”.
  4. ๋ชจ๋ธ ๊ตฌ์กฐ ๊ทœ์น™ โ€” ํŒŒ์ผ์ด make typing์ด ์‹œํ–‰ํ•˜๋Š” ์ •์  ๋ชจ๋ธ ๊ตฌ์กฐ ๊ทœ์น™์„ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•ด์š”.

์ผ๋ถ€ ๋ชจ๋ธ ์ถ”๊ฐ€๋Š” ์ถ”๊ฐ€์ ์ธ ํ†ตํ•ฉ ์ž‘์—…์ด ํ•„์š”ํ•ด์š”.

๋ชจ๋ธ ์ถ”๊ฐ€ ํƒ€์ž„๋ผ์ธ (Model addition timeline)

๋ชจ๋ธ ๊ธฐ์—ฌ์ž์™€ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ˆ˜์š”์— ๋”ฐ๋ผ ๋ชจ๋ธ ์ถ”๊ฐ€์—๋Š” ๋„ค ๊ฐ€์ง€ ํƒ€์ž„๋ผ์ธ์ด ์žˆ์–ด์š”.

  • Day-0 ํ†ตํ•ฉ: ์ƒˆ ๋ฒ„์ „ ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ์ถœ์‹œ์ผ์— ๋ชจ๋ธ์„ Transformers์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์š”. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ(์–‘์žํ™”, FlashAttention, KV-cache ๋“ฑ) ์ง€์›, ์ดˆ๊ธฐ ์ดˆ์•ˆ ๋ฆฌ๋ทฐ๋ฅผ ๋„์™€์ฃผ๊ณ , ํƒ€์ž„๋ผ์ธ์— ๋”ฐ๋ผ ๋ชจ๋ธ ๊ตฌํ˜„๋„ ๋งก์„ ์ˆ˜ ์žˆ์–ด์š”.

    ์ƒˆ ์•„ํ‚คํ…์ฒ˜๋ผ๋ฉด ํŠนํžˆ ๋ช‡ ์ฃผ ์ „์— [email protected]๋กœ ๋ฉ”์ผ์„ ๋ณด๋‚ด์š”. ์ฒดํฌํฌ์ธํŠธ์™€ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ฐœ์ธ ํฌํฌ์—์„œ ํ•จ๊ป˜ ๋ฐ˜๋ณต ์ž‘์—…ํ• ๊ฒŒ์š”.

  • Same-week ํ†ตํ•ฉ: ์ˆ˜์š”๊ฐ€ ๋†’์€ ๋ชจ๋ธ์€ ์ž‘์„ฑ์ž๊ฐ€ ์—ฐ๋ฝํ•˜์ง€ ์•Š์•„๋„ ๋ณดํ†ต ์ผ์ฃผ์ผ ์•ˆ์— ๋“ค์–ด์™€์š”.

    ์ƒˆ ๋ชจ๋ธ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ด์Šˆ๋ฅผ ์—ด์–ด ์š”์ฒญํ•˜์„ธ์š”. ํ™œ๋™์ด ๋งŽ์€ ์ด์Šˆ์ผ์ˆ˜๋ก ํ์—์„œ ๋” ๋นจ๋ฆฌ ์˜ฌ๋ผ์™€์š”.

  • Post-release ํ†ตํ•ฉ: ์ˆ˜์š”๊ฐ€ ๊ฐ•ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ๋งก์„ ์—ฌ๋ ฅ์ด ์—†๋Š” ๋ชจ๋ธ์€ ์—…์ŠคํŠธ๋ฆผ ๋ฆด๋ฆฌ์Šค ์ดํ›„์— ๋“ค์–ด์™€์š”.

    ์—ด๋ ค ์žˆ๋Š” "New model" ํƒœ๊ทธ ์ด์Šˆ๊ฐ€ ์™ธ๋ถ€ ๊ธฐ์—ฌ์ž์˜ ์ง„์ž…์ ์ด์—์š”. ์˜ํ–ฅ๋ ฅ์„ ์ตœ๋Œ€ํ™”ํ•˜๋ ค๋ฉด ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋œ ์•„ํ‚คํ…์ฒ˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋ฆฌ๋ทฐํ•˜๊ณ  ์•ˆ๋‚ดํ•ด ๋“œ๋ฆด๊ฒŒ์š”.

  • Hub-first ๋ฆด๋ฆฌ์Šค: ์—…์ŠคํŠธ๋ฆผ PR ์—†์ด Transformers์˜ remote-code ์ง€์›์„ ํ†ตํ•ด ๋ชจ๋ธ์„ Hub์— ์ง์ ‘ ์ถœ์‹œํ•ด์š”.

    ์ธ๊ธฐ ์žˆ๋Š” Hub-first ๋ชจ๋ธ์€ ๋‚˜์ค‘์— Transformers์— ํ†ตํ•ฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์ผ๊ธ‰(first-class) ๋ฌธ์„œ, ์œ ์ง€๋ณด์ˆ˜, ์ตœ์ ํ™”๊ฐ€ ์—ด๋ ค์š”. Hub-first๋Š” ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ€์žฅ ๋งˆ์ฐฐ์ด ์ ์€ ๋ฐฉ๋ฒ•์ด์—์š”. ๋‹ค๋งŒ ๋ชจ๋ธ์ด ๊ฐ€์ค‘์น˜ ๋ณ€ํ™˜์ด๋‚˜ ๋‹ค๋ฅธ ํ•˜์œ„ ํ˜ธํ™˜ ๋ฌธ์ œ๋ฅผ ์š”๊ตฌํ•˜๋ฉด ๋” ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋ฌธ์„œ (Docs)

์˜คํƒ€, ๋น ์ง„ ๋‚ด์šฉ, ๋ถˆ๋ช…ํ™•ํ•œ ์„ค๋ช… ๊ฐ™์€ ๋ฌธ์„œ ๊ฐœ์„ ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ด์š”. ์†Œ์Šค ํŒŒ์ผ์—์„œ ์ƒ์„ฑ๋˜๋Š” API ์ฐธ์กฐ๋Š” ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ @auto_docstring ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜๋ฏธ ์žˆ๋Š” ๋ฌธ์„œ ์ˆ˜์ •์€ PR์„ ์ง์ ‘ ์—ด์–ด ์ฃผ์„ธ์š”.

๋ฌธ์„œ ํŽธ์ง‘ ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌธ์„œ README๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์—์ด์ „ํŠธ ๊ธฐ์—ฌ (Agentic contributions)

AI ์ง€์› ๊ธฐ์—ฌ๋Š” ํ™˜์˜ํ•ด์š”. ๋ฆฌ๋ทฐ ๋ถ€๋‹ด์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์กฐ์ •๋˜๊ณ , ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ง€๊ณ , ๊ฒ€์ฆ๋˜์–ด์•ผ ํ•ด์š”.

  • "์ˆœ์ˆ˜ ์—์ด์ „ํŠธ" PR์„ ์ œ์ถœํ•˜์ง€ ๋งˆ์„ธ์š”. ์ œ์ถœ์ž๋Š” ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ์ค„์„ ๊ฒ€ํ† ํ•˜๊ณ , ๋™์ž‘์„ end-to-end๋กœ ๊ฒ€์ฆํ•˜๊ณ , ๊ด€๋ จ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ฑ…์ž„์ด ์žˆ์–ด์š”.
  • AI ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด PR ์„ค๋ช…์— ์ด๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์กฐ์ • ๋งํฌ, ๊ธฐ์กด PR๊ณผ์˜ ์ฐจ๋ณ„์ (ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ), ํ…Œ์ŠคํŠธ ๋ช…๋ นยท๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•˜์„ธ์š”.
  • ์ผํšŒ์„ฑ '๋ถ€์ˆ˜์ ์ธ(busywork)' PR(๋‹จ์ผ ์˜คํƒ€, ๊ณ ๋ฆฝ๋œ ์Šคํƒ€์ผ ์ •๋ฆฌ, ๋‹จ์ผ mutable ๊ธฐ๋ณธ๊ฐ’ ์ˆ˜์ • ๋“ฑ)์„ ํ”ผํ•˜์„ธ์š”. ๊ธฐ๊ณ„์ ์ธ ์ •๋ฆฌ๋Š” ๋ช…ํ™•ํ•˜๊ณ  ์ฒด๊ณ„์ ์ธ ๋ฒ”์œ„๋กœ ๋ฌถ์œผ์„ธ์š”.
  • PR์„ ์—ด๊ธฐ ์ „์— ์ด์Šˆ์—์„œ ์กฐ์ •ํ•˜๊ณ , ๋น„์Šทํ•œ PR์„ ๊ฒ€ํ† ํ•˜๊ณ , ์Šน์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์„ธ์š”.

[!NOTE] ์ด๋Ÿฌํ•œ ์ฃผ์ œ๋Š” AGENTS.md์—์„œ ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ๊ฐœ์š”๊ฐ€ ์ •๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ž์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ด ์žˆ์–ด์š”.

๋” ์•Œ์•„๋ณด๊ธฐ (Learn more)