Home [Week 02 / Day 009] ํ•™์Šต ๊ธฐ๋ก
Post
Cancel

[Week 02 / Day 009] ํ•™์Šต ๊ธฐ๋ก

๐Ÿ“ ์˜ค๋Š˜ ํ•œ ์ผ

  • ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ
  • ๊ธฐ๋ณธ ๊ณผ์ œ 1, 2 ์ œ์ถœ
  • ๊ฐ•์˜ ์ˆ˜๊ฐ• ๋ฐ ํ€ด์ฆˆ
    • [PyTorch 7๊ฐ•]
    • [PyTorch 8๊ฐ•]
  • ํ”ผ์–ด์„ธ์…˜
  • ์˜คํ”ผ์Šค์•„์›Œ


๐Ÿ‘ฅ ํ”ผ์–ด์„ธ์…˜ ์š”์•ฝ

  • Further Question (PyTorch 5๊ฐ•)
    1. DataLoader์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ sampler๋“ค์„ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€ ๊ฐ™์ด ๋…ผ์˜ํ•ด๋ณด์„ธ์š”.
      • ์ฐธ๊ณ  ์ž๋ฃŒ: https://subinium.github.io/pytorch-dataloader/
      • batch์˜ data๊ฐ€ biased ๋˜์–ด ์žˆ์„ ๋•Œ, ๊ท ๋“ฑ ๋ถ„ํฌ๋กœ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
      • sampler์™€ ๋‹ค๋ฅด๊ฒŒ shuffle์€ ์™„์ „ํžˆ ๋žœ๋ค์ด๋‹ค.
      • shuffle=True ์‹œ์—” random sampler์™€ ๊ฐ™๋‹ค.
    2. ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ์— ์˜ฌ๋ฆด ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ Dataset์—์„œ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฒŒ ์ข‹์„์ง€ ๊ฐ™์ด ๋…ผ์˜ํ•ด๋ณด์„ธ์š”.
      • generator๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
      • ์ผ๋ฐ˜์ ์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ path ๊ฒฝ๋กœ๋กœ๋งŒ ์ €์žฅํ•ด๋‘๊ณ , __getitem__ ์•ˆ์—์„œ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์‹์œผ๋กœ ํ•œ๋‹ค.
  • ์ˆ˜์—… ๊ด€๋ จ ์งˆ๋ฌธ & ํ† ์˜
    • ์™œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹ค์ œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ณด๋‹ค ๋” ํฌ๊ฒŒ ์„ค์ •ํ•˜๋Š”๊ฐ€? ๊ทธ๋ฆฌ๊ณ  swap์ด ์ผ์–ด๋‚˜ HDD๋กœ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋˜๋ฉด, ์•ž๋‹จ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ์–ด๋„ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค.
      • OS ๋‹จ์—์„œ๋„ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. (์•ˆ์“ฐ๋Š” memory ์ฃผ๊ธฐ์ ์œผ๋กœ kill)
      • HDD โ†” memory ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋Š” ๊ฒƒ์€ ์†Œ์Šค์ฝ”๋“œ, ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค. ๊ทธ ๋ฐ์ดํ„ฐ๋“ค์€ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ์ด ๋๋‚˜๋„ HDD์— ๋‚จ์•„์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • GIL (์ „์—ญ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฝ)
      • ์ค‘์š”ํ•˜๋‹ค.
      • ํŒŒ์ด์ฌ์ด ๋Š๋ฆฐ ์ด์œ . ํŒŒ์ด์ฌ ์ตœ์ดˆ ๊ตฌํ˜„ ๋‹น์‹œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๋…์ ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. (single process ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•œ๋‹ค.)
      • ๊ทธ ๋‹น์‹œ์—๋Š” CPU ํ•˜๋‚˜๋งŒ ์ผ๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์•˜์ง€๋งŒ, ์ง€๊ธˆ์€ ๋ฉ€ํ‹ฐ์ฝ”์–ด๊ฐ€ ๋‹น์—ฐํ•˜๋ฏ€๋กœ ์ œ์•ฝ์ ์ด ๋œ๋‹ค.
    • DataParallel, DistributedDataParallel์€ ์œˆ๋„์šฐ์—์„œ ์•ˆ๋Œ์•„๊ฐ„๋‹ค.
      • multi-process ๊ธฐ๋ฐ˜์€ ์œˆ๋„์šฐ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ fork๋ฅผ ๊ธˆ์ง€ํ•œ๋‹ค.)
      • Linux๋ฅผ ๋งŽ์ด ์“ฐ๋Š” ์ด์œ ์ด๋‹ค.
    • ๋ชจ๋ธ ๋ณ‘๋ ฌํ™” ๊ด€๋ จ ์˜ˆ์ œ ์ฝ”๋“œ


๐Ÿ“š ๊ณผ์ œ ๋‚ด์šฉ ์ •๋ฆฌ

๋”ฐ๋กœ Notion์— ์ •๋ฆฌ ์ค‘์ด๋‹ค.


๐Ÿพ ์ผ์ผ ํšŒ๊ณ 

๊ฒฐ๊ตญ ์–ด์ œ ๊ณผ์ œ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋ฐค์„ ์ƒœ๋‹คโ€ฆ. ๐Ÿฅฑ ๋‹คํ–‰ํžˆ ๊ณผ์ œ๋ฅผ ๋ชจ๋‘ ์™„๋ฃŒํ•˜๊ณ  ๋ฌด์‚ฌํžˆ ์ œ์ถœํ•˜์˜€์ง€๋งŒ, ํ•˜๋ฃจ์ข…์ผ ์ฒด๋ ฅ์ ์œผ๋กœ ๋„ˆ๋ฌด ํž˜๋“ค์—ˆ๋‹ค. 5๊ฐœ์›” ๋™์•ˆ ๋ถ€์ŠคํŠธ์บ ํ”„๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์•ž์œผ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ๋ฐค์„ ์ƒˆ๋Š” ์ผ์€ ์—†๋„๋ก ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜ ์ €๋…์—๋Š” ๊ธฐ๋ณธ ๊ณผ์ œ์— ๋Œ€ํ•œ ์˜คํ”ผ์Šค์•„์›Œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ gather ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ ธ์—ˆ๋Š”๋ฐ, ์˜คํ”ผ์Šค์•„์›Œ์—์„œ gather ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ค„์ฃผ์…”์„œ ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค! ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ๋‹ค์‹œ ์ •์ƒ์ ์ธ ๋ฃจํ‹ด์„ ์ฐพ์•„์•ผ ๊ฒ ๋‹ค.


๐Ÿš€ ๋‚ด์ผ ํ•  ์ผ

  • ๊ฐ•์˜ ์ˆ˜๊ฐ• & ํ€ด์ฆˆ
    • [PyTorch 9๊ฐ•]
    • [PyTorch 10๊ฐ•]
  • ์ŠคํŽ˜์…œ ํ”ผ์–ด์„ธ์…˜
  • ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค
This post is licensed under CC BY 4.0 by the author.

[Week 02 / Day 008] ํ•™์Šต ๊ธฐ๋ก

[Week 02 / Day 010] ํ•™์Šต ๊ธฐ๋ก