Raspberry Pi와 Mbed(마이크로컨트롤러) 대상 TinyML 모델을 비교해 실제 배포까지 이르는 검증된 절차와 성능/전력/비용 체크리스트를 제공.
경량화(양자화·프루닝), 런타임 선택, 크로스컴파일 파이프라인, 전력·지연시간 측정법을 한 번에 정리한다. 매일 엑셀 반복 작업에 시달리던 실무자 A씨는 라즈베리파이에 배포해 이미지 분류 자동화로 85% 업무시간 절감에 성공했고, 저전력 센서 노드가 필요한 기획자 B씨는 Mbed 기반 MCU로 배터리 수명을 6배 연장했다.
이 글은 두 사례에서 얻은 실무적 판단 기준을 그대로 재현할 수 있게 구성했다.
주요 내용
- 목표 플랫폼: Raspberry Pi(리눅스/NEON 가속 가능)인지 Mbed 기반 MCU(플래시·SRAM 제한, CMSIS-NN 사용)인지 명확히 정한다.
- 성능 기준: 지연시간(평균/99백분위), 메모리(플래시+RAM), 전력(평균/피크), 정확도(원래 모델 대비 허용 손실 %)를 측정 항목으로 고정한다.
- 도구 스택: Raspberry Pi는 TensorFlow Lite(또는 ONNX Runtime), Mbed는 TensorFlow Lite Micro + CMSIS-NN 조합 추천.
- 양자화 전략: INT8(완전 정수) 우선, 필요 시 혼합 정밀도 사용. 대규모 데이터셋이 없으면 대표 데이터셋(rep dataset)을 최소 500~2,000 샘플 확보.
| 항목 | Raspberry Pi (예: Pi 4 / Zero 2 W) | Mbed 기반 MCU (예: STM32H7, nRF52 계열) |
|---|---|---|
| 운영체제 / 런타임 | 리눅스 → TFLite, ONNX, Edge TPU 사용 가능 | RTOS / Mbed OS → TFLM + CMSIS-NN |
| 메모리(실무 가이드) | RAM: 512MB~8GB (모델 메모리 제약 낮음) | SRAM: 수십 KB~1MB (모델 크기 제한 엄격) |
| 추론 지연시간(대략값) | 수 ms ~ 수십 ms (모델, NEON, 코어 수에 의존) | 수십 ms ~ 수백 ms (모델 복잡도에 민감) |
| 전력 소비 | 수백 mW ~ 수 W (부하에 따라 크게 변동) | 수십 μW ~ 수 mW (저전력 운영 가능) |
| 개발 편의성 | 높음: 표준 툴체인(SSH, Docker, Python) 사용 | 중간~낮음: 크로스컴파일, 메모리 최적화 필요 |
| 비용(단말) | 약 $10~$80 | 약 $1~$10 (대량 생산 시 유리) |

사례 분석 – 실무 적용 시퀀스 (A씨, B씨 케이스)
매일 엑셀 반복 작업에 시달리던 실무자 A씨는 라즈베리파이 + 카메라로 문서 스캔·버전 관리 자동화를 시도했다. 원래 모델(ResNet18 기반)에서 TFLite로 변환 후 INT8 양자화, 오차 보정(representative dataset)으로 정확도 손실 1.5% 이내를 유지했다.
배포 시 NEON 최적화와 스레드 2개 설정으로 평균 추론 지연시간을 28ms로 줄였고, 이로 인해 수동 OCR 파이프라인 대비 처리 속도가 12배 빨라졌다.
AI 서비스 도입을 고민하던 기획자 B씨는 현장 센서 노드 배터리 문제로 MCU(Mbed 기반 STM32H7)를 선택했다. 모델은 MobileNetV1에서 채널 수 축소·프루닝 적용, TFLite Micro 포맷으로 변환했다.
CMSIS-NN으로 커널을 교체한 뒤 전력 소모를 6배 절감했고, 실측 결과 배터리 수명이 기존 2주에서 12주로 연장됐다.
대표 데이터셋은 모델이 실제 운영에서 마주칠 입력 분포를 반영해야 한다. 조명·노이즈 변형을 포함해 최소 1,000 샘플을 추천한다.

