๋™์•„๋ฆฌ,ํ•™ํšŒ/Naver AI Tech

PyTorch ์†Œ๊ฐœ

egahyun 2025. 9. 1. 23:51

[ PyTorch ์†Œ๊ฐœ ]

01. Pytorch๋ž€?

: ํŽ˜์ด์Šค๋ถ (FAIR) ์—์„œ ๊ฐœ๋ฐœํ•œ  ์‹ ๊ฒฝ๋ง ๊ตฌ์ถ•์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ๋”ฅ ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ

  1. ์žฅ์ 
    • ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค
    • ๋™์  ๊ณ„์‚ฐ ๊ทธ๋ž˜ํ”„ : ์‚ฌ์ „์— ๊ตฌ์„ฑํ•œ ๋‹ค์Œ ์‹คํ–‰ ์‹œ, ์„ธ์…˜ ์‹คํ–‰์„ ํ•˜์ง€ ์•Š๊ณ , ๊ตฌ์ฒด์ ์ธ ๊ฐ’์„ ์ฆ‰์‹œ ๋ฐ˜ํ™˜
    • ์ปค๋ฎค๋‹ˆํ‹ฐ, ์ƒํƒœ๊ณ„๊ฐ€ ๋งŽ๊ณ , ํ™œ๋ฐœํžˆ ์šด์˜๋จ
    • ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚จ : ๋‹ค์–‘ํ•œ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐ€๋Šฅ
  2. ๋‹จ์ 
    • ๋ชจ๋ฐ”์ผ, ์›น ๋“ฑ ๋ฐฐํฌ๊ฐ€ ์–ด๋ ค์›€
    • ๋‚ฎ์€ ์ˆ˜์ค€์˜ API๋ฅผ ์ œ๊ณตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํ•™์Šต ๋ฃจํ”„๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„, ์‚ฌ๋žŒ๋“ค๋งˆ๋‹ค train ์‹œํ‚ค๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ค ์ œ๊ฐ๊ฐ์ž„

 

02. Architecture

