zerovoids.dev
zerovoids.dev

Ø NEWS

브라우저 AI · 오픈소스

허깅페이스, 브라우저용 WebGPU 커널 207개를 라이브러리로 공개

허깅페이스가 브라우저 WebGPU 추론의 최하단 계층인 셔더 커널을 @huggingface/kernels라는 별도 로더와 207개짜리 커널 컬렉션으로 떼어냈다. 각 커널은 계약·테스트·벤치마크가 함께 버전 관리되는 저장소이고, 실제 기기별 성능·정확성 검증은 브라우저에서 돌리는 Fleet이 크라우드소싱한다.

키워드webglai-ml

브라우저에서 WebGPU로 모델을 돌릴 때 진짜 병목은 API 자체가 아니라 그 밑에서 실제로 실행되는 셔더 코드 쪽에 있다. 허깅페이스는 이 계층을 통째로 떼어 별도 패키지로 만들었다. @huggingface/kernels는 허브에 올라온 WebGPU 커널을 그대로 내려받아 실행하는 로더이고, 첫 컬렉션으로 207개 커널을 함께 내놨다.

커널 하나가 저장소 하나

webgpu-kernels 조직 아래, 커널마다 독립된 저장소와 카드가 있다. 저장소 안에는 다섯 종류의 파일이 함께 버전 관리된다: 입력·출력·속성·타입 제약과 shape 도출 규칙을 정의하는 manifest.json(연산 계약의 원본), 식별자·다이제스트·출처를 기록하는 metadata.json, 정확성 검증용 test.json, 성능·튜닝 케이스인 bench.json, 그리고 기기·요청별로 셔더를 만들어내는 파라미터화된 *.wgsl.jinja 템플릿. 예시로 소개된 ai.onnx.Add(양방향 브로드캐스팅을 지원하는 원소별 덧셈) 카드에도 이 다섯 파일이 그대로 담겨 있다.

같은 연산이라도 워크그룹 크기·메모리 접근 패턴·벡터화 방식에 따라 기기별 성능이 크게 갈린다. 커널을 독립된 버전 아티팩트로 떼어내면 이 최적화 작업을 상위 런타임 개발과 분리해서 따로 굴릴 수 있다.

쓰는 법

설치는 npm install @huggingface/kernels@preview, 아직 프리뷰 태그다. 실행에는 WebGPU를 지원하는 브라우저가 필요하고, 코드에서는 "gpu" in navigator로 지원 여부를 먼저 확인한다. getKernel에 허브 저장소 ID와 계약 버전을 넘겨 함수를 받아온 뒤, 타입이 정해진 입력 데이터와 텐서 shape을 같이 넘겨 호출하는 식이다.

Fleet — 검증을 브라우저로 돌린다

함께 공개된 Fleet은 브라우저에서 도는 GPU 벤치마크·테스트 도구다. 사용자 동의를 받아 각자의 기기에서 커널을 돌려 정확성 오류나 비정상적으로 느린 케이스를 찾아내고, 그 결과를 모아 커널 변형을 고치는 데 쓴다. 테스트 랩 하나로는 갖추기 어려운 다양한 기기의 데이터를 커뮤니티가 직접 보태는 구조다.