27.5KB WebGPU 모델로 문법 없이 75개 언어 소스에 하이라이트
- gpu-lexer는 소스 코드를 단어·공백·줄바꿈·기호로 나눈 뒤, WebGPU의 소형 모델이 파일 내부 문맥을 함께 보고 9개 토큰 유형을 분류해 인접 구간을 반환함
- 학습에서 제외한 파일에서 현 모델의 토큰 라벨은 Shiki와 12.57% 다르며, 이는 객관적 정답률이 아니라 Shiki와의 일치도이고 미학습 언어·실제 코드에서는 차이가 더 커질 수 있음
- GitHub Innovation Graph의 2026년 1분기 상위 25개 언어, 학습 제외 파일 1,069개 비교에서 Shiki 일치도는 gpu-lexer 90.20%, Prism.js 87.01%, Highlight.js 84.65%였음
- 브라우저 번들은 Brotli 압축 기준 27.5KB이며 모든 언어가 같은 모델을 쓰고, 556만 자
three.min.js10개를 워밍업 뒤 처리한 측정에서 471.7ms로 Shiki의 30.4초보다 짧았음 - 데모는 WebGPU 미지원 환경에서 하이라이트 없이 검은 글자로 보일 수 있으며, 토론에서는 안드로이드 Firefox와 일부 리눅스 Firefox·Chromium에서 이 문제가 보고됨
Hacker News opinions
안드로이드 파이어폭스 모바일에서는 작동하지 않더라. WebGPU 지원이 아직 없어서 그런 듯함
5MB짜리 코드를 한꺼번에 하이라이트할 일은 드물고, 비결정적인 결과도 실사용에는 애매해 보임. 그래도 브라우저에서 이런 걸 돌린다는 시연으로는 멋짐
큰 파일 전체를 칠하는 용도보다 편집기에서 보이는 부분만 다시 하이라이트하는 데 쓸 만함. 그 조각은 완전한 프로그램이 아니니 어차피 문맥을 추정해야 하고, 언어마다 그 처리가 꽤 까다로움
50MB JSON을 실수로 열어서 편집기가 문법 강조하다 죽는 일을 종종 겪어서, 대용량 처리 얘기가 아주 비현실적이진 않음
토큰화도 이 모델이 하는 건지 궁금함. 언어 전체 구조를 파싱하는 쪽으로도 확장 가능한가?
27KB는 정말 작음. 내가 만든 언어별 PHP 파일용 결정적 규칙 모음도 32KB인데, 이건 여러 언어에 공통으로 쓰잖아
흔한 언어 정확도보다 아직 없는 언어나 SQL 방언, 관용구를 섞어 쓴 대충 맞는 코드에 어느 정도 색을 입혀준다는 점이 더 흥미로움
이 작은 모델이 실제로 학습의 대부분을 처리하는 거라면 학습 과정 설명이 궁금함. 작은 모델로 한 가지 일을 잘하게 만드는 접근을 좋아함
리눅스의 Firefox와 Chromium에서는 데모가 전부 검은 글자로 나왔고 iOS에서는 잘 됐음. 콘솔 오류도 없어서 조용히 실패하는 것처럼 보임
리눅스에서는 navigator.gpu가 undefined인지 먼저 확인해봐야 함. WebGPU가 없으면 호출할 API 자체가 없어서 오류도 안 나고, 이 데모는 최소한 'WebGPU unavailable'이라고 표시했어야 한다고 봄
리눅스 Firefox와 Chromium은 배포판과 설정에 따라 WebGPU를 기본 비활성화한 경우가 많음. 브라우저별 활성화 방법을 찾아서 켜면 될 가능성이 큼
작은 ML 모델을 문법 대신 쓰는 발상은 신선한데 일관성이 걱정됨. 예를 들어 null이 === 왼쪽에 있을 때는 값으로 안 칠해지던데, 학습에 없던 언어에서도 실제로 시험했는지 알고 싶음