(์ถœ์ฒ˜ : https://se.ewi.tudelft.nl/desosa2019/chapters/pytorch/)

  1. Top-level API
    • ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด API๋ฅผ ์ œ๊ณต
    • interface๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์‹ค์ œ ๊ณ„์‚ฐ์€ ์•ˆํ•จ → C++๋กœ ์ž‘์„ฑ๋œ ๊ณ„์‚ฐ ์—”์ง„์œผ๋กœ ์ „๋‹ฌ
  2. Mid-level engine
    • top-level๊ณผ python API๋กœ ์—ฐ๊ฒฐ๋จ
    • autograd DCG๋ฅผ ๊ณ„์‚ฐ
    • ์ž๋™ ๋ฏธ๋ถ„์„ ์ œ๊ณต
  3. Low-level library
    • engine๊ณผ l๊ณผ python API๋กœ ์—ฐ๊ฒฐ๋จ
    • ์‚ฌ์šฉ์ž์˜ ํ…์„œ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” C, Gpu๋ฅผ ๋‹ด๋‹นํ•˜๋Š” Cuda๋ฅผ ํฌํ•จํ•จ
    • ์‹ค์ œ ํ•˜๋“œ์›จ์–ด์™€ ์—ฐ๊ฒฐ๋˜์–ด ๊ตฌ๋™๋จ
    • Top-level API, Mid-level engine ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ → ์ฝ”๋“œ ๊ฒฐํ•ฉ๋„ ↓, ๋ณต์žก์„ฑ ↓

 

03. Tensorflow vs Pytorch

๊ณ„์‚ฐ ๊ทธ๋ž˜ํ”„ ์ •์˜ ๋ฐฉ์‹ ์ •์  ๊ทธ๋ž˜ํ”„ ๋™์  ๊ทธ๋ž˜ํ”„
๋ฐฐํฌ ๋‚œ์ด๋„ ํ•˜ ์ƒ
๋„๊ตฌ TorchVision, TorchText, Lightning TensorBoard, TF Lite, TF JS, TFX, Serving
์ถ”์ฒœ ์‚ฌ์šฉ์ž ํŒ€๋ผ๋ฆฌ ํ‘œ์ค€ํ™”๋œ ์ฝ”๋“œ ์‚ฌ์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ python์ด ์นœ์ˆ™ํ•œ ์ดˆ๋ณด ์‚ฌ์šฉ์ž, ์—ฐ๊ตฌ์ž

 


[ PyTorch์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ]

01. ์ •์ˆ˜ํ˜•

: ์†Œ์ˆ˜ ๋ถ€๋ถ„์ด ์—†๋Š” ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…

๋น„ํŠธ ๊ตฌ๋ถ„ ํ‘œํ˜„ ๊ฐ€๋Šฅ ๋ฒ”์œ„ ์ฝ”๋“œ ํ‘œํ˜„

  ๋น„ํŠธ ๊ตฌ๋ถ„ ํ‘œํ˜„ ๊ฐ€๋Šฅ ๋ฒ”์œ„ ์ฝ”๋“œ ํ‘œํ˜„
8bit ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜ 8 ์ˆซ์ž 0 ~ 255 dtype = torch.uint8
8bit ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ 1 ๋ถ€ํ˜ธ +7 ์ˆซ์ž -128 ~ 127 dtype = torch.int8
16bit ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ 1 ๋ถ€ํ˜ธ +15 ์ˆซ์ž -32768 ~ 32767 dtype = torch.int16
dtype = torch.short
32bit ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ 1 ๋ถ€ํ˜ธ +31 ์ˆซ์ž -2,147,483,648 ~ 2,147,483,647 dtype = torch.int32
dtype = torch.int
64bit ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ 1 ๋ถ€ํ˜ธ +63 ์ˆซ์ž -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 dtype = torch.int64
dtype = torch.long

 

 

02. ์‹ค์ˆ˜ํ˜•

  ๋น„ํŠธ ๊ตฌ๋ถ„ ์ฝ”๋“œ ํ‘œํ˜„
16๋น„ํŠธ ๊ณ ์ • ์†Œ์ˆ˜์  ์ˆ˜ ์ •์ˆ˜๋ถ€ + ์†Œ์ˆ˜๋ถ€ X
32bit ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆ˜ ๋ถ€ํ˜ธ 1bit + ์ง€์ˆ˜๋ถ€ 8bit + ๊ฐ€์ˆ˜๋ถ€ 23bit dtype = torch.float32
dtype = torch.float
64bit ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆ˜ ๋ถ€ํ˜ธ 1bit + ์ง€์ˆ˜๋ถ€ 11bit + ๊ฐ€์ˆ˜๋ถ€ 52bit dtype = torch.float64
dtype = torch.double

 

  • ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆ˜๋ž€?
    1. ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ : ๊ณ ์ • ์†Œ์ˆ˜์  ์ˆ˜์˜ ๋ฌธ์ œ์  ํ•ด๊ฒฐ
    2. ๋ฐฉ์‹ : ์ˆซ์ž๋ฅผ ์ •๊ทœํ™” ํ•˜์—ฌ ๊ฐ€์ˆ˜๋ถ€์™€ ์ง€์ˆ˜๋ถ€๋กœ ๋‚˜๋ˆ„์–ด ํ‘œํ˜„
    3. ์ •๊ทœํ™” ๋ฐฉ๋ฒ• : ์†Œ์ˆ˜์ ์ด ์ฒซ๋ฒˆ์งธ ์œ ํšจ์ˆซ์ž ๋ฐ”๋กœ ๋’ค์— ์˜ค๋„๋ก ๋ฐ”๊ฟˆ
    4. ๊ณ ์ • ์†Œ์ˆ˜์  vs ๋ถ€๋™ ์†Œ์ˆ˜์ 
      ์ถœ์ฒ˜ : https://wikidocs.net/189025

 

 

 


 

'๋™์•„๋ฆฌ,ํ•™ํšŒ > Naver AI Tech' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Streamlit ์†Œ๊ฐœ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ  (0) 2025.11.21