Pyodide 래퍼에서 Edge AI 엔진으로
Source: Dev.to
몇 달 전, 브라우저에서 바로 Python ML 모델을 실행할 수 있는 React 라이브러리 v1을 배포했습니다. 작동은 했지만, 피드백은 직설적이고 공정했습니다:
“이건 기본적으로 Pyodide를 감싼 래퍼에 불과합니다.”
이 한 줄이 중요한데, 실제 문제를 드러냈기 때문입니다.
v1이 옳았던 점 (그리고 틀린 점)
v1은 가능성을 입증했습니다
- Python + WASM + React가 클라이언트‑사이드에서 동작할 수 있음을 증명했습니다.
실제 앱에서 나타난 문제들
- 추론이 UI를 멈추게 함.
- 워커가 React 컴포넌트보다 오래 살아남아 메모리 누수 발생.
- WASM OOM(메모리 초과)으로 인해 조용히 멈춤.
- 정리 로직이 취약하고 흩어져 있었음.
Python을 실행하는 것이 어려운 부분이 아니라, 실패를 관리하는 것이 어려웠습니다.
v2에서 바뀐 점
- 전체 재작성 – 래퍼에서 Edge ML을 위한 인프라 레이어로 전환.
- 감시된 워커 풀 – 멈추거나 OOM이 된 워커를 자동으로 종료하고 교체.
- 엄격한 React 라이프사이클 바인딩 – 컴포넌트 언마운트 = 워커 종료. 좀비 워커 없음.
- 제로‑카피 데이터 경로 – 가능한 경우
SharedArrayBuffer를 사용해 대형 텐서 직렬화를 피함.
목표는 단순히 속도 향상이 아니라, 실패 상황에서도 예측 가능성을 확보하는 것이었습니다.
앞으로의 방향
현재 Neural Bundler를 프로토타이핑하고 있습니다 — Python 수학 로직을 WebGPU 컴퓨트 셰이더로 변환하는 빌드‑타임 컴파일러로, 수학 연산이 무거운 워크로드에서는 Pyodide를 완전히 건너뛰게 합니다. 아직 초기 단계이지만 매우 유망합니다.
클라이언트‑사이드 ML, 엣지 추론, 혹은 WASM + React와 관련된 작업을 하고 계시다면 의견을 듣고 싶습니다.