๐Ÿ‘ฉโ€๐ŸŽจ ๊ฒฝ๋Ÿ‰ํ™”

๊น€์ˆ˜์ง„ยท2025๋…„ 12์›” 22์ผ

๊ฒฝ๋Ÿ‰ํ™”

๊ฒฝ๋Ÿ‰ํ™”.. ์šฐ๋ฆฌ ํŒ€ ํ”„๋กœ์ ํŠธ ์ฃผ์ œ์ด๋‹ค. ๋ญ”๊ฐ€ ์–ด๋ ค์›Œ ๋ณด์—ฌ์„œ, ์šฐ๋ฆฌ ํŒ€์€ ๊ฒฝ๋Ÿ‰ํ™”์— ๋Œ€ํ•œ ๋…ผ๋ฌธ์„ ์ฝ์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
๋…ผ๋ฌธ์€ 2๊ฐœ๋ฅผ ์ฝ์–ด๋ณด์•˜๋‹ค.
๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์„ ์ •ํ•œ ๊ฒฝ๋Ÿ‰ํ™” ๋…ผ๋ฌธ 2๊ฐœ์ด๋‹ค.

๊ฒฝ๋Ÿ‰ํ™”์˜ ํ•„์š”์„ฑ

ํ˜„์žฌ ์—ฌ๋Ÿฌ ์ธ๊ณต์ง€๋Šฅ ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํž˜์„ ์“ด๋‹ค. ์ด์— ๋”ฐ๋ฅธ ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜ ์ฆ๊ฐ€์™€ ์—ฐ์‚ฐ๋Ÿ‰ ์ฆ๊ฐ€๋ฅผ ๋™๋ฐ˜ํ•˜๋ฉฐ, ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

  • ๋ชจ๋ฐ”์ผยท์ž„๋ฒ ๋””๋“œยท์—ฃ์ง€ ๋””๋ฐ”์ด์Šค์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ค์›€....
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ์ „๋ ฅ ์†Œ๋น„ ์ฆ๊ฐ€
  • ์‹ค์‹œ๊ฐ„ ์ถ”๋ก (latency) ์š”๊ตฌ๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ์–ด๋ ค์›€...
    ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ์—ฐ๊ตฌ ๋ฐฉํ–ฅ์ด ๋ฐ”๋กœ ๋ชจ๋ธ ๊ฒฝ๋Ÿ‰ํ™”(Model Compression / Lightweight Model)์ด๋‹ค.

๊ฒฝ๋Ÿ‰ํ™” ์—ฐ๊ตฌ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•ด ์™”๋‹ค.

  • ๋ชจ๋ธ ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ด๋ฏธ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์••์ถ•ยท๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
    ์ด ๋‘ ๋ฐฉํ–ฅ์„ ๋Œ€ํ‘œํ•˜๋Š” ๋…ผ๋ฌธ์ด ๊ฐ๊ฐ
    -> SqueezeNet (2016)
    -> Pruning & Quantization Survey (2021)
    ์ด๋‹ค.

SqueezeNet

๋ฌธ์ œ ์ธ์‹

โ€œ์ •ํ™•๋„๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ๋ชจ๋ธ ์ž์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ›จ์”ฌ ์ž‘๊ฒŒ ์„ค๊ณ„ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?โ€
์ฆ‰, ํ•™์Šต ์ดํ›„์˜ ์••์ถ•์ด ์•„๋‹ˆ๋ผ, ๊ตฌ์กฐ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ์˜ ๊ฒฝ๋Ÿ‰ํ™”๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด Squeezenet์˜ ๋ชฉํ‘œ์ด๋‹ค.

SqueezeNet์˜ ํ•ต์‹ฌ ์„ค๊ณ„ ์ „๋žต

๊ทธ๋ ‡๋‹ค๋ฉด SqueezeNet์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์กฐ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ๊ฒฝ๋Ÿ‰ํ™”๋ฅผ ํ• ๊นŒ?
SqueezeNet์€ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

  1. 3ร—3 Convolution ์ตœ์†Œํ™”, 1ร—1 Convolution ์ ๊ทน ํ™œ์šฉ

CNN์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋Š” ์ปค๋„ ํฌ๊ธฐ์— ํฌ๊ฒŒ ์˜์กดํ•œ๋‹ค.
3ร—3 Conv โ†’ ํŒŒ๋ผ๋ฏธํ„ฐ ๋งŽ์Œ
1ร—1 Conv โ†’ ํŒŒ๋ผ๋ฏธํ„ฐ ๋งค์šฐ ์ ์Œ
SqueezeNet์€ 1ร—1 Convolution์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ๋Ÿ‰๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.
ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ ์–ด์ง€๋ฉด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด ์ƒ๊ธธ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ๋…ผ๋ฌธ์—์„œ๋Š” ์กฐ๊ฑด๋งŒ ๋งž์ถ”๋ฉด ์ •ํ™•๋„ ์œ ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

  1. Fire Module ๊ตฌ์กฐ ๋„์ž…

