Edge AI & TinyML Mechanics
클라우드 의존 없이 임베디드 기기 내부에서 실시간으로 지능형 연산을 수행하기 위한 모델 경량화, 가속기 활용 및 온디바이스 추론 물리 원리를 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
computer-architecture-embedded-systemscomputer-architectureembedded-systemsio-tedge-intelligenceedge-aitiny-ml-mechanicslearning10 min read
1. Overview
엣지 AI와 TinyML 역학(Edge AI & TinyML Mechanics)은 엔비디아(NVIDIA) GPU 클러스터가 웅장하게 도는 클라우드 데이터센터의 거대한 인공지능을, 손톱만 한 32비트 마이크로컨트롤러(MCU)와 코인 배터리(3V) 환경으로 욱여넣는 극한의 신경망 압축 및 추론 공학입니다.
학습자는 수십 메가바이트짜리 딥러닝 모델의 가중치(Weight)를 소수점(Float32)에서 8비트 정수(Int8)로 뭉개버리는 양자화(Quantization) 물리와, 뇌세포의 연결 고리를 가차 없이 끊어버려 계산량을 깎아내는 **가지치기(Pruning)**의 기하학을 뜯어봅니다. 나아가 MCU에 내장된 저전력 **신경망 가속기(NPU / DSP)**가 어떻게 딥러닝의 본질인 행렬 곱셈(MAC, Multiply-Accumulate) 연산을 클럭 소모 없이 씹어 삼키는지를 해부하고, 서버로 데이터를 보내지 않고 센서단에서 즉시 음성 명령(Keyword Spotting)과 진동 이상 징후를 판독하는 온디바이스 AI(On-Device AI) 아키텍트 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- 모델 압축 기하학 (Model Compression): 양자화(Post-Training Quantization, QAT), 가지치기(Pruning), 지식 증류(Knowledge Distillation).
- TinyML 메모리 제약 (Memory Bounding): SRAM 버퍼 한계(수백 KB) 내에서의 레이어 텐서(Tensor) 분할 연산, 가중치 플래시(Flash) 직통 읽기(XIP).
- MCU 기반 추론 파이프라인 (Inference Engine): TensorFlow Lite for Microcontrollers (TFLM), 메모리 아레나(Memory Arena) 할당.
- 하드웨어 가속 결합 (Hardware Acceleration): ARM Cortex-M DSP 확장 명령어(SIMD), 초소형 엣지 NPU(Neural Processing Unit) MAC 연산기.
Out-of-Scope
- 거대 언어 모델(LLM)과 분산 학습: 챗GPT 같은 빌리언(B) 파라미터 스케일의 Transformer 모델 분산 트레이닝 12-07-02. Multi-GPU Tensor Physics 영역.
- 클라우드 MLOps 파이프라인: 쿠버네티스(K8s) 기반의 모델 배포와 A/B 테스팅 11-04-03. Machine Learning Operations (MLOps) 영역.
Boundaries
- TinyML vs. Cloud AI (12-01): 클라우드 AI(12-01)가 "모든 데이터를 서버로 몽땅 끌어모아 무제한의 전기와 메모리로 정답을 찾아내는 빅 브라더"라면, 엣지 AI(TinyML)는 "보안과 통신 지연(Latency)을 버틸 수 없어, 현장(센서)에서 1초 만에 얼굴을 인식하고 쓸모없는 데이터는 폐기해 버리는 특수 부대 스나이퍼"입니다.
3. Counterexample
- Float32 텐서의 클라우드 맹신 (Float32 Memory Explode): 클라우드 서버에서 학습시킨 정확도 99%짜리 32비트 부동소수점(Float32) 신경망 모델을, 압축(Quantization) 없이 냅다 256KB 램을 가진 MCU에 포팅하려는 미친 짓. 1개 레이어의 텐서 연산을 올리는 순간 램 용량을 수백 배 초과해 시스템이 즉사(OOM, Out of Memory)하며, 설령 플래시(ROM) 메모리에 꾸역꾸역 집어넣었다 하더라도 FPU(부동소수점 연산기)가 없는 MCU는 소프트웨어로 소수점을 계산하느라 1회 추론에 10초가 걸려 배터리가 방전됩니다.
- 항시 켜짐(Always-On) 마이크의 배터리 증발 (Wake-Word Power Trap): "헤이 시리"나 "오케이 구글" 같은 키워드 호출(Wake-word) 기능을 구현한답시고, MCU의 메인 100MHz 코어를 100% 가동시켜 1초에 16,000번 들어오는 오디오 버퍼를 끊임없이 인퍼런스(추론) 돌리는 무식한 펌웨어 설계. 1시간 만에 스마트 스피커 배터리가 타버립니다. 저전력 아키텍처에서는 마이크에 달린 하드웨어 아날로그 트리거(VAD, Voice Activity Detector)로 먼저 데시벨 튀는 걸 감지하고, 그 후에 초저전력 DSP가 1차 필터링을 한 뒤, 진짜 딥러닝 NPU를 아주 짧게(수십 ms) 깨우는 다단 슬립(Multi-stage Wake-up) 방어선이 필수입니다.
4. Prerequisites
- 부동소수점과 정수 물리 (Basic): 32비트 Float 변수가 어떻게 생겨 먹었는지와 정수(Integer) 변환 시 버려지는 오차를 알아야 양자화를 이해할 수 있습니다. (02-01-01 Digital Logic)
- 메모리 맵 아키텍처 (Basic): MCU 내부에 Flash 1MB와 RAM 256KB가 어떻게 쪼개져 있는지 알아야, 모델 가중치(Weight)를 어디에 저장할지 맵핑할 수 있습니다. (02-05-01 Memory Map)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 데이터 주권과 통신 증발, 온디바이스 AI 패러다임 (Edge AI Philosophy)
- Why to Learn: 자동차 자율주행 카메라가 1초에 60장의 사진을 클라우드로 보내 "앞에 사람 있어요?"라고 물어보고 1초 뒤에 답변을 받는 순간 차는 이미 사람을 치었으므로, 서버 연결이 끊겨도 작동하는 궁극의 레이턴시(0.01초) 방어막을 치기 위함입니다.
- What to Learn:
- Concepts: 엣지 컴퓨팅(Edge Computing), 온디바이스 AI(On-Device AI), 레이턴시/프라이버시/대역폭(Bandwidth) 한계 돌파.
- Skills: 오프라인 추론(Offline Inference), 센서-추론 직결 배관.
- Tools: 마이크/카메라 MCU 추론 보드.
- Trade-offs: 모델을 클라우드에 두면 무한한 정확도(99.9%)를 얻지만 통신망이 끊기는 순간 장비가 멍청한 쇳덩이가 되는 반면, 엣지(MCU)에 모델을 구워 넣으면 무조건 실시간 응답은 보장하지만 메모리가 모자라 정확도가 85%로 떨어지는 경량화 딜레마.
- How to Learn:
- 1단계: 스마트 공장의 진동 센서가 1초에 10만 번(100kHz)씩 데이터를 뿜을 때, 이걸 Wi-Fi로 쏘면 데이터 통신비 폭탄과 버퍼 오버플로우가 터지는 통신 병목을 해부합니다.
- 2단계: 이 센서 바로 옆에 3천 원짜리 MCU를 붙여 진동 데이터를 직접 추론 엔진에 먹이고, 서버에는 "베어링 고장 징후 95%"라는 4바이트 텍스트 결과만 1시간에 1번 쏘게 만드는 기하학적 데이터 압축(Data to Insight) 궤적을 뜯어봅니다.
- Implement: 가짜
Sensor가 1MB 배열을 0.1초마다 생성. 이를Cloud_API(delay=0.5, bw_limit=100KB/s)로 전송하려다 병목이 터져 타임아웃 뻗어버리는 데모와,Local_Model.predict(array)를 태워 결과 라벨(Int) 1개만Cloud_API로 던져 트래픽을 99.9% 깎아내는 엣지 아키텍처 터미널 덤프 모사.
Recommended
Core Topic 02: 소수점의 대학살, 양자화 역학 (Quantization Physics)
- Why to Learn: 딥러닝 서버(PyTorch)가 뱉어낸 Float32 모델은 정확도는 예쁘지만 용량이 너무 비대해서, 이 모델의 신경망 숫자들을 8비트 정수(Int8)로 뭉개버려 256KB 플래시 메모리 안에 구겨 넣는 흑마법을 장악하기 위해서입니다.
- What to Learn:
- Concepts: 양자화(Quantization), Scale / Zero-point 변환 수식, QAT(Quantization-Aware Training), PTQ(Post-Training).
- Skills: Float32 Int8 텐서 변환, 역양자화(Dequantization) 에러율 방어.
- Tools: TensorFlow Lite Converter, Netron(모델 구조 시각화).
- Trade-offs: Int8 양자화를 때리면 모델 크기가 정확히 1/4(75% 압축)로 줄고 정수 연산기(ALU)로 초고속 MAC이 가능해지지만, 0.001과 0.002가 같은 0으로 뭉개지는 반올림 오차(Quantization Error)가 누적되어 모델의 추론 정확도가 2~3% 떨어지는 피눈물 나는 타협.
- How to Learn:
- 1단계: 모델의 특정 레이어 가중치 값들이 범위로 퍼져 있을 때, 이 범위를 딱 256칸짜리 정수 계단 (Int8)에 매핑시키기 위해 Scale 팩터(간격)와 Zero-point(영점)를 추출하는 선형 대수학적 욱여넣기를 해부합니다.
- 2단계: 양자화된 8비트 숫자 2개를 꺼내 하드웨어적으로 빛의 속도로 곱한(MAC) 뒤, 그 결과값을 다시 다음 레이어의 입력으로 넘기기 위해 임시로 32비트 그릇에 담았다가(Overflow 방어) 다시 8비트로 축소하는 런타임 수학 물리법칙을 뜯어봅니다.
- Implement: 파이썬 리스트
weights_f32 = [-2.14, 0.51, 1.99, 4.3]에 대해, 수식q = round(w / scale) + zero_point를 적용해weights_int8 = [-128, -25, 33, 127]로 인코딩한 뒤 다시 디코딩(역양자화)하여[-2.14, 0.51, 1.99, 4.3] -> [-2.14, 0.53, 1.98, 4.3]처럼 발생하는 미세한 소실(오차율 MSE)을 터미널에 시각적으로 출력하는 양자화 압축 데모.
Practical
Core Topic 03: 가지치기와 하드웨어 SIMD 폭격 (Pruning & DSP Math)
- Why to Learn: 모델을 아무리 양자화해도 1초에 곱셈을 수천만 번 해야 하는 건 똑같으므로, 뇌세포 중에 쓸모없는 놈들을 다 죽여버리고(가지치기), 살아남은 놈들은 벡터 명령어(SIMD)로 4개씩 한 번에 곱해버려 클럭을 훔치는 극강의 튜닝을 쥐기 위함입니다.
- What to Learn:
- Concepts: 가지치기(Weight Pruning), 희소성(Sparsity), SIMD(Single Instruction Multiple Data), DSP 확장 명령어(Cortex-M4/M7).
- Skills: 구조적(Structured) 가지치기, MAC(Multiply-Accumulate) 연산 병렬화.
- Tools: ARM CMSIS-NN 라이브러리.
- Trade-offs: 가중치 중 0에 가까운 놈들을 다 강제로 0으로 만들어(Pruning) 연산을 스킵하면 속도가 쩔게 오르지만, 0이 여기저기 듬성듬성 박혀있는 비구조적(Unstructured) 희소성이 되면 메모리에서 이빨 빠진 배열을 읽어오느라 오히려 분기(Branch) 패널티가 커져 캐시가 박살 나는 딜레마.
- How to Learn:
- 1단계: 신경망 레이어에서 가중치 값이
0.0001같이 결과에 영향도 못 미치는 쓰레기 뉴런들을 모조리 싹둑 잘라0으로 만들고, "값이 0이면 아예 행렬 곱셈을 패스해라"라고 코딩하여 추론에 필요한 총 MAC 연산(FLOPs)을 반 토막 내는 기하학을 해부합니다. - 2단계: 일반 C언어
for루프에선 배열을 1개씩 읽어서 곱하지만, ARM 칩에 내장된 DSP SIMD 명령어(SMLAD)를 쓰면 8비트 정수 4개를 32비트 레지스터 1개에 통째로 쑤셔 넣고 단 1클럭 만에 4번의 곱셈-덧셈(MAC)을 폭격해 버리는 하드웨어 레벨의 병렬 연산을 뜯어봅니다.
- 1단계: 신경망 레이어에서 가중치 값이
- Implement: 사이즈가 1000인 두 배열 , 의 내적(Dot Product)을 파이썬 루프로 구하는 모드와,
0이 포함된 희소 텐서(Sparsity 80%)에 대해if a != 0: sum += a*b로 건너뛰고 4개씩 슬라이스 스킵(SIMD 흉내)을 걸어 루프 횟수(소요 틱)를 80% 깎아먹는 가속 알고리즘 성능 비교 덤프.
Advanced
Core Topic 04: 아레나의 마법, TinyML 런타임 메모리 맵핑 (TFLM Arena)
- Why to Learn: 클라우드(PyTorch)처럼 뉴럴 네트워크 레이어를 지날 때마다 메모리에 새로운 텐서 덩어리(
malloc)를 만들면 1초 만에 MCU 램(RAM)이 폭발해 버리므로, 고정된 작은 도마(Arena) 하나를 재활용하는 지독한 메모리 스케줄링을 깨우치기 위해서입니다. - What to Learn:
- Concepts: 메모리 아레나(Memory Arena), 텐서플로우 라이트 마이크로(TFLM), 인-플레이스 연산(In-place Operation).
- Skills: 라이프타임(Lifetime) 분석 기반 메모리 오버래핑(Overlapping), XIP(eXecute In Place).
- Tools: TFLM 모델 프로파일러.
- Trade-offs: 레이어 1의 출력 버퍼(RAM)를 레이어 3이 재활용(Overlap)하게 맵핑해두면 총 램 요구량(Peak Memory)이 기적처럼 줄어들지만, 한 번 지나간 과거 레이어의 데이터는 흔적도 없이 파괴되므로 백프로파게이션(학습)이나 디버깅 추적은 불가능해지는 극단적 전진(Forward-only) 추론 아키텍처.
- How to Learn:
- 1단계: 변하지 않는 모델의 뼈대(Weight/Bias)는 아예 플래시 메모리(ROM)에 쇳물로 굳혀버려(const) RAM 공간을 1바이트도 먹지 않게 하고, CPU가 플래시 번지를 포인터로 냅다 찌르며 곱셈을 해대는(XIP) 용량 회피 물리를 해부합니다.
- 2단계: 레이어 중간에 임시로 생기는 거대한 활성화(Activation) 텐서들(예: 컨볼루션 연산 결과)을 매번
malloc하지 않고, 컴파일러가 모델 전체의 그래프를 분석해 "레이어 1 결과는 레이어 2가 읽고 나면 쓸모없어지니, 그 메모리 번지(Arena)를 레이어 3 결과가 덮어써도 안전하다"라며 좁디좁은 100KB 램(RAM) 도마 위에서 데이터를 썰고 또 써는 피 튀기는 오버래핑(Overlapping) 기술을 뜯어봅니다.
- Implement: 3개의 연속된 신경망 레이어가 각각 50KB, 60KB, 40KB 버퍼를 요구할 때,
malloc을 치면 총 150KB 램이 필요해 OOM(Out of Memory)이 터지지만, 아레나(Arena) 매니저를 도입하여 버퍼의 생성-소멸(Lifetime) 주기를 추적하고 레이어1과 레이어3의 메모리 주소를 겹쳐(Overlap) 최대 점유율 60KB만으로 추론을 완주해 내는 파이썬 메모리 맵 매니저 시뮬레이션.
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Embedded Systems (Hardware acceleration) — Core requirements.
- [P2] SWEBOK v4.0 - Computing Foundations / Non-traditional Architectures — Structural standards.
Secondary
- [TinyML: Machine Learning with TensorFlow Lite on Arduino] Ward-Paige & Warden — Practical foundations.
- [Mobile Deep Learning] — Industry optimization patterns.
Industry
- [Arm: Ethos-U NPU Architecture] — State of the art in edge AI.
- [TensorFlow Lite for Microcontrollers] — The de-facto standard framework.
9. Final Checklist
Primary
- 'Float32' 기반 모델을 'INT8'로 양자화했을 때, 물리적 메모리 사용량이 이론적으로 정확히 4분의 1이 되는 이유를 설명 가능한가? (P1)
- 'On-device Inference'가 클라우드 AI 방식보다 '네트워크 지연'과 '데이터 프라이버시' 측면에서 왜 물리적으로 우월한지 입증할 수 있는 가? (P1)
Secondary
- AI 가속기(NPU)에서 컨볼루션 연산 도중 발생하는 '메모리 읽기 작업'이 실제 곱셈 작업보다 왜 더 많은 하드웨어 전력(Physical Power)을 소모하게 되는지 소통 가능한가?
- 모델의 특정 레이어를 건너뛰는 '프루닝(Pruning)' 기술이 적용되었을 때, 하드웨어 명령어 파이프라인에서 발생하는 '분기 지연' 가능성을 분석 가능한가?
Industry
- 스마트 워치의 음성 인식 기능 설계 시, 상시 대기(Always-on)를 위해 필요한 TinyML 모델의 물리 전력 소비 한계치를 제안할 수 있는 가? (SFIA)
- 저사양 MCU에서 모델의 RAM 점유가 한계를 넘었을 때, 레이어를 조각내어 순차적으로 연산(Tiling)하는 물리적 스케줄링 방안을 기술할 수 있는 가?