้กน็›ฎๆ–‡ไปถๅคน

ๆ–‡ไปถ
wehub-resource-sync e06fe8e8c6
Secret Leaks / trufflehog (push) Failing after 1s
Build documentation / build (push) Failing after 1s
Build documentation / build_other_lang (push) Failing after 0s
CodeQL Security Analysis / CodeQL Analysis (push) Failing after 0s
PR CI / pr-ci (push) Failing after 1s
Slow tests on important models (on Push - A10) / Get all modified files (push) Failing after 1s
Slow tests on important models (on Push - A10) / Model CI (push) Has been skipped
Self-hosted runner (benchmark) / Benchmark (aws-g5-4xlarge-cache) (push) Has been cancelled
New model PR merged notification / Notify new model (push) Has been cancelled
Update Transformers metadata / build_and_package (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:57:37 +08:00

12 KiB

Pull Request์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ checks-on-a-pull-request

๐Ÿค— Transformers์—์„œ Pull Request๋ฅผ ์—ด ๋•Œ, ๊ธฐ์กด์— ์žˆ๋Š” ๊ฒƒ์„ ๋ง๊ฐ€๋œจ๋ฆฌ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋‹นํ•œ ์ˆ˜์˜ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  • ์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ
  • ๋ฌธ์„œ ๋นŒ๋“œ
  • ์ฝ”๋“œ ๋ฐ ๋ฌธ์„œ ์Šคํƒ€์ผ
  • ์ผ๋ฐ˜ ์ €์žฅ์†Œ ์ผ๊ด€์„ฑ

์ด ๋ฌธ์„œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ๊ฒ€์‚ฌ์™€ ๊ทธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ , PR์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ ๋กœ์ปฌ์—์„œ ์–ด๋–ป๊ฒŒ ๋””๋ฒ„๊ทธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐœ๋ฐœ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

pip install transformers[dev]

๋˜๋Š” Transformers ์ €์žฅ์†Œ ๋‚ด์— ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

pip install -e ".[dev]"

Transformers์˜ ์„ ํƒ์  ์ข…์†์„ฑ ์ˆ˜๊ฐ€ ๋งŽ์ด ๋Š˜์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์„ค์น˜๋ฅผ ์‹คํŒจํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์„ค์น˜๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ, ์ž‘์—… ์ค‘์ธ Deep Learning ํ”„๋ ˆ์ž„์›Œํฌ (PyTorch, TensorFlow ๋ฐ/๋˜๋Š” Flax)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

pip install transformers[quality]

ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜์˜ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

pip install -e ".[quality]"

ํ…Œ์ŠคํŠธ tests

ci/circleci: run_tests_๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ Transformers ํ…Œ์ŠคํŠธ ๋ชจ์Œ์˜ ์ผ๋ถ€๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ํŠน์ • ํ™˜๊ฒฝ์—์„œ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ci/circleci: run_tests_pipelines_tf๋Š” TensorFlow๋งŒ ์„ค์น˜๋œ ํ™˜๊ฒฝ์—์„œ ํŒŒ์ดํ”„๋ผ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ์—์„œ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์„ ๋•Œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด, ํ…Œ์ŠคํŠธ ๋ชจ์Œ์˜ ์ผ๋ถ€๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์ „ํ›„์— ๋Œ€ํ•œ ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ํ•ด๋‹น ์ฐจ์ด์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋กœ์ปฌ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

python utils/tests_fetcher.py

Transformers ์ €์žฅ์†Œ์˜ ์ตœ์ƒ๋‹จ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ํŒŒ์ผ๋งˆ๋‹ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฝ”๋“œ์ธ์ง€ ์ฃผ์„ ๋˜๋Š” ๋ฌธ์„œ ๋ฌธ์ž์—ด์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ํŒŒ์ผ๋งŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  2. ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์˜ ๊ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ๋‚ด๋ถ€ ๋งต์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ B๊ฐ€ ๋ชจ๋“ˆ A๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ๋ชจ๋“ˆ A๋Š” ๋ชจ๋“ˆ B์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ์žฌ๊ท€์ ์ธ ์˜ํ–ฅ์—๋Š” ๊ฐ ๋ชจ๋“ˆ์ด ์ด์ „ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ชจ๋“ˆ ์ฒด์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹จ๊ณ„ 1์—์„œ ์ˆ˜์ง‘ํ•œ ํŒŒ์ผ์— ์ด ๋งต์„ ์ ์šฉํ•˜์—ฌ PR์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋ชจ๋ธ ํŒŒ์ผ ๋ชฉ๋ก์„ ์–ป์Šต๋‹ˆ๋‹ค.
  4. ๊ฐ ํŒŒ์ผ์„ ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ŠคํŠธ ํŒŒ์ผ์— ๋งคํ•‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹จ๊ณ„ 1, 3 ๋ฐ 4์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ๋˜ํ•œ test_list.txt๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ ๋ชฉ๋ก์„ ํฌํ•จํ•˜๋ฉฐ, ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

python -m pytest -n 8 --dist=loadfile -rA -s $(cat test_list.txt)

์ž˜๋ชป๋œ ์‚ฌํ•ญ์ด ๋ˆ„๋ฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ, ์ „์ฒด ํ…Œ์ŠคํŠธ ๋ชจ์Œ๋„ ๋งค์ผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋นŒ๋“œ documentation-build

build_pr_documentation ์ž‘์—…์€ ๋ฌธ์„œ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ PR์ด ๋ณ‘ํ•ฉ๋œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋ด‡์€ PR์— ๋ฌธ์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. PR์—์„œ ๋งŒ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ž๋™์œผ๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ๋นŒ๋“œ์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํด๋ฆญํ•˜์—ฌ ์–ด๋””์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ์ฃผ๋กœ toctree์— ๋ˆ„๋ฝ๋œ ํŒŒ์ผ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ๋ฌธ์„œ๋ฅผ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ๋ณผ ๊ฒฝ์šฐ, docs ํด๋”์˜ README.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ”๋“œ ๋ฐ ๋ฌธ์„œ ์Šคํƒ€์ผ code-and-documentation-style

black๊ณผ ruff๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์†Œ์Šค ํŒŒ์ผ, ์˜ˆ์ œ ๋ฐ ํ…Œ์ŠคํŠธ์— ์ฝ”๋“œ ํ˜•์‹์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, utils/style_doc.py์—์„œ ๋ฌธ์„œ ๋ฌธ์ž์—ด๊ณผ rst ํŒŒ์ผ์˜ ํ˜•์‹, ๊ทธ๋ฆฌ๊ณ  Transformers์˜ __init__.py ํŒŒ์ผ์—์„œ ์‹คํ–‰๋˜๋Š” ์ง€์—ฐ๋œ ์ž„ํฌํŠธ์˜ ์ˆœ์„œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋‹ค์Œ์„ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

make style

CI๋Š” ์ด๋Ÿฌํ•œ ์‚ฌํ•ญ์ด ci/circleci: check_code_quality ๊ฒ€์‚ฌ ๋‚ด์—์„œ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ruff๋„ ์‹คํ–‰๋˜๋ฉฐ, ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒ€์‚ฌ๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

make check-repo

์ด ๋ช…๋ น์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ถ”๊ฐ€์ ์ธ ๊ฒ€์‚ฌ๋„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ด๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ์ผ๊ด€์„ฑ repository-consistency

์ด๋Š” PR์ด ์ €์žฅ์†Œ๋ฅผ ์ •์ƒ์ ์ธ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ์€ ๊ฒƒ์ด๋ฉฐ, ci/circleci: check_repository_consistency ๊ฒ€์‚ฌ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ๋กœ์ปฌ์—์„œ ์ด ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

make check-repo

์ด ๊ฒ€์‚ฌ๋Š” ๋‹ค์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • init์— ์ถ”๊ฐ€๋œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋ฌธ์„œํ™”๋˜์—ˆ๋Š”์ง€ (utils/check_repo.py์—์„œ ์ˆ˜ํ–‰)
  • __init__.py ํŒŒ์ผ์˜ ๋‘ ์„น์…˜์— ๋™์ผํ•œ ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€ (utils/check_inits.py์—์„œ ์ˆ˜ํ–‰)
  • ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ๋ณต์‚ฌ๋œ ์ฝ”๋“œ๊ฐ€ ์›๋ณธ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ (utils/check_copies.py์—์„œ ์ˆ˜ํ–‰)
  • ๋ชจ๋“  ๊ตฌ์„ฑ ํด๋ž˜์Šค์— docstring์— ์–ธ๊ธ‰๋œ ์œ ํšจํ•œ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์ ์–ด๋„ ํ•˜๋‚˜ ์žˆ๋Š”์ง€ (utils/check_config_docstrings.py์—์„œ ์ˆ˜ํ–‰)
  • ๋ชจ๋“  ๊ตฌ์„ฑ ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋ธ๋ง ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ (utils/check_config_attributes.py์—์„œ ์ˆ˜ํ–‰)
  • README์™€ ๋ฌธ์„œ ์ธ๋ฑ์Šค์˜ ๋ฒˆ์—ญ์ด ๋ฉ”์ธ README์™€ ๋™์ผํ•œ ๋ชจ๋ธ ๋ชฉ๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ (utils/check_copies.py์—์„œ ์ˆ˜ํ–‰)
  • ๋ฌธ์„œ์˜ ์ž๋™ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์ด ์ตœ์‹  ์ƒํƒœ์ธ์ง€ (utils/check_table.py์—์„œ ์ˆ˜ํ–‰)
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์„ ํƒ์  ์ข…์†์„ฑ์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ (utils/check_dummies.py์—์„œ ์ˆ˜ํ–‰)

์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ, ์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ํ•ญ๋ชฉ์€ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ๋‚˜๋จธ์ง€ ๋„ค ๊ฐ€์ง€ ํ•ญ๋ชฉ์€ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

make fix-repo

์ถ”๊ฐ€์ ์ธ ๊ฒ€์‚ฌ๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” PR์— ๋Œ€ํ•œ ๊ฒƒ์œผ๋กœ, ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ถ”๊ฐ€๋œ ๋ชจ๋“  ๋ชจ๋ธ์ด Auto-mapping์— ์žˆ๋Š”์ง€ (utils/check_repo.py์—์„œ ์ˆ˜ํ–‰)
  • ๋ชจ๋“  ๋ชจ๋ธ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ๋˜์—ˆ๋Š”์ง€ (utils/check_repo.py์—์„œ ์ˆ˜ํ–‰)

๋ณต์‚ฌ๋ณธ ํ™•์ธ check-copies

Transformers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋ธ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋งค์šฐ ์™„๊ณ ํ•˜๋ฉฐ, ๊ฐ ๋ชจ๋ธ์€ ๋‹ค๋ฅธ ๋ชจ๋ธ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์™„์ „ํžˆ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๊ตฌํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ชจ๋ธ์˜ ์ฝ”๋“œ ๋ณต์‚ฌ๋ณธ์ด ์›๋ณธ๊ณผ ์ผ๊ด€๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ชจ๋ธ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ชจ๋“  ๋ชจ๋ธ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜์ •์„ ์ ์šฉํ• ์ง€ ์ˆ˜์ •๋œ ์‚ฌ๋ณธ์„ ์‚ญ์ œํ• ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์ด ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ์™„์ „ํ•œ ์‚ฌ๋ณธ์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ์„ utils/check_copies.py์˜ FULL_COPIES ์ƒ์ˆ˜์— ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ # Copied from xxx ํ˜•์‹์˜ ์ฃผ์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. xxx์—๋Š” ์•„๋ž˜์— ๋ณต์‚ฌ๋˜๋Š” ํด๋ž˜์Šค ๋˜๋Š” ํ•จ์ˆ˜์˜ ์ „์ฒด ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด RobertaSelfOutput์€ BertSelfOutput ํด๋ž˜์Šค์˜ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—์„œ ์ฃผ์„์ด ์žˆ์Šต๋‹ˆ๋‹ค:

# Copied from transformers.models.bert.modeling_bert.BertSelfOutput

ํด๋ž˜์Šค ์ „์ฒด์— ์ˆ˜์ •์„ ์ ์šฉํ•˜๋Š” ๋Œ€์‹ ์— ๋ณต์‚ฌ๋ณธ๊ณผ ๊ด€๋ จ์žˆ๋Š” ๋ฉ”์„œ๋“œ์— ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๊ธฐ์—์„œ RobertaPreTrainedModel._init_weights๊ฐ€ BertPreTrainedModel์˜ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ์—์„œ ๋ณต์‚ฌ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ฃผ์„์ด ์žˆ์Šต๋‹ˆ๋‹ค:

# Copied from transformers.models.bert.modeling_bert.BertPreTrainedModel._init_weights

๋ณต์‚ฌ๋ณธ์ด ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: ์˜ˆ๋ฅผ ๋“ค์–ด RobertaAttention์—์„œ BertSelfAttention ๋Œ€์‹  RobertaSelfAttention์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ทธ ์™ธ์—๋Š” ์ฝ”๋“œ๊ฐ€ ์™„์ „ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค: ์ด ๋•Œ # Copied from์€ Copied from xxx with foo->bar์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด ๋Œ€์ฒด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  foo ์ธ์Šคํ„ด์Šค๋ฅผ bar๋กœ ๋ฐ”๊ฟ”์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# Copied from transformers.models.bert.modeling_bert.BertAttention with Bert->Roberta

ํ™”์‚ดํ‘œ ์ฃผ๋ณ€์—๋Š” ๊ณต๋ฐฑ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ณต๋ฐฑ์ด ๋Œ€์ฒด ํŒจํ„ด์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค).

