About this role
Summary: Design and implement end-to-end model conversion, optimization, and deployment pipelines for LLM and Vision models on edge devices. The role involves transforming PyTorch models to ONNX, performing graph surgery, and ensuring compatibility with various NPU/GPU/ASIC hardware environments.
### ๐ ์ฐ๋ฆฌ ํ์ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ํ NPU/GPU/CPU ๊ธฐ๋ฐ Edge ๋๋ฐ์ด์ค์์ ์ต์ LLM ๋ฐ Vision ๋ชจ๋ธ์ด ์์ ์ ์ผ๋ก ์๋ํ๋๋ก ๋ชจ๋ธ ๋ณํ โ ์ต์ ํ โ ์ปดํ์ผ โ ๋๋ฐ์ด์ค ๋ฐฐํฌ๊น์ง ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์ค๊ณยท๊ตฌํํ๋ ํ์ ๋๋ค.
ํ๋์จ์ด ์ ์กฐ์ฌ๊ฐ ์ ๊ณตํ์ง ์๋ ๋ถ๋ถ(Front/Middle-End ์ต์ ํ, Graph Surgery, ์ฐ์ฐ์ ์์ ๋ฑ)์ ๋ ์์ ์ผ๋ก ํด๊ฒฐํ์ฌ ์ด๋ค ๋ชจ๋ธ์ด๋ ์ด๋ค ๋๋ฐ์ด์ค ํ๊ฒฝ์์๋ ๋์ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ํต์ฌ ๋ฏธ์ ์ ๋๋ค.
### ๐ ํด๋น ํฌ์ง์ ์ผ๋ก ํฉ๋ฅํ์ ๋ค๋ฉด
Edge AI Engineer๋ ์ต์ AI ๋ชจ๋ธ์ด ์ค์ ๋๋ฐ์ด์ค์์ ์ ํํ๊ณ ๋น ๋ฅด๊ฒ ๋์ํ๋๋ก ๋ง๋๋ ํต์ฌ ์ญํ ์ ์ํํฉ๋๋ค. PyTorch ๊ธฐ๋ฐ์ ๋์ ๋ชจ๋ธ์ ONNX ์ค์ฌ์ ์ ์ ๊ทธ๋ํ๋ก ๋ณํํ๊ณ ์ต์ ํํ๋ฉฐ, ์ด๋ฅผ ๋ค์ํ ํ๋์จ์ด ํ๊ฒฝ์ ๋ง๊ฒ ์ปดํ์ผํ๊ณ ๋ฐฐํฌํ๋ End to End ๋ชจ๋ธ ์คํ ๊ณผ์ ์ ์ง์ ์ค๊ณํ๊ณ ๊ตฌํํ๊ฒ ๋ฉ๋๋ค. ๋ชจ๋ธ ๊ตฌ์กฐ ๋ถ์๋ถํฐ ๊ทธ๋ํ ๋ ๋ฒจ ์ต์ ํ, ๋ฒค๋๋ณ ์ปดํ์ผ๋ฌ ๋์, ๋๋ฐ์ด์ค ์ฑ๋ฅ ํ๋๊น์ง ๋จ์ํ ๋ณํ ์์ ์ ๋์ด ์ด ๋ชจ๋ธ์ด ์ด ๋๋ฐ์ด์ค์์ ์, ์ด๋ป๊ฒ, ์ผ๋ง๋ ์ ๋์ํ๋์ง๋ฅผ ๋๊น์ง ์ฑ ์์ง๋ ์ญํ ์ ๋๋ค.
### โ ์ฃผ์ ์ ๋ฌด
1. ๋ชจ๋ธ ๋ณํ ๋ฐ ์ต์ ํ ํ์ดํ๋ผ์ธ ์ค๊ณ
- ๋ค์ํ LLM / Computer Vision ๋ชจ๋ธ์ ๊ธฐ์ค์ผ๋ก Torch โ ONNX โ Vendor Compiler โ Device Runtime ์ ์ฒด ํ๋ก์ฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ดํดํ๊ณ ์ค๊ณ
- ๋ชจ๋ธ ๊ตฌ์กฐ ๋ถ์ ํ, ํ๋์จ์ด ์ ํ์ฌํญ์ ๋ง๋๋ก front/middle-end ์์ค์ graph transformation ๋ฐ rewriting ์ํ
- dynamic graph โ static graph ๋ณํ, unsupported ops ์ ๊ฑฐ/๋์ฒด, quantization-friendly ๊ตฌ์กฐ ๋ณํ
2. ๋๋ฐ์ด์ค ๊ธฐ๋ฐ ๋ฐฐํฌ ๋ฐ ์ปดํ์ผ
- ๋ค์ํ NPU/GPU/ASIC ํ๊ฒฝ์์ vendor compiler, runtime framework(Jetson, DeepX, Telechips, Renesas ๋ฑ) ์ฌ์ฉ
- ๋๋ฐ์ด์ค๋ณ ํธํ์ฑ ์ด์ ํ์ ๋ฐ ํด๊ฒฐ (unsupported op ์์ , dtype ๋ณํ, shape ๊ณ ์ ํ, scale ๋ณํ ๋ฑ)
- ๋๋ฐ์ด์ค ๋ด๋ถ ์ถ๋ก runtime ํ๊ฒฝ ์ค์ ๋ฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
3. ๋ชจ๋ธ ์ฑ๋ฅ ๋ณด์กด ๋ฐ ํ์ง ๊ด๋ฆฌ
- ์๋ก์ด ๋ชจ๋ธ ์ํคํ ์ฒ(Transformer/Diffusion ๋ฑ) ์ดํด ๋ฐ ๊ตฌ์กฐ ๊ธฐ๋ฐ ๋ณํ ์ ๋ต ์๋ฆฝ
- ๋ณํ ํ ๋ชจ๋ธ ์ ํ๋ยทlatencyยท๋ฉ๋ชจ๋ฆฌ ๋ณํ ๋ถ์ ๋ฐ ์๋ณธ ๋๋น ํ์ง ๋ณด์กด
4. ๋ฌธ์ ์ ์ ๋ฐ ์คํ ์ ๋ต ์๋ฆฝ
- ๊ณ ๊ฐ์ฌ ์๊ตฌ์ฌํญ ๋ฐ ์ฃผ์ด์ง ํ๋์จ์ด ์ ์ฝ์ ๋ฐํ์ผ๋ก ํ๋ก์ ํธ ๋ชฉํ ์ ์ โ ์คํ ๊ณํ ์๋ฆฝ โ ์ฑ๊ณต ๊ธฐ์ค ์ค์
- ๋ณํ ์ฑ๊ณต ๊ฐ๋ฅ์ฑ, ์์ ๊ฒฐ๊ณผ๋ฌผ, ์ฃผ์ ๋ฆฌ์คํฌ ์ฌ์ ์์ธก
5. ๋ฐ๋ณต ์ ๋ฌด ์๋ํ์ ํจ์จ ๊ฐ์
- ์ต์ AI ํด ๋ฐ ํ๋ ์์ํฌ ํ์ฉํ์ฌ ๋ชจ๋ธ ๋ณํ/๋๋ฒ๊น /๋ถ์ ์๋ํ ๋ฐ ์ํฌํ๋ก์ฐ ์ต์ ํ
- ๋ฐ๋ณต๋๋ ๋จ๊ณ๋ฅผ scripting(ํ์ด์ฌ/CLI) ๋๋ pipeline(automation)์ผ๋ก ์ ์งยท๊ด๋ฆฌ
6. ๋ฌธ์ํ ๋ฐ ์ปค๋ฎค๋์ผ์ด์
- ๊ธฐ์ / ์ ๋ถ๊ณผ์ ์ ์์ ์์ฑ ๊ฒฝํ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ ์ ๋ฐฐ๊ฒฝโ๋ฌธ์ ์ ์โ์คํ ์ ๋ตโ์ ๋์ ์ฑ๊ณต ๊ธฐ์ค์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ฌธ์ํ
- ํ ๋ดยท์ธ๋ถ ์ปค๋ฎค๋์ผ์ด์ ์ ํตํ ์ ๋ณด ์์ง ๋ฐ ๋ฌธ์ ๊ตฌ์กฐํ ๋ฅ๋ ฅ
### โ ์๊ฒฉ์๊ฑด
ํต์ฌ ์ญ๋
- ๋ชจ๋ธ ๊ทธ๋ํ ์ดํด ๋ฐ ์์ ๋ฅ๋ ฅ: Torch โ ONNX ๋ณํ ๊ตฌ์กฐ, Graph Surgery, dynamicโstatic ๋ณํ
- ํ๋์จ์ด ์นํ ๋ชจ๋ธ ๋ณํ ๋ฅ๋ ฅ: unsupported ops ์ ๊ฑฐ/๋์ฒด, quantization-aware ๊ตฌ์กฐ ์ค๊ณ, ๋ฉ๋ชจ๋ฆฌยท์ฐ์ฐ ์ต์ ํ
- ํ๋์จ์ด๋ณ Compiler Workflow ์ดํด: ONNX โ vendor compiler โ NPU/GPU/ASIC runtime
- LLM/GenAI ์ํคํ ์ฒ ์ดํด: Transformer, RoPE, attention, KV cache, sampling, diffusion ๋ฑ
- ๋๋ฐ์ด์ค ๋ฐฐํฌ ๊ฒฝํ: Jetson Orin, DeepX M1, Telechips A2X, Renesas RZ/V, QNN, SNPE ๋ฑ ํ์ฌ ๋๋ฐ์ด์ค ๊ธฐ๋ฐ ์ถ๋ก ๊ฒฝํ
ํ์ ๊ฒฝํ
- ONNX ๊ธฐ๋ฐ ๋ชจ๋ธ ๋ณํ ๋ฐ ๋๋ฒ๊น ๊ฒฝํ
- ๋ชจ๋ธ ์ต์ ํ/๊ฒฝ๋ํ (quantization, pruning, fusion ๋ฑ) ๊ฒฝํ
- Python ๊ธฐ๋ฐ ์๋ํ ์คํฌ๋ฆฝํธ ์์ฑ ๋ฅ๋ ฅ
- ํ๋์จ์ด ๋๋ vendor compiler ๋ฌธ์ ๊ธฐ๋ฐ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ
### โ ์ฐ๋์ฌํญ
- ์ ๋ถ ๊ณผ์ ๋๋ PoC ์ ์์/๊ธฐ์ ๋ฌธ์ ์์ฑ ๊ฒฝํ
- LLM ์๋น ์คํ(ONNX Runtime / vLLM / TRT-LLM ๋ฑ) ์ดํด
- ๋ค์ํ ๋ฒค๋ compiler ๊ฒฝํ(์: TensorRT, QNN, SNPE, TFLite, eIQ ๋ฑ)
- ์ค์ ๋๋ฐ์ด์ค inference latency / ๋ฉ๋ชจ๋ฆฌ profiling ๊ฒฝํ
- AI Tool ์ฌ์ฉ๊ณผ ์ง์ ์ ๋ ผ๋ฆฌ ๊ตฌ์ฑ์ ๊ตฌ๋ถ ๋ฅ๋ ฅ
(๋จ์ AI ๋ต๋ณ ์์กด X, ์ค์ค๋ก ๊ตฌ์กฐํยท์ถ๋ก ๊ฐ๋ฅํ ๋ถ)
### โ ์ฑ์ฉ ์ ์ฐจ
- ์๋ฅ ๊ฒํ โ 1์ฐจ ์ธํฐ๋ทฐ โ 2์ฐจ ์ธํฐ๋ทฐ โ ์ฒ์ฐ ํ์ โ ์ต์ข ์ ๋ฐ
(์ ์ฐจ ๊ฐ์ ์ถ๊ฐ์ ์ธ ๊ณผ์ ๊ฐ ์์ ์ ์์ต๋๋ค.)
### ๐ค ํ์ ๋ฉ์ธ์ง
> ์ฐ๋ฆฌ ํ์ Any AI on Any Device๋ฅผ ๋ง๋ก๋ง ์ค๋ช ํ์ง ์์ต๋๋ค. ๋ค์ํ AI ๋ชจ๋ธ์ ๋ค์ํ ๋๋ฐ์ด์ค ํ๊ฒฝ์์ ์ค์ ๋ก ๋๋ ค๋ณด๊ณ , ๋๊น์ง ๊ฒ์ฆํ๋ ํ์ ๋๋ค. ์ต์ Computer Vision, Transformer, Diffusion ๋ชจ๋ธ์ CPU, GPU, NPU ๋ฑ ์๋ก ๋ค๋ฅธ ์ํคํ ์ฒ์ ๋ง์ถฐ ๋ณํํ๊ณ ์ต์ ํํ๋ฉฐ ์ด๋ก ์ด ์๋๋ผ ๊ฒฐ๊ณผ๋ก ๊ฐ๋ฅ์ฑ์ ์ฆ๋ช ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๊ตฌ์์ ๋๋๋ ์ผ์ด ์๋๋ผ, ๋ณํ๊ณผ ๋ฐฐํฌ, ์ฑ๋ฅ ๊ฒ์ฆ๊น์ง ์ ๊ณผ์ ์ ์ง์ ์ฑ ์์ง๋๋ค.
> ์ฐ๋ฆฌ๋ ๋ชจ๋ธ๋ง ๋ค๋ฃจ๋ ํ๋, ๋๋ฐ์ด์ค๋ง ๋ค๋ฃจ๋ ํ๋ ์๋๋๋ค. PyTorch ๊ธฐ๋ฐ์ dynamic graph๋ถํฐ ONNX static graph, compiler IR, device runtime๊น์ง ๋ชจ๋ธ, ๊ทธ๋ํ, ์ปดํ์ผ๋ฌ, ๋๋ฐ์ด์ค ์ ์คํ์ ๊ดํตํ๋ ๋ฌธ์ ๋ฅผ ๋ค๋ฃน๋๋ค. ์ ์ด ์ฐ์ฐ์ด ํน์ ๋๋ฐ์ด์ค์์ ๋์ํ์ง ์๋์ง, ์ ๊ฐ์ ๋ชจ๋ธ์ด ํ๊ฒฝ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋์ง, ์ด ์ง๋ฌธ์ ๋จ์ ๋ฌธ์ ๋ก ๋์ง ์๊ณ , ์ง์ ํ๊ณ ๋ค์ด ํด๊ฒฐํฉ๋๋ค.
> ์ข์ ๋๋ฃ๋ค๊ณผ ํจ๊ป ํ์ ํ๋ฉฐ ํ๋์จ์ด์ ์ํํธ์จ์ด์ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํ๊ณ ์ค์ ๊ธฐ์ ๊ณผ ์ ํ์ผ๋ก ๋ง๋ค์ด ๊ฐ๋ ์ฌ์ ์ ํจ๊ปํ ๋ถ์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
### ์ง์ ์ , ํ์ธํด์ฃผ์ธ์! ๐
- ํด๋น ๊ณต๊ณ ๋ ์์ ์ฑ์ฉ์ผ๋ก, ์ฑ์ฉ ์๋ฃ ์ ์กฐ๊ธฐ ๋ง๊ฐ๋ ์ ์์ต๋๋ค.
- ์ด๋ ฅ์ ๋ด ์ฐ๋ด ์ ๋ณด ๋ฑ ๋ฏผ๊ฐํ ๊ฐ์ธ ์ ๋ณด๊ฐ ๊ธฐ์ฌ๋์ด ์๋ค๋ฉด, ํด๋น ์๋ฅ๋ ๊ฒํ ๋์ง ์์ ์ ์์ต๋๋ค.
- ์ ์ถํด ์ฃผ์ ๋ด์ฉ ์ค ํ์ ์ฌ์ค์ด ์์ ๊ฒฝ์ฐ ์ฑ์ฉ์ด ์ทจ์๋ ์ ์์ต๋๋ค.
- ์ฑ์ฉ ์ ๋ ํผ๋ฐ์ค ์ฒดํฌ๊ฐ ์์์ ์๋ ค๋๋ฆฝ๋๋ค.
- ์ต์ข ์ธํฐ๋ทฐ ํฉ๊ฒฉ ์ ๋ณ๋๋ก ์ฒ์ฐ๋ฅผ ํ์ํฉ๋๋ค.
- ์ ์ฌ ํ ์์ฉ๊ธฐ๊ฐ์ด ์์ผ๋ฉฐ, ์ด์ ๋ํ ์ฒ์ฐ๋ ์ฐจ๋ฑ์ ๋์ง ์์์ ์๋ ค๋๋ฆฝ๋๋ค.
- ๊ตญ๊ฐ๋ณดํ๋์์ ๋ฐ ์ฅ์ ์ธ์ ๊ด๋ จ ๋ฒ๊ท์ ์๊ฑฐํ์ฌ ์ฐ๋ํฉ๋๋ค.
- ์ฅ์ ์ธ ๊ณ ์ฉ ์ด์ง์ ์ํ ํ์ ์ ์ ์ฐจ ํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ, ์ฅ์ ์ธ ๋ฑ๋ก์ฆ ์ฌ๋ณธ์ ๊ธฐํ ์๋ฅ ๋์ *์ ํ์ ์ผ๋ก ์ ์ถํ์ค ์ ์์ต๋๋ค.* ์ ์ถ ์ฌ๋ถ๋ ์ ํ ํ๊ฐ์ ์ด๋ ํ ์ํฅ๋ ๋ฏธ์น์ง ์์ต๋๋ค.
- R&D ๋ชจ๋ ํฌ์ง์ ์์ ์ ๋ฌธ์ฐ๊ตฌ์์, ์ฐ์ ๊ธฐ๋ฅ์์์ผ๋ก ๊ทผ๋ฌด๊ฐ ๊ฐ๋ฅํฉ๋๋ค. (๋จ, ์ฐ์ ๊ธฐ๋ฅ์์ ํ์ญ ์ ๊ท ํธ์ ์ ๊ฒฝ์ฐ ๋ถ๊ฐ๋ฅ)
### ๐ ์ฝ์ด๋ณด๋ฉด ๋์ ๋๋ ๊ด๋ จ ์๋ฃ
๐ฟ ๋ ธํ ๋ผ์ดํ
- [๋ ธํ๋ ํต์ฌ ๊ฐ์น(CV)๋ฅผ ์ด๋ป๊ฒ ์คํํ ๊น?](https://blog.nota.ai/kr/culture/corevalue-1)
- [์ ์ ์ฌ์ ๋ ธ์์ด์ ๋ ธํ ์ ์๊ธฐ](https://blog.nota.ai/kr/culture/onboarding-2)
- [์ฐ๋ฆฌ๊ฐ ์ผํ๋ ๊ณต๊ฐ์ ์๊ฐํฉ๋๋ค!](https://blog.nota.ai/kr/culture/new-office3)
๐ก ๋ ธํ๊ฐ ํ๋ ์ผ
- [๊ธฐ์ ์ด์ผ๊ธฐ ์์ด ๋ ธํ ์ค๋ช ํ๊ธฐ](https://blog.nota.ai/kr/culture/ctotalk)
- [AI ๋ชจ๋ธ ์ต์ ํ ํ๋ซํผ '๋ท์ธ ํ๋ ์'๋?](https://blog.nota.ai/kr/insights/genai-everywhere-netspresso)
- [๋ ธํ์ ์จ๋๋ฐ์ด์ค AI '์๋ฃจ์ ' ๋ง๋ณด๊ธฐ](https://blog.nota.ai/kr/culture/solution)
- [Nota Tech Blog: ๋ ์์๋ณด๊ธฐ](https://blog.nota.ai/kr/insights)
