LiteRT.js가 TensorFlow.js를 압도하고 있습니다

WebGPU를 사용하는 LiteRT.js는 M2 Max 데스크톱 GPU에서 MobileNetV2 추론을 0.41ms 만에 수행하며, 2,439 FPS를 구현합니다. 이는 동일한 하드웨어에서 TensorFlow.js보다 25배 이상 빠른 속도입니다. 모델의 크기가 커질수록 그 격차는 더욱 벌어지며, 웹 기반 머신러닝을 과거 네이티브 앱 전용이었던 성능 계층으로 끌어올리고 있습니다.

벤치마크가 중요한 이유

개발자들은 주로 WebGL 백엔드를 통해 온디바이스 추론을 수행하기 위해 TensorFlow.js를 사용해 왔습니다. WebGL은 텐서 연산을 브라우저의 2D 그래픽 파이프라인에 매핑합니다. 이는 어디서나 작동하지만, 딥러닝 모델에 필요한 대규모 병렬 처리를 위해 설계되지는 않았습니다. 차세대 그래픽 API인 WebGPU는 GPU 컴퓨팅 유닛에 직접 접근할 수 있게 해줍니다. LiteRT.js는 TensorFlow-Lite 모델을 위해 WebGPU 기반 추론 엔진을 제공하는 최초의 라이브러리이며, Google은 3배의 속도 향상을 보고했습니다. 독립적인 테스트에서는 이보다 더 큰 성능 향상이 나타났으며, 이는 WebGPU가 웹 ML의 기본 경로가 될 것인지에 대한 의문을 제기합니다.

테스트 수행 방식

TensorFlow-Lite로 변환된 두 가지 이미지 분류 모델인 MobileNetV2와 EfficientNet-Lite4를 벤치마킹했습니다. 테스트는 Apple Silicon M2 Max 칩에서 진행되었습니다. 각 모델에 대해 수많은 반복 실행을 통해 단일 순전파(forward pass)의 지연 시간(latency)을 측정하고 초당 프레임 수(FPS)를 기록했습니다. 동일한 모델을 WebGL 백엔드의 TensorFlow.js로 실행하여 각 라이브러리의 콜드 스타트(cold-start) 시간도 기록했습니다.

결과: 속도 및 시작 시간

  • MobileNetV2

    • LiteRT.js (WebGPU): 0.41ms 지연 시간 → 2,439 FPS
    • TensorFlow.js (WebGL): 10.82ms 지연 시간 → 92 FPS
  • EfficientNet-Lite4

    • LiteRT.js (WebGPU): 0.62ms 지연 시간 → 1,623 FPS
    • TensorFlow.js (WebGL): 보고되지 않았으나, MobileNetV2에서 이미 25배 이상의 격차가 확인되었습니다.

TensorFlow.js는 첫 추론을 시작하기 전 WebGL 셰이더를 컴파일하는 데 약 10초(10,014ms)가 소요되었습니다. 반면 LiteRT.js는 4.3ms 만에 준비를 마쳐, 인터랙티브 앱에서 발생하는 콜드 스타트 페널티를 사실상 제거했습니다.

모델 크기를 5배로 늘렸을 때 지연 시간은 50%만 증가했는데, 이는 GPU의 병렬 처리가 추가 작업의 대부분을 흡수한다는 것을 확인시켜 줍니다. 그 결과, 브라우저가 서버를 거치지 않고도 실시간 비디오 스트림, AR 오버레이 또는 비전 모델의 신속한 프로토타이핑을 처리할 수 있는 성능의 한계를 넓혔습니다.

