๐ ์ฐ๋ฆฌ ํ์ ์๊ฐํฉ๋๋ค.
NetsPresso Platform ํ์ Nota AI์ AI ๋ชจ๋ธ ๊ฒฝ๋ํ ๋ฐ ์ต์ ํ ๊ธฐ์ ์ ๋ฐํ์ผ๋ก, ์ฐ๊ตฌยท๊ฐ๋ฐ๋ ๊ธฐ์ ์ ์ค์ ์ ํ์ผ๋ก ๊ตฌํํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ํต์ฌ ํ๋ซํผ๊ณผ ์ํํธ์จ์ด๋ฅผ ์ค๊ณยท๊ตฌํํ๋ ์กฐ์ง์
๋๋ค.
Model Representation, Quantization, Graph Optimization, Model Engineering, SW Engineering ํํธ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ทธ์ค Model Representation Part๋ ๋ค์ํ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก๋ถํฐ ์ ์
๋๋ ๋ชจ๋ธ๋ค์ ์์ฌ ๊ณ ์ ์ ํตํฉ IR (Intermediate Representation)์ธ NPIR๋ก ๋ณํํ์ฌ, Quantization, Graph Optimization, Compression ๋ฑ์ ์ต์ ํ ๊ธฐ์ ์ ์ ์ฉ ๊ฐ๋ฅ์ผ ํฉ๋๋ค.
-
๋ค์ํ ํ๋ ์์ํฌ ๋ชจ๋ธ์ ์์ฌ ๊ณ ์ ์ NPIR๋ก ํตํฉํ์ฌ ๊ธฐ์ ์ ๋ฒ์ฉ์ฑ์ ํ๋ณดํ๋ฉฐ
-
์ต์ AI ๋ชจ๋ธ๋ค๊ณผ ๋ค์ํ ํ๋์จ์ด๋ฅผ ์ง์ ๊ฐ๋ฅํ๋๋ก ํ์ฅํ๊ณ
-
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๋
ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ํ๊ฒ ๋ฐํ์ ํ๊ฒฝ์ ์ต์ ํํ์ฌ ์ค์ ํ๋์จ์ด์์์ ์ถ๋ก ํจ์จ์ ๊ทน๋ํ ํฉ๋๋ค.
๐
ํด๋น ํฌ์ง์
์ผ๋ก ํฉ๋ฅํ์ ๋ค๋ฉด
NetsPresso์ ๊ธฐ๋ฐ์ด ๋๋ ํตํฉ๋ IR์ ์ ํํํ๋ ๊ณผ์ ์ ์ฐธ์ฌํฉ๋๋ค. ๋ค์ํ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ์ ํ๋์จ์ด์ ํน์ฑ์ ํ์
ํ๊ณ , ๋
ธํ๋ง์ ๊ณ ์ ํ IR(NPIR)์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋ ๋ฐ ๊ธฐ์ฌํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ On-device AI๋ฅผ ์ํ ๋ค์ํ ๊ฒฝ๋ํ ๋ฐ ์ต์ ํ ๊ธฐ์ ์ด ์ค์ ์ ํ์ ์ด๋ป๊ฒ ์ ์ฉ๋๋์ง ๊ฒฝํํ๋ฉฐ, ์ต์ ๋ชจ๋ธ๋ค์ด ๋ค์ํ ํ๋์จ์ด์์ ํจ์จ์ ์ผ๋ก ๊ตฌ๋๋ ์ ์๋๋ก ๊ธฐ์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋๋ค. AI ์ปดํ์ผ๋ฌ ์์ง๋์ด๋ก์ ์ด๋ก ์ ์ธ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฌผ์ ์ค์ ์ํํธ์จ์ด ์คํ์ผ๋ก ๊ตฌํํด๋ด๋ ์ฑ์ทจ๊ฐ์ ๋๋ผ์ค ์ ์์ต๋๋ค.
โ
์ฃผ์ ์
๋ฌด
-
IR ๊ตฌํ ๋ฐ ์ ์ง๋ณด์
-
NPIR ๊ทธ๋ํ ๊ตฌ์กฐ ๊ฐ๋ฐ: ๋ค์ํ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ์ ๋ค์ํ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ํํํ ์ ์๋ NetsPresso Intermediate Representation (NPIR)์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ณ ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค.
-
ํ๋ ์์ํฌ ๋ณํ ๋ก์ง ๊ฐ๋ฐ: PyTorch, ONNX ๋ฑ ๋ค์ํ ํ๋ ์์ํฌ์ NPIR ๊ฐ์ ๋ณํ ๋ก์ง์ ๊ตฌํํ๊ณ ๊ฒ์ฆํฉ๋๋ค.
-
ํ๋์จ์ด ์นํ์ IR ๋ณํ ๋ฐ ๋ก์๋ง
-
๋ฐฑ์๋ ๋ณํ ๋ก์ง ๊ฐ๋ฐ: NPIR์ ExecuTorch, TensorRT ๋ฑ ํ๊ฒ ๋ฐํ์ ๋ฐ ํ๋์จ์ด ์ ์ฉ IR๋ก ๋ณํํ๋ ๋ก์๋ง ํจ์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
-
ํ๋์จ์ด ์ ์ฝ ๊ธฐ๋ฐ ๊ทธ๋ํ ๋ณํ: ํ๊ฒ HW ์คํผ๋ ์ดํฐ ๋ฐ ์ ์ฝ ์ฌํญ ๋ถ์, ์ปดํ์ผ๋ฌ/Low-level IR ๋ถ์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ๋์จ์ด ์ต์ ํ ๊ธฐ์ ์ฐ๊ตฌ ๊ฐ๋ฐ
โ
์๊ฒฉ์๊ฑด
-
์ปดํจํฐ๊ณตํ, ์ ์๊ณตํ ๋ฑ ๊ด๋ จ ์ ๊ณต ํ์๋ฅผ ์์งํ์ ๋ถ
-
Python ์ธ์ด์ ๋ฅ์ํ๋ฉฐ, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ๋ฐ ํด๋ฆฐ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํ์ ๋ถ
-
PyTorch, ONNX, Python, Linux, Git/GitHub, Docker ๊ฒฝํ์ ๋ณด์ ํ์ ๋ถ
-
๊ด๋ จ ๋ถ์ผ 5๋
์ด์์ ๊ฒฝ๋ ฅ์ ์ง๋์ ๋ถ
-
ํด์ธ ์ฌํ์ ๊ฒฐ๊ฒฉ ์ฌ์ ๊ฐ ์๋ ๋ถ
โ
์ฐ๋์ฌํญ
-
์์คํ
๋ ๋ฒจ ๊ตฌํ์ ์ํ C++ ์ญ๋ ๋ฐ Python ํ์ฉ ๋ฅ๋ ฅ์ ๊ฐ์ถ์ ๋ถ
-
CPU/GPU/NPU์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ, ๋ณ๋ ฌ ์ปดํจํ
(SIMD, Multi-threading)์ ๋ํ ๊ธฐ์ด ์ง์์ ๊ฐ์ถ์ ๋ถ
-
IR(Intermediate Representation), ์ปดํ์ผ๋ฌ ํจ์ค(Pass), ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST) ๋ฑ ์ปดํ์ผ๋ฌ ๊ธฐ๋ณธ ์๋ฆฌ์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ถ์ ๋ถ
-
ExecuTorch, ONNX, TensorRT, AIMET ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ๋ชจ๋ธ ์ต์ ํ ๊ฒฝํ์ด ์์ผ์ ๋ถ
-
์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(Static Memory Allocation) ๋๋ ๋ณต์กํ ๋ฐ์ดํฐ ๋ ์ด์์ ์ต์ ํ ๊ด๋ จ ํ๋ก์ ํธ ๊ฒฝํ์ด ์์ผ์ ๋ถ
โ
์ฑ์ฉ ์ ์ฐจ
์๋ฅ ๊ฒํ โ ์ฌ์ ๊ณผ์ ๋ฐํ โ 1์ฐจ ์ธํฐ๋ทฐ โ 2์ฐจ ์ธํฐ๋ทฐ โ 3์ฐจ ์ธํฐ๋ทฐ โ ์ฒ์ฐ ํ์ โ ์ต์ข
์ ๋ฐ (์ ์ฐจ ๊ฐ์ ์ถ๊ฐ์ ์ธ ๊ณผ์ ๊ฐ ์์ ์ ์์ต๋๋ค.)