WebNPU API를 상상하다
Warning
WebGPU는 Direct3D 12, Metal, Vulkan 같은 요즘 GPU 기능에 접근해서 렌더링이나 계산 작업을 돌릴 수 있게 해 주는 API다.
WebGL이랑 비슷한데, 훨씬 더 깊은 GPU 기능까지 쓸 수 있다.
근데 이걸 NPU에도 똑같이 할 수 있다면?
그래서 가상의 API, WebNPU를 제안해 본다.
한 줄씩 정리하면 이렇다.
- WebAssembly는 웹에서 CPU 성능을 온전히 쓰게 해 준다.
- WebGPU는 웹에서 GPU 성능을 온전히 쓰게 해 준다.
- WebNPU는 웹에서 NPU 성능을 온전히 쓰게 해 준다.
애플의 Neural Engine 덕분에 온디바이스 ML은 이미 시작됐다. 간단한 Siri 명령부터 Stable Diffusion 모델 통째로 돌리는 것까지 별의별 작업을 다 한다. 물론 서버에서 돌리는 대규모 ML보다 성능은 약하다. 근데 레이턴시나 개인정보 보호는 훨씬 낫다. 구글 같은 다른 회사들도 텐서 같은 칩을 만들면서 따라오고 있다. 문제는 지금까지 이 칩들을 네이티브 앱에서만 쓸 수 있다는 거다. 웹에서는 TensorFlow.js처럼 추상화 레벨이 엄청 높은 도구로, 그것도 CPU에서 겨우 돌리는 정도다.
언젠가 AI 네이티브가 (클라우드 네이티브처럼) 표준이 되면, 웹 기술로 NPU에 접근하게 해 달라는 목소리가 점점 커질 거다. 그리고 이건 모두한테 좋은 일인데...
- 소비자. 전부 로컬에서 빠르고 안전하게 돌아간다. 앞으로는 AI가 서비스 곳곳에 들어갈 텐데, AI 기능 하나 쓰자고 앱을 깔 필요가 없다. 웹사이트에 들어가기만 하면 된다.
- 개발자. AI 서비스를 내려고 추론 서버를 따로 띄울 필요가 없다. 한 번 만들면 어디서나 돌아가니까(Write Once Run Everywhere) 개발도 단순해진다.
- 회사. 앞으로 규제 때문에 데이터 모으기는 점점 더 어려워질 거다. WebNPU가 있으면 애초에 모을 필요가 없다. AI 작업을 사용자 기기에서 돌리니까 서버 부하도 줄고, 서비스 확장도 쉬워진다.
- 하드웨어 회사. AI 작업에 맞춘 전용 하드웨어를 만들어서 기기 제조사나 다른 고객에게 팔 새로운 사업 기회가 생긴다.
- 정부. AI 작업을 사용자 기기에서 로컬로 돌리면 네트워크로 보내는 데이터 양이 줄고, 그만큼 데이터 유출이나 다른 보안 사고 위험도 줄어든다. 그러면 규제 기관도 데이터가 책임감 있게, 안전하게 처리되도록 챙기기가 쉬워진다.
다만 아직 AI 초기라는 건 알고 가야 한다. 하드웨어 회사마다 접근 방식도 요구 사항도 달라서, NPU를 만드는 표준 같은 게 딱히 없다. 예를 들어 Core ML은 Core ML 모델을 쓰고 텐서플로 라이트는 FlatBuffer 모델을 쓴다. 아무래도 VP9 vs HEVC나 USDZ vs glTF 때처럼 애플과 구글의 싸움을 또 보게 될 것 같다.