피드로 돌아가기
I Trained a Neural Network on Real Medical Data and Fit It in 8.9 kB of Pure C
Dev.toDev.to
AI/ML

INT8 양자화로 구현한 8.9kB 규모의 C 기반 혈압 예측 회귀 모델

I Trained a Neural Network on Real Medical Data and Fit It in 8.9 kB of Pure C

Alex Rosito2026년 6월 20일5intermediate

Context

Embedded System 환경에서 무거운 Runtime과 의존성 없이 동작하는 경량 Neural Network의 필요성 제기. 기존 Classification 중심의 Hasaki 툴을 활용하여 연속적인 수치 예측이 필요한 Regression 문제로 확장 가능성을 검증함.

Technical Solution

  • RobustScaler 적용을 통한 의료 데이터 내 Outlier 영향 최소화 및 입력 값 정규화 수행
  • Sigmoid 활성화 함수를 이용해 타겟 값인 sysBP를 [0, 1] 범위로 매핑한 Regression 구조 설계
  • 14-32-16-1 구조의 MLP 아키텍처와 Adam Optimizer를 통한 학습 효율 최적화
  • Floating point 모델을 INT8로 Quantization 하여 정밀도 손실을 최소화하고 메모리 점유율 극대화
  • 외부 라이브러리 없이 C Header 파일로 Weights와 Biases를 직접 내보내는 Zero-dependency 배포 방식 채택

Impact

  • 최종 모델 크기 8.9kB 달성 및 순수 C 언어 기반의 Predict 함수 구현
  • 검증 데이터셋 기준 RMSE 10.4 mmHg 및 MAE 7.8 mmHg 기록
  • 단일 샘플 예측 오차 1.4 mmHg 달성으로 임상 등급 측정기 기준(±3 mmHg) 충족
  • INT8 양자화 후 Mean Error 차이가 0.000021에 불과한 높은 정밀도 유지

Key Takeaway

특정 목적(Classification)으로 설계된 도구라도 Linear/Sigmoid와 같은 기본 Activation 조합을 통해 문제 정의만 변경하면 Regression으로 확장 가능한 범용적 설계의 중요성 확인.


- MCU 등 리소스 제한 환경에서는 Runtime 없는 C Header 기반 모델 배포 검토 - 의료 데이터와 같이 이상치가 많은 데이터셋에는 MinMaxScaler보다 RobustScaler 우선 고려 - Regression 문제 적용 시 Classification용 Accuracy 지표가 아닌 Val Loss 및 RMSE 기반 성능 평가 수행 - 모델 경량화 시 INT8 Quantization을 통해 추론 정밀도와 메모리 효율 간의 Trade-off 정밀 분석

원문 읽기