๋Œ€์ฒด ํŒจํ„ด์„ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CamemberForMaskedLM์€ ๋‘ ๊ฐ€์ง€ ๋Œ€์ฒด ์‚ฌํ•ญ์„ ๊ฐ€์ง„ RobertaForMaskedLM์˜ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค: Roberta๋ฅผ Camembert๋กœ ๋Œ€์ฒดํ•˜๊ณ  ROBERTA๋ฅผ CAMEMBERT๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ด๊ฒƒ์ด ์ฃผ์„์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# Copied from transformers.models.roberta.modeling_roberta.RobertaForMaskedLM with Roberta->Camembert, ROBERTA->CAMEMBERT

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ(์ด์ „ ์ˆ˜์ •๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ) ์ˆ˜์ •์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ณ€๊ฒฝ์ด ์„œ์‹์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ(์งง์€ ์ด๋ฆ„์„ ๋งค์šฐ ๊ธด ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ) ์ž๋™ ์„œ์‹ ์ง€์ •๊ธฐ๋ฅผ ์ ์šฉํ•œ ํ›„ ๋ณต์‚ฌ๋ณธ์ด ๊ฒ€์‚ฌ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ„ด์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ(๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๊ฐ€ ํ˜ผ์šฉ๋œ ๋Œ€์ฒด ์–‘์‹) all-casing ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ MobileBertForSequenceClassification์—์„œ ์‚ฌ์šฉ๋œ ์˜ˆ์‹œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# Copied from transformers.models.bert.modeling_bert.BertForSequenceClassification with Bert->MobileBert all-casing

์ด ๊ฒฝ์šฐ, ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค:

  • MobileBert์—์„œ Bert๋กœ(์˜ˆ: MobileBertModel์„ init์—์„œ ์‚ฌ์šฉํ•  ๋•Œ)
  • mobilebert์—์„œ bert๋กœ(์˜ˆ: self.mobilebert๋ฅผ ์ •์˜ํ•  ๋•Œ)
  • MOBILEBERT์—์„œ BERT๋กœ(MOBILEBERT_INPUTS_DOCSTRING ์ƒ์ˆ˜์—์„œ)