SqueezeNet์˜ ํ•ต์‹ฌ์€ Fire Module์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ธ”๋ก์ด๋‹ค.
Fire Module์€ ๋‹ค์Œ ๋‘ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
1. Squeeze ๋‹จ๊ณ„
โ†’ 1ร—1 Conv๋ฅผ ์‚ฌ์šฉํ•ด ์ฑ„๋„ ์ˆ˜๋ฅผ ์ค„์ž„
2. Expand ๋‹จ๊ณ„
โ†’ 1ร—1 Conv + 3ร—3 Conv๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‚ฌ์šฉํ•ด ํŠน์ง•์„ ํ™•์žฅ
์ด ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด 3ร—3 Conv ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ํ‘œํ˜„๋ ฅ์€ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธ€๋กœ๋งŒ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€์„œ ์ธํ„ฐ๋„ท์— ์ •ํ™•ํ•œ ๊ฐœ๋…์„ ์ฐพ์•„๋ณด์•˜๋‹ค.

์œ„ ๊ทธ๋ฆผ์€ 1ร—1 Convolution์„ ์ด์šฉํ•ด ์ž…๋ ฅ ์ฑ„๋„ ์ˆ˜๋ฅผ ๋จผ์ € ๊ฐ์†Œ์‹œํ•œ ํ›„, ํฐ ์ปค๋„(5ร—5)์„ ์ ์šฉํ•œ ์—ฐ์‚ฐ ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ์ด๋‹ค. ์ด ๊ทธ๋ฆผ์„ ๋ณด๊ฒŒ ๋˜๋ฉด, ๋™์ผํ•œ ์ถœ๋ ฅ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์—ฐ์‚ฐ๋Ÿ‰์„ ๋Œ€ํญ ์ค„์ผ ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

  1. ๋‹ค์šด์ƒ˜ํ”Œ๋ง์„ ๋„คํŠธ์›Œํฌ ๋’ค์ชฝ์œผ๋กœ ์ง€์—ฐ

์ผ๋ฐ˜์ ์ธ CNN์€ ์ดˆ๋ฐ˜๋ถ€ํ„ฐ pooling์ด๋‚˜ stride๋ฅผ ์‚ฌ์šฉํ•ด feature map ํฌ๊ธฐ๋ฅผ ์ค„์ธ๋‹ค.
SqueezeNet์€ ๋‹ค์šด์ƒ˜ํ”Œ๋ง์„ ๋’ค๋กœ ๋ฏธ๋ค„ ํฐ feature map์„ ์˜ค๋ž˜ ์œ ์ง€ํ•จ์œผ๋กœ์จ ์ •ํ™•๋„ ์†์‹ค์„ ์ค„์ธ๋‹ค.

SqueezeNet์˜ ์˜์˜

  • AlexNet๊ณผ ์œ ์‚ฌํ•œ ์ •ํ™•๋„ ๋‹ฌ์„ฑ
  • ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜ ์•ฝ 50๋ฐฐ ๊ฐ์†Œ
  • ๋ชจ๋ธ ํฌ๊ธฐ ์•ฝ 0.5MB ์ดํ•˜
    ํ•˜์ง€๋งŒ ๋™์‹œ์— ํ•œ๊ณ„๋„ ์กด์žฌํ•œ๋‹ค.

๊ตฌ์กฐ์  ๊ฒฝ๋Ÿ‰ํ™”์˜ ํ•œ๊ณ„

์ด๋ฏธ ํ•™์Šต๋œ ๋Œ€ํ˜• ๋ชจ๋ธ์„ ๊ผญ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?๊ฐ€ ์˜๋ฌธ์ด๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ์ œ์˜์‹์—์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ชจ๋ธ ์••์ถ• ๊ธฐ๋ฐ˜ ๊ฒฝ๋Ÿ‰ํ™” ๊ธฐ๋ฒ•, ์ฆ‰, Pruning๊ณผ Quantization์ด๋‹ค.

๊ธฐ๋ฒ•์  ๊ฒฝ๋Ÿ‰ํ™”: Pruning & Quantization

