Skip to content

Latest commit

ย 

History

History
57 lines (42 loc) ยท 3.26 KB

custom_ops_landing_page.rst

File metadata and controls

57 lines (42 loc) ยท 3.26 KB

PyTorch ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž

PyTorch๋Š” Tensor์—์„œ ๋™์ž‘ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์—ฐ์‚ฐ์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: torch.add, torch.sum ๋“ฑ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PyTorch์— ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์„ ๋„์ž…ํ•˜์—ฌ torch.compile, autograd ๋ฐ torch.vmap ์™€ ๊ฐ™์€ ์„œ๋ธŒ์‹œ์Šคํ…œ์—์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด, ํŒŒ์ด์ฌ torch.library docs ๋ฌธ์„œ ๋˜๋Š” C++ TORCH_LIBRARY API๋ฅผ ํ†ตํ•ด PyTorch์— ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์„ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž ์ž‘์„ฑ

:ref:`python-custom-ops-tutorial`๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ํŒŒ์ด์ฌ(C++์™€ ๋ฐ˜๋Œ€)์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • PyTorch๊ฐ€ ๋ถˆํˆฌ๋ช…ํ•œ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋ ค๋Š” ํŒŒ์ด์ฌ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ํŠนํžˆ torch.compile ๋ฐ ``torch.export``๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
  • C++/CUDA ์ปค๋„์— ๋Œ€ํ•œ ํŒŒ์ด์ฌ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์œผ๋ฉฐ PyTorch ์„œ๋ธŒ์‹œ์Šคํ…œ (์˜ˆ: torch.compile ๋˜๋Š” torch.autograd)์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • C++ ๋ฐ/๋˜๋Š” CUDA ์ฝ”๋“œ์™€ PyTorch ํ†ตํ•ฉ

:ref:`cpp-custom-ops-tutorial`๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

C++(ํŒŒ์ด์ฌ๊ณผ ๋ฐ˜๋Œ€)์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ: - ์‚ฌ์šฉ์ž ์ง€์ • C++ ๋ฐ/๋˜๋Š” CUDA ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ - ์ด ์ฝ”๋“œ๋ฅผ ``AOTInductor``์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ด์ฌ ์—†์ด ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ

์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž ์„ค๋ช…์„œ

ํŠœํ† ๋ฆฌ์–ผ๊ณผ ์ด ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ์ •๋ณด๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. The Custom Operators Manual (์ •๋ณด๋ฅผ ๋ฌธ์„œ ์‚ฌ์ดํŠธ๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.) ์œ„์˜ ํŠœํ† ๋ฆฌ์–ผ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋จผ์ € ์ฝ์€ ๋‹ค์Œ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค; ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฝ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋Š” ์–ธ์ œ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์—ฐ์‚ฐ์ด ๋‚ด์žฅ๋œ ํŒŒ์ดํ† ์น˜ ์—ฐ์‚ฐ์ž์˜ ๊ตฌ์„ฑ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ํŒŒ์ด์ฌ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•˜์—ฌ ํ˜ธ์ถœํ•˜์„ธ์š”. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์—ฐ์‚ฐ์ž ๋“ฑ๋ก API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. PyTorch๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: ์‚ฌ์šฉ์ž ์ง€์ • C/C++ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ์ปค์Šคํ…€ CUDA ์ปค๋„ ๋˜๋Š” C/C++/CUDA ํ™•์žฅ์— ๋Œ€ํ•œ ํŒŒ์ด์ฌ ๋ฐ”์ธ๋”ฉ).

์‚ฌ์šฉ์ž ์ง€์ • ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Tensor์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํ„ฐ๋ฅผ ์žก์•„ C/C++/CUDA ์ปค๋„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ pybind ์ปค๋„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ autograd, torch.compile, vmap ๋“ฑ๊ณผ ๊ฐ™์€ PyTorch ์„œ๋ธŒ์‹œ์Šคํ…œ๊ณผ๋Š” ๊ตฌ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PyTorch ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์—ฐ์‚ฐ์ž ๋“ฑ๋ก API๋ฅผ ํ†ตํ•ด ์ž‘์—…์„ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.