WebFPGA로 브라우저 내 TinyML 가속화하기
새로운 오픈 소스 프레임워크인 WebFPGA를 사용하면 개발자가 웹 페이지에서 직접 10ms 미만의 속도로 TinyML 추론을 실행할 수 있습니다. 이 프레임워크는 불과 수십 밀리와트(mW)만을 소비하며 모든 데이터 바이트를 장치 내에 유지하는 USB 연결 FPGA를 사용합니다.
마이크로컨트롤러에서 실행되는 작은 신경망인 TinyML 모델은 이제 온디바이스(on-device) AI의 표준이 되었습니다. 하지만 개발자가 추론 기능을 브라우저로 옮길 때 속도, 전력, 개인정보 보호 사이에서 여전히 고민해야 합니다. 기존 방식은 그래픽 프로세서에서 실행되는 WebGPU에 의존하거나, 데이터를 장치 외부로 전송하는 클라우드 서비스에 의존합니다. 두 방식 모두 지연 시간을 높이고, 더 많은 에너지를 소모하며, 원시 입력 데이터를 원격 서버에 노출시킵니다.
WebFPGA는 이러한 문제들을 해결합니다. 브라우저는 WebUSB API를 통해 FPGA와 직접 통신합니다. 이 API는 FTDI USB-to-serial 컨트롤러와 통신하며, 이 컨트롤러는 Lattice iCE40-UP5K 칩을 프로그래밍합니다. 비트스트림(bitstream)이 로드되면, FPGA는 하드웨어 가속기에서 모델을 완전히 실행하는 TinyML 런타임을 구동합니다. 개발자 입장에서는 단 한 번의 JavaScript 호출로 .bit 파일을 로드하고 입력 텐서(tensor)를 스트리밍할 수 있습니다.
수치 비교
- WebFPGA: 지연 시간 4ms, 전력 소모 ~30mW, 호스트를 벗어나는 데이터 없음.
- WebGPU: 지연 시간 12ms, 전력 소모 ~200mW, CPU/GPU가 여전히 데이터 경로의 일부를 처리하므로 일부 노출 위험이 있음.
- Cloud inference: 지연 시간 80ms, 네트워크 스택 작동 시 전력 소모 ~500mW, 모든 샘플이 원격 서버로 전송됨.
이러한 수치는 매 밀리초가 중요하고 배터리 수명이 제한적인 시나리오에서 WebFPGA의 필요성을 명확히 보여줍니다.
실제 활용 시나리오
- **음성 비서(Voice assistants)**가 6ms 미만으로 반응하며, 오디오를 장치 외부로 절대 전송하지 않습니다.
- 산업용 센서 모니터링은 인터넷이 연결되지 않은 고립된 장비에서도 이상 징후가 나타나는 즉시 감지합니다.
- **실시간 이미지 필터(On-the-fly image filters)**가 10ms 미만으로 적용되어, CPU를 UI 렌더링에 집중할 수 있게 합니다.
시작하기
- 오픈 소스 툴체인을 설치합니다: Yosys(합성), nextpnr-ice40(배치 및 라우팅), icepack(비트스트림 생성).
- tinyml-conv 유틸리티를 사용하여 TensorFlow Lite 모델(.tflite)을 Verilog로 변환합니다.
- 합성을 실행하고 iCE40-UP5K용 .bit 파일을 생성합니다.
- 웹 페이지에
webfpga.js를 포함합니다. 단 한 번의 JavaScript 호출로 WebUSB를 통해 비트스트림을 로드하고 추론 데이터를 스트리밍합니다.
이 워크플로우는 기존의 FPGA 개발 파이프라인과 유사하지만, 마지막 단계에는 표준 웹 브라우저와 USB 케이블만 있으면 됩니다. 별도의 전용 드라이버나 무거운 SDK가 필요하지 않습니다.
일부 개발자가 여전히 WebGPU나 클라우드를 선택하는 이유
WebGPU는 노트북과 데스크톱 전반에 걸쳐 더 폭넓은 하드웨어 지원을 받으며, 이미 성숙한 그래픽 드라이버와 툴링 생태계를 갖추고 있습니다.
WebFPGA는 브라우저가 단순한 UI 레이어 그 이상이 될 수 있음을 보여줍니다. 브라우저는 초저지연 및 개인정보를 보호하는 AI 하드웨어로 향하는 관문이 될 수 있습니다. 매 밀리초가 중요하고 데이터를 로컬에 유지해야 하는 애플리케이션의 경우, 이 프레임워크는 GPU 중심 또는 클라우드 중심의 추론 파이프라인에 대한 강력한 대안을 제공합니다.
