boost-devs / peer-session

๐Ÿš€ ๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech 1๊ธฐ U-Stage 4์กฐ ํ”ผ์–ด ์„ธ์…˜ ์ž๋ฃŒ/์งˆ๋ฌธ ๋ชจ์Œ (archived)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[DAY 36] Lightweight models & The flip-side of the coin: on-device AI & Optimization

changwoomon opened this issue ยท comments

๐Ÿ‘€ ์ฃผ๋ง ํšŒ๊ณ 

์›๋”œ @changwoomon

  • ์บ๊ธ€ ์ฑ… ๋ฒ ํƒ€๋ฆฌ๋” ๋‹น์ฒจ!

ํ›„๋ฏธ @opijae

  • ๋กค ๊ณจ๋“œ ๋‹ฌ์„ฑ!

์ƒ๋ฆฌ @bsm8734

  • ์นœ๊ตฌ๋ถ„๋“ค๊ณผ ์‚ฌ์ง„๊ด€๊ฐ€์„œ ์‚ฌ์ง„ ์ฐ์œผ์…จ์Šต๋‹ˆ๋‹ค.

ํžˆ์Šค @Heeseok-Jeong

  • ์ง€๋‚œ์ฃผ ๊ฐ•์˜ ๋ณต์Šต, ๋ฐฑ์ค€ ์‰ฌ์šด ๋ฌธ์ œ ํ’€๊ธฐ, ์„œํ•‘ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

ํŽญ๊ท„ @CoodingPenguin

  • ์œ ํŠœ๋ธŒ(๋ธŒ๋ ˆ์ด๋ธŒ ๊ฑธ์Šค ์˜์ƒ) ์‹œ์ฒญ, ๋ฐฑํ™”์  ์‡ผํ•‘ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

๐Ÿคทโ€โ™€๏ธFurther Question๐Ÿคทโ€โ™€๏ธ

(1๊ฐ•) ๊ฐ€๋ฒผ์šด ๋ชจ๋ธ

1) ์ด๋ฒˆ ๊ฐ•์˜๋Š” lightweight modeling ๊ณผ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ์„๊นŒ?

2) ๋ณ€ํ™˜ ํ›„ ๋ชจ๋ธ์˜ size์™€ parameter์˜ ๊ฐœ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

  • ๋ณดํ†ต size์™€ parameter ๊ฐœ์ˆ˜๋Š” ๋น„๋ก€ โ†’ size๋ฅผ ์ค„์ด๋ฉด parameter ๊ฐœ์ˆ˜๋„ ๋‹น์—ฐํžˆ ์ค„์ง€ ์•Š์„๊นŒ์š”?
  • PyTorch(.pth) : 233MB
  • onnx : 233MB
  • TF(.pb) : 233MB
  • Keras(.h5) : 233MB
  • TF Lite(.tflite) : 58MB
  • TensorRT(.trt) : 466MB
    • ์™œ TensorRT๋กœ ๋ฐ”๊พผ ๋ชจ๋ธ์ด ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํด๊นŒ์š”?
      • TensorRT
      • tensorRT ๋Š” tflite ์™€ ๊ฐ™์ด on-device ์˜ ๋ชฉ์ ์ด ์•„๋‹Œ NVIDIA GPU ์—์„œ inference ์†๋„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ฅผ NVIDIA GPU ์— ์ตœ์ ํ™”์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ ์šฉ๋Ÿ‰์€ ์ปค์ง€์ง€๋งŒ inference ์†๋„๋Š” ๋นจ๋ผ์ง„๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • onnx โ†’ pth : 351MB
    • pth โ†’ onnx โ†’ pth ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋Š”๋ฐ ์™œ ์šฉ๋Ÿ‰์ด ๋” ์ปค์กŒ์„๊นŒ์š”?

3) ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ๋ชจ๋ธ์€ ์–ด๋–ค ๊ฒƒ์ผ๊นŒ? (์Šฌ๋ผ์ด๋“œ p.41)

  • TF Lite(.tflite) : 58MB

4) ์–ด๋–ค ๋ณ€ํ™˜์€ ๊ฐ€์—ญ์ ์ด๊ณ  ์–ด๋–ค ๋ณ€ํ™˜์€ ๋น„๊ฐ€์—ญ์ ์ผ๊นŒ?

  • PyTorch โ†” onnx โ†’ TF / Keras / TF Lite / TensorRT

(2๊ฐ•) ํŒ”๋ฆฌ๋Š” ๋ฌผ๊ฑด

1) ์ด๋ฒˆ ๊ฐ•์˜๋Š” lightweight modeling๊ณผ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ์„๊นŒ? (์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ๋ชฉ์ ์€ ๋ฌด์—‡์ผ๊นŒ?)

  • ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์œ„ํ•ด์„œ on-device๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•œ๋ฐ ์ด๋ฅผ ์œ„ํ•ด lightweight ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด์„œ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

2) ๊ณ ๊ฐ์˜ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ? + 3) on-device solution์˜ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ?

4) Memory ์ œ์•ฝ์ด ์–ผ๋งŒํผ์ด๋ฉด vgg16 ๋ชจ๋ธ์ด ์ž‘๋™์„ ๋ชปํ•˜๋Š”์ง€ ๊ธฐ๋กํ•ด๋ณด์ž


(3๊ฐ•) ๊ฐ€์žฅ ์ ๋‹นํ•˜๊ฒŒ

1) ์ด๋ฒˆ ๊ฐ•์˜๋Š” lightweight modeling๊ณผ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ์„๊นŒ? (์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ๋ชฉ์ ์€ ๋ฌด์—‡์ผ๊นŒ?)

  • ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ cost๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค โ†’ ๊ฐ๊ฐ cost์— ๋”ฐ๋ผ ๋ชจ๋ธ์„ ๊ฒฝ๋Ÿ‰ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

2) euclidean / hamming / cosine distance์˜ ์ฐจ์ด๋Š”? ์–ธ์ œ ์–ด๋–ค ๊ฑฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ?

3) decision problem๊ณผ optimization problem์˜ ์ฐจ์ด๋ฅผ ์ ์–ด๋ณด์ž

  • decision problem
    • target์—๋งŒ ๋„๋‹ฌํ•˜๋ฉด ๋œ๋‹ค. cost, loss๊ฐ€ ์ž‘์•„์ง€๊ธฐ๋งŒ ํ•˜๋ฉด decision problem์„ ํ‘ธ๋Š” ๊ฒƒ์ด๋‹ค.
  • optimization problem
    • decision problem์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ cost, loss๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค.

4) backpropagation ์‹์ด ์™œ ์ด๋ ‡๊ฒŒ ๋ ๊นŒ?

    def sigmoid_derivative(self, x):
        return x * (1.0 - x)