Pruning: ๋ถˆํ•„์š”ํ•œ ์—ฐ๊ฒฐ ์ œ๊ฑฐ


๋…ผ๋ฌธ์—์„œ ๊ฐ•์กฐํ•˜๋Š” ๋‚ด์šฉ์€ โ€œ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.โ€์ด๋‹ค.
์ฆ‰, Pruning์€ ํ•™์Šต๋œ ๋ชจ๋ธ์—์„œ ์ค‘์š”๋„๊ฐ€ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜, ์ฑ„๋„, ํ•„ํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
๋…ผ๋ฌธ์—์„œ๋Š” Pruning์„ ์—ฌ๋Ÿฌ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

  • ์ œ๊ฑฐ ์ˆ˜์ค€๋ณ„๋กœ
    - Weight-level (๊ฐœ๋ณ„ ๊ฐ€์ค‘์น˜): ๊ฐœ๋ณ„ ๊ฐ€์ค‘์น˜ ๋‹จ์œ„๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ€์ค‘์น˜์˜ ์ ˆ๋Œ“๊ฐ’์ด ์ž‘๊ฑฐ๋‚˜ ์ค‘์š”๋„๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฐ’๋“ค์„ 0์œผ๋กœ ๋งŒ๋“ ๋‹ค.
    - Channel/Filter-level: CNN์—์„œ ํ•˜๋‚˜์˜ ์ฑ„๋„ ๋˜๋Š” ํ•„ํ„ฐ ์ „์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    - Layer-level: ํŠน์ • ๋ ˆ์ด์–ด ์ „์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • ์ ์šฉ ์‹œ์  ๊ธฐ์ค€์œผ๋กœ
    - Static Pruning (ํ•™์Šต ํ›„): ๋ชจ๋ธ์„ ํ•™์Šตํ•œ ๋’ค ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ค‘์š”์—†๋Š” ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹
    - Dynamic Pruning (์ถ”๋ก  ์ค‘): ์‹คํ–‰ ์‹œ์ ์—์„œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹

Pruning์˜ ์žฅ์ ์€

  • ์—ฐ์‚ฐ๋Ÿ‰ ๊ฐ์†Œ
  • ๋ชจ๋ธ ํฌ์†Œ์„ฑ ์ฆ๊ฐ€
    ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ณผ๋„ํ•œ pruning์€ ์ •ํ™•๋„ ๊ธ‰๊ฐ์ด๋ผ๋Š” ์œ„ํ—˜์„ ๊ฐ€์ง„๋‹ค.

Quantization: ์ˆ˜์น˜ ํ‘œํ˜„ ์ •๋ฐ€๋„ ๊ฐ์†Œ

Quantization์€ ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜์™€ ํ™œ์„ฑํ™” ๊ฐ’์„ 32-bit floating point์—์„œ 8-bit ๋˜๋Š” ๊ทธ ์ดํ•˜ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
๋…ผ๋ฌธ์—์„œ Quantization์˜ ๋ฐฉ์‹์„ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

  • Post-Training Quantization (PTQ)
    โ†’ ํ•™์Šต ์™„๋ฃŒ ํ›„ ์–‘์žํ™”ํ•œ๋‹ค.
  • Quantization-Aware Training (QAT)
    โ†’ ํ•™์Šต ๊ณผ์ •์—์„œ ์–‘์žํ™” ํšจ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค.

Quantization์€

  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ
  • ์—ฐ์‚ฐ ์†๋„ ํ–ฅ์ƒ
  • ํ•˜๋“œ์›จ์–ด ์นœํ™”์„ฑ ์ฆ๊ฐ€
    ๋ผ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ •๋ฐ€๋„ ๊ฐ์†Œ๋กœ ์ธํ•œ ์ •ํ™•๋„ ์†์‹ค์„ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

Pruning๊ณผ Quantization์˜ ๊ด€๊ณ„

Pruning๊ณผ Quantization์€ ์„œ๋กœ ๊ฒฝ์Ÿํ•˜๋Š” ๊ธฐ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์„œ๋กœ๋ฅผ ๋ณด์™„ํ•˜๋Š” ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.
Pruning๋กœ ๊ตฌ์กฐ๋ฅผ ์ค„์ด๊ณ , Quantization๋กœ๋Š” ๊ฐ ์—ฐ์‚ฐ์„ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ฆ์œผ๋กœ์จ ํฐ ๊ฒฝ๋Ÿ‰ํ™” ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์‹ค์ œ ํ”„๋กœ์ ํŠธ ์ ์šฉ

0๊ฐœ์˜ ๋Œ“๊ธ€