브라우저에서 1비트 27B 모델 구동: 6GB RTX 3060 노트북에서 초당 25~30 토큰 (WebGPU, 설치 불필요)
1-bit 27B in the browser: 25–30 tok/s on a 6 GB RTX 3060 Laptop (WebGPU, no install)
핵심 요약
WebGPU 기반 브라우저 추론 엔진으로 27B 1비트 모델을 노트북에서 고속 구동하는 기술을 선보였습니다.
- 브라우저 추론 엔진 — WebGPU와 WGSL로 직접 개발한 설치 없는 추론 환경 제공
- 1비트 모델 최적화 — 27B 파라미터를 3.8GB VRAM에 압축하여 30 tok/s 속도 달성
- 성능 최적화 — GPU 뱅크 충돌 해결 및 커널 최적화를 통해 디코드 속도 대폭 향상
- 다양한 기기 지원 — 27B 모델 외에도 0.8B~4B 모델을 통해 모바일 및 저사양 기기 지원

mentria.ai는 내가 WebGPU/WGSL로 밑바닥부터 혼자 만들고 있는 브라우저 추론 엔진이야. 이번 주에 드디어 오랫동안 노리던 이정표를 찍었어. 6GB VRAM을 가진 RTX 3060 노트북 GPU에서, 크롬 브라우저로 웹페이지를 띄우기만 하면 27B 1비트 모델이 초당 최대 30토큰씩 튀어나와. 설치도 필요 없고, 서버도 없고, 데이터가 기기 밖으로 나갈 일도 없어.
모델. Prism ML에서 학습시키고 공개한 네이티브 1비트 모델인 Bonsai-27B야. 이걸 우리 엔진용으로 다시 패키징하고, 구동할 커널을 직접 짰어. 성능 검증도 내가 직접 다 마쳤고(FP16 Qwen3.6-27B 대비 전체 평가 델타값은 HF 카드에 있음). 가중치 하나하나가 1비트 부호 비트고 128개 가중치마다 스케일이 하나씩 붙어 있어. 파라미터당 약 1.14비트 수준이라 270억 개의 파라미터가 GPU 메모리 3.8GB에 쏙 들어가지. 재패키징이랑 수치 정보는 여기: huggingface.co/mentriaai/Bonsai-27B-mentria
초당 30토큰을 찍어낸 엔지니어링. 이 글 쓰기 이틀 전만 해도 같은 노트북에서 15토큰/초였어. 디코딩은 메모리 대역폭 싸움이거든. 27B 모델에서 단어 하나 뽑을 때 GPU 디스패치가 804번 일어나는데, 그중 401번이 1비트 행렬-벡터 곱셈 커널이야. 이게 단어 하나당 모델의 3.6GB 행렬 곱셈 가중치를 한 번씩 훑어(임베딩까지 합치면 3.8GB). 결국 승리한 건 폰용으로 짰던 커널이었어. 1비트 가중치 4개는 부분 합 결과가 16개밖에 안 나오거든. 그래서 16개 결과를 온칩 스크래치 메모리에 미리 다 계산해두고, 각 행이 곱셈 대신 그 테이블에서 값을 읽어오게 바꿨지(station 258 — 팩트 페이지에 번호 매겨진 상세 설명들). 근데 Ampere 아키텍처에서 엉뚱한 데서 막히더라고. 스크래치 메모리에 뱅크가 32개 있는데, 테이블 주소 지정 방식 때문에 워프(warp)마다 스레드 16개가 같은 뱅크를 찔러대서 대역폭의 38%밖에 못 썼던 거야. 행마다 패딩 슬롯을 하나씩 넣어서 주소를 뱅크 전체로 분산시켰더니, 단어당 커널 점유 시간이 26.5ms에서 21ms로 줄었어. 테이블 최적화로 15에서 26토큰/초까지 올린 상태에서 이걸 더하니 32토큰/초까지 찍히더라. 채팅 UI에서 샘플링이랑 오버헤드 빼면 25~30토큰/초가 나오는 거지(s259). 프롬프트 단계도 타일 레이아웃에서 똑같은 문제가 있었는데, 리타일링 한 번 해주니까 1,489토큰짜리 프롬프트 처리 시간이 29.6초에서 25.3초로 줄었어. 모든 변경 사항은 이전 빌드랑 결과값이 바이트 단위까지 똑같을 때만 적용했고, 그래서 커널이 부분 합을 고정된 순서로 더하게 만들고 44% 점유율 제한을 감수했지.
여기 적힌 모든 주장은 엔진 팩트 페이지에 번호별로 상세히 정리해뒀어.

