허깅페이스, 브라우저 AI용 WebGPU 커널 207개 공개
브라우저에서 AI 모델을 실행하는 일은 모델 파일을 브라우저 친화적인 형식으로 바꾸는 것만으로 끝나지 않는다. 실제 추론 과정은 행렬 곱셈, 정규화, 합성곱, 어텐션, 양자화, 데이터 레이아웃 변환 같은 수많은 GPU 연산으로 분해된다. 이 연산들이 하드웨어에 맞게 구현되지 않으면 WebGPU를 지원하는 모델도 충분히 빠르게 동작하기 어렵다. 허깅페이스가 공개한 @huggingface/kernels는 바로 이 하위 계층을 겨냥한다.
이번 공개의 핵심
- 초기 컬렉션은 207개의 WebGPU 커널로 구성되며,
webgpu-kernels조직의 개별 저장소에서 Apache-2.0 라이선스로 배포된다. - 각 커널은 WGSL 셰이더만 제공하는 것이 아니라 연산 계약, 지원 타입과 형태, 정확성 테스트, 벤치마크 사례, 메타데이터, 매개변수화된 WGSL 템플릿을 함께 담는다.
- JavaScript 패키지는 허브 저장소 ID와 계약 버전을 지정해 커널을 불러온 뒤, 타입이 지정된 데이터와 텐서 형태를 전달해 실행하도록 연결한다.
- Fleet는 브라우저에서 GPU를 테스트하고 벤치마크하는 도구다. 사용자가 동의하면 다양한 실제 기기에서 성능과 정확성에 관한 근거를 모을 수 있다.
이 구조의 핵심은 셰이더를 재사용 가능하고 버전 관리되는 소프트웨어 구성요소로 만든다는 점이다. 예를 들어 ai.onnx.Add 저장소는 다방향 브로드캐스팅을 포함한 연산 의미뿐 아니라, 동일한 형태, 벡터화 브로드캐스팅, 스칼라 처리, 일반 브로드캐스팅에 대응하는 여러 구현 경로를 제공한다. 런타임은 입력 형태와 기기에 맞는 변형을 선택할 수 있으며, 애플리케이션의 호출 인터페이스는 바뀌지 않는다.
계약 버전은 ONNX opset, 연산자의 since_version, 모델 리비전과 별도로 관리된다. 따라서 상위 런타임은 안정적인 JavaScript 인터페이스에 의존하면서도 하위 구현을 계속 교체하고 개선할 수 있다. 정확성 테스트와 벤치마크가 구현과 함께 공개되므로, 다른 개발자가 자체 WebGPU 커널을 만들거나 런타임에 연산을 통합할 때 참고 자료로 활용할 수도 있다.
벤치마크를 어떻게 봐야 하나
허깅페이스는 Apple M4 GPU에서 이 컬렉션을 ONNX Runtime Web의 개발 버전에 포함된 ORT WebGPU와 비교했다. 207개 연산의 1,756개 테스트 사례에서 시작해 양쪽 출력이 일치하고 측정 결과가 신뢰할 수 있는 809개 사례를 남겼다. 이 비교 범위에서 허깅페이스는 기하평균 2.57배, 중앙값 1.90배의 속도 향상을 보고했다.
다만 이 수치를 모든 환경에 적용되는 보편적 결과로 해석해서는 안 된다. WebGPU는 공통 API를 제공하지만 성능까지 자동으로 표준화하지는 않는다. 워크그룹 크기, 메모리 접근 패턴, 벡터화, 데이터 타입, 연산 융합, 입력 형태, 브라우저, 드라이버, GPU 아키텍처가 최적 구현을 바꿀 수 있다. 입력이 매우 작으면 실제 계산보다 GPU 왕복 비용이 더 클 수도 있다.
의미와 영향
커널을 상위 런타임과 분리하면 애플리케이션 API를 유지하면서 개별 연산을 독립적으로 최적화할 수 있다. Fleet는 일반적인 테스트 랩이 포괄하기 어려운 실제 기기 정보를 피드백에 포함시키는 통로가 되지만, 사용자 동의와 표본의 대표성, 기기 간 비교 방식은 계속 중요하다. 이번 발표는 새 모델 출시라기보다 브라우저 기반 로컬 추론을 뒷받침하는 GPU 연산 계층을 더 쉽게 찾고, 검증하고, 버전 관리하도록 만드는 인프라 공개에 가깝다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…