Google, 엣지 모델 기술 레이어 LiteRT Tensor API 공개
Native Model Authoring for Edge with LiteRT Tensor API
Google은 LiteRT 스택에 C++로 모델을 연산 단위로 구성하는 경량 기술 레이어 'LiteRT Tensor API'를 공개했다. 같은 그래프를 CPU, GPU(ML Drift), NPU에서 실행할 수 있으며, XNNPACK을 거치면 모델 파일 없이도 CPU에서 동작한다. SAM 2의 브라우저 구현에서는 코딩 에이전트를 활용해 10fps 미만에서 30fps 이상으로 개선했다.
LiteRT Tensor API는 개발자가 연산의 종류와 연결을 하나씩 정할 수 있는 기술 레이어다. 스케일링된 내적 어텐션, RMSNorm, KV 캐시 업데이트 같은 LLM용 복합 연산도 다룰 수 있다. 가중치는 Hugging Face의 .safetensors 등 체크포인트에서 변환 스크립트 없이 읽어 들일 수 있다. 전처리, 추론, 후처리를 같은 API로 구성하고 가속기상의 공유 버퍼로 연결하기 때문에 데이터가 CPU를 오가지 않는다.
백엔드는 Tensor의 템플릿 인자로 지정한다. TfLiteMixinTag는 .tflite를 내보내 LiteRT로 CPU, GPU, NPU에서 실행하는 경로이고, XnnpackMixinTag는 같은 코드를 모델 파일 없이 XNNPACK을 통해 CPU에서 직접 실행하는 경로다. 두 태그를 모두 붙이면 양쪽을 지원한다. 많은 모델에서는 기존의 변환 경로가 여전히 기본 선택지이며, 그래프의 저수준 제어나 파이프라인 전체의 가속기 실행이 필요한 경우에 Tensor API를 사용하는 것이 권장된다.
실제 사례로 WebGPU에서 동작하는 Segment Anything 앱을 공개했다. Meta의 SAM 2를 C++로 구현했으며, 클릭이나 Gemma 4 E2B에 의한 자연어 프롬프트로 여러 객체의 분할과 추적을 수행한다. 인코더 522개 연산과 디코더 269개 연산은 모두 GPU에서 동작하며, 전후처리는 프레임당 약 0.34ms가 걸린다. MacBook Pro에서의 측정 결과, Apple MLX(fp16, 이미지 인코더와 마스크 디코더)보다 약 1.5배 빨랐다. macOS와 iOS에서는 Metal, Android에서는 OpenCLl로 같은 C++ 코드를 실행한다. 출력 마스크는 Meta의 PyTorch 참조 구현과 픽셀 단위로 일치한다고 한다.
최적화에는 에이전트 Antigravity가 활용되었다. WebGPU에서는 true/false 출력을 내는 비교 연산이 CPU로 폴백되므로, Greater를 산술 연산으로 다시 작성하고 어텐션 스케일을 가중치에 접어 넣는 등의 변경을 거듭했으며, Hugging Face의 SAM 2와 대조하면서 채택했다. 앞으로는 ML Drift(GPU) 직접 백엔드, NPU용 연산, 그래프 전체의 자동 양자화, .tflite를 내보내는 Python 기술, 동적 형상 지원 확대를 추진한다. 구현과 웹 앱은 LiteRT Samples GitHub 저장소에서 공개되어 있다.
출처: Google Developers Blog · developers.googleblog.com