수치에 숨겨진 이면

  • 배칭(Batching) – 대부분의 TensorFlow-Lite 모델은 배치 차원(batch dimension)이 1로 고정되어 있습니다. 한 번의 호출로 여러 이미지를 입력하는 기능이 기본적으로 지원되지 않으므로, 개발자는 Web Worker를 생성하거나 수동으로 입력을 파이프라이닝해야 합니다.
  • 메모리 관리 – LiteRT.js는 GPU 텐서를 자동으로 가비지 컬렉션(garbage-collect)하지 않습니다. 개발자는 생성한 각 텐서에 대해 .delete()를 호출해야 하며, 그렇지 않으면 수백 번의 추론 후 GPU 메모리가 고갈될 위험이 있습니다.
  • 하드웨어 도달 범위 – WebGPU는 데스크톱 Chrome 및 Firefox에서 안정적입니다. Android의 Chrome이나 iOS의 Safari를 포함한 모바일 브라우저에서는 실험적 플래그를 통해서만 API를 노출하거나 아예 지원하지 않습니다. 이러한 플랫폼에서는 WASM 백엔드가 유일하게 범용적으로 사용 가능한 경로이지만, 대규모 모델에서는 현저히 느립니다.

이러한 제약 사항은 순수 속도는 인상적일지라도, 이를 구현하기 위한 엔지니어링 노력이 만만치 않을 수 있음을 의미합니다.

한계 및 트레이드오프

TensorFlow.js의 WebGL 백엔드는 여전히 거의 보편적인 호환성을 제공합니다. 데스크톱, Android, iOS 등 다양한 환경을 대상으로 하는 개발자는 처리량(throughput)은 낮더라도 어디서나 실행되는 단일 코드 경로에 의존할 수 있습니다. WASM 백엔드는 거의 모든 하드웨어에서 실행되지만, 여기서 측정한 대규모 모델의 경우 WebGPU보다 뒤처집니다.

LiteRT.js는 WebGPU가 활성화된 데스크톱 환경을 대상으로 할 때 빛을 발합니다. .tflite 모델을 직접 실행하므로 개발자는 변환 과정 없이 Hugging Face나 Kaggle에서 모델을 가져와 원래의 양자화(quantization)와 성능을 유지할 수 있습니다. 트레이드오프로는 배포 가능한 환경이 좁고 세심한 리소스 관리가 필요하다는 점이 있습니다.

개발자가 고려해야 할 사항

  • 대상 플랫폼 – 웹 전용 데스크톱 도구(예: 실시간 스타일 전이를 적용하는 디자인 앱)의 경우, LiteRT.js와 WebGPU를 사용하는 것이 가장 좋은 선택일 가능성이 높습니다.
  • 모델 크기 – 크고 연산 집약적인 모델일수록 GPU 병렬 처리의 이점을 가장 많이 누릴 수 있습니다. 작은 모델은 추가적인 엔지니어링 비용을 정당화하지 못할 수도 있습니다.
  • 메모리 관리 규율 – 명시적인 텐서 삭제를 계획하거나, 리소스를 자동으로 해제하는 스코프(scope) 내에서 추론 호출을 래핑(wrap)하십시오.
  • 폴백(Fallback) 전략 – WebGPU를 활성화할 수 없는 브라우저를 위해 WASM 또는 WebGL 폴백을 제공하여 더 넓은 사용자층이 앱을 사용할 수 있도록 하십시오.

요약

LiteRT.js는 WebGPU가 웹 기반 추론을 밀리초 미만(sub-millisecond) 영역으로 끌어올릴 수 있음을 증명하며, 데스크톱 GPU에서 TensorFlow.js보다 25배 이상 빠른 속도를 제공합니다. 이 기술은 아직 성숙 단계에 있으므로, 개발자는 배치(batching) 제한, 수동 메모리 정리, 제한적인 모바일 지원 등의 문제를 해결해야 합니다. 실시간 성능을 요구하는 데스크톱 우선 경험을 위해서는 이 새로운 라이브러리가 매력적인 대안을 제시하지만, 크로스 플랫폼 도달 범위를 위해서는 기존의 WebGL 및 WASM 백엔드가 여전히 필수적입니다.