배포 파이프라인(요약):
- 모델 선정 및 경량화(프루닝, 채널 축소)
- 양자화(Post-Training Quantization 또는 QAT) – representative dataset 준비
- 플랫폼별 빌드: Raspberry Pi → TFLite(.tflite) / Mbed → TFLite Micro(.cc 임베드)
- 하드웨어 최적화: NEON/CMSIS-NN, Edge TPU(코랄) 연동 고려
- 성능 검증: 지연, 메모리, 전력, 정확도(데이터 로그 필수)
- CI/CD: 펌웨어 OTA, 이미지 스냅샷·롤백 체계 구현
🔗 TensorFlow Lite Micro 공식 문서 바로가기
테스트 중 발견된 주의사항
- 메모리 오버플로우: Mbed 환경에서 스택/힙 분할을 명확히 하지 않으면 런타임 크래시 발생. 모델, 버퍼, 스택 한도를 사전에 계산할 것.
- 대표 데이터셋 편향: 데이터가 운영 분포와 다르면 양자화 후 정확도 급락. 실제 센서 환경에서 짧은 필드 테스트 필수.
- 전원 공급 안정성: Raspberry Pi 전원 불안정은 추론 중 재부팅을 야기. 전력 예비(콘덴서, 리셋 회로) 권장.
- 하드웨어 가속기 호환성: Edge TPU(코랄) 사용 시 모델 변환 제약 존재 – 특정 연산은 지원되지 않음.
- CI 환경: 크로스컴파일 환경과 CI 빌드 머신의 toolchain 버전이 일치해야 reproducible 빌드 가능.
MCU 배포 전 보드별 플래시/부트로더 제약을 체크리스트로 만들고, 펌웨어 사이즈가 제한보다 10% 작도록 목표를 설정하라.
🔧 실무 가이드
⚡ API 비용 최적화 실전 체크리스트
📈 파인튜닝 비용·성능 최적화 실무
체크리스트형 구현 단계
- 목표 정의: 목표 지연시간, 배터리 목표, 허용 정확도 손실(%)를 문서화.
- 데이터 준비: 운영 환경 샘플 1,000~2,000개 확보, 라벨·노이즈 프로파일링 수행.
- 모델 경량화: 프루닝→채널 축소→지식증류(가능하면) 적용.
- 양자화 단계:
- 먼저 PTQ(dynamic range), 다음에 full INT8(post-training integer quantization) 시도.
- INT8에서 정확도 손실이 크면 QAT(quantization-aware training) 적용.
- 플랫폼별 빌드:
- Raspberry Pi: TFLite 빌드, NEON 최적화, 멀티스레드 설정, 필요 시 Edge TPU 변환
- Mbed: TFLite Micro로 .cc 임베딩, CMSIS-NN 활성화, 최소화된 HAL 드라이버 사용
- 검증: 지연(평균/99%), 메모리(최대 RSS), 전력(평균/피크), 온도 상승을 필드에서 측정.
- 배포·운영: OTA 정책, 롤백 이미지, 모니터링(성능·정확도 드리프트) 수립.
핵심 체크포인트(빠른 점검): 모델 크기(바이트) <-> SRAM 여유, 추론 시간 < 목표, 전력 < 배터리 요건, 양자화 정확도 손실 < 설정 허용치.
| 항목 | 사전(비교) | 도입 후(예상) |
|---|---|---|
| 단일 장치 비용 | Raspberry Pi $35 / MCU $5 | 운영 목적에 따라 Pi는 빠른 프로토타이핑, MCU는 대량 저비용 |
| 배터리 수명 | Pi: 낮음(작업 부하에 민감) / MCU: 높음 | 최적화로 MCU는 수배 향상, Pi는 UPS 필요 |
| 평균 지연시간 | Pi: 낮음(빠름) / MCU: 보통~높음 | 양자화+가속기 사용 시 Pi 우세, MCU는 모델 축소로 보정 |