요약
Decide Live는 카메라 한 프레임, 마이크 한 구간, 이미지 한 장, 텍스트 한 줄을 타입이 있는 결정으로 바꾸는 정적 웹페이지입니다. 파인튜닝한 EmbeddingGemma 2(Apache-2.0)를 transformers.js·WebGPU로 브라우저에서 실행하며, 생성 토큰은 0개, 아무것도 업로드하지 않습니다. 서버도, 결정마다의 API 호출도 없고, 가중치는 한 번만 받아 캐시합니다.
결정은 '생성'이 아니어야 한다
"이 달걀은 유정란인가", "이 장면은 진행해도 안전한가", "지금은 네 상태 중 어느 것인가" 같은 물음에 챗 모델로 문장을 쓰게 하는 건 도구 선택이 틀린 겁니다. 생성은 느리고 비결정적이며, 토큰마다 흔들릴 위험이 있습니다. 결정에는 타입이 있습니다. 분류, 예/아니오, 점수. 그 타입을 바로 받아야 합니다.
Decide Live는 임베딩 모델과 보정된 유사도로 그 결정을 내므로 생성 토큰이 0입니다. 이것이 우리가 말하는 ZTC(제로토큰 신뢰도) 의 온디바이스 형태입니다.
결정이 계산되는 과정
아래는 전부 페이지와 모델 카드에 공개돼 있어 그대로 재현할 수 있습니다.
- 질의 임베딩: 미디어 자리표시자가 먼저 오고,
task: classification | query: {질문}, 맥락이 있으면\nContext: {맥락}. 모델이 미디어와 텍스트를 한 번에 함께 임베딩합니다. - 선택지 임베딩: 각 선택지를
title: none | text: {설명}으로 써서 한 번 임베딩하고 캐시합니다. - 풀링: 어텐션 마스크 기준 평균 풀링 후 L2 정규화 → 768차원 단위벡터.
- 채점:
P(선택지) = softmax(scale × cosine(질의, 선택지)). scale은 학습값 19.96(온도 약 0.05)으로decision.json에 들어 있습니다.
P(옵션 i) = softmax_i( 19.96 × cos(e_질의, e_옵션_i) ) 이 경로 어디에도 디코딩 루프가 없습니다. 카드당 인코더 순전파 1회, 그리고 내적뿐입니다.
온디바이스 스택
- transformers.js 4.3.1 이 모델을 Web Worker에서 로드해 임베딩을 반환합니다.
- WebGPU 로 ONNX 그래프를 실행하고, WebGPU가 없으면 WASM(CPU) 로 폴백합니다.
- ONNX는
q4f16과 휴대형q4(4비트 가중치 + 임베딩·위치표는 평범한 8비트 게더 → GatherBlockQuantized가 없는 WASM에서도 동일 파일로 구동), 그리고 4비트 오디오 인코더로 제공됩니다. fp16·fp32는 1GB Space 한도 때문에 넣지 않았습니다. - 가중치는 한 번만 내려받아 브라우저가 캐시합니다. 이후 결정은 전부 로컬입니다.
실제로 할 수 있는 것
- 라이브: 카메라 프레임을 임베딩해 최대 4개의 결정 카드를 채점(카드마다 질문 포함, 학습 포맷으로 카드당 1회). 각 카드에 확률 막대·현재 결정·신뢰 게이트 표시.
- 마이크/음성파일: 같은 카드를 16kHz 모노 2초 창으로. -55dBFS보다 조용한 창은 보내지 않습니다.
- 단일 입력: 이미지·텍스트·음성·짧은 영상 + 질문 + 2~8개 선택지(
키: 설명) 또는 예/아니오. - 샘플 테스트: 정답이 붙은 18개 이미지 테스트를 브라우저에서 돌려 정확도 리포트와 프롬프트 포맷 비교까지.
왜 중요한가
기기에서 도는 결정은 구조적으로 프라이버시가 보장되고(카메라·오디오가 기기를 떠나지 않음), 호출당 비용이 0이며, 첫 로드 후에는 오프라인에서도 됩니다. 여기에 0토큰 형태를 더하면 모든 프레임, 모든 음성 창을 클라우드 비용·왕복 지연 없이 채점할 수 있습니다. 이것이 실용적 엣지 지능의 모습입니다.
FAQ
업로드되는 게 있나요?
없습니다. 카메라·오디오·이미지·텍스트는 기기에서 처리됩니다. 받는 건 모델 가중치뿐이고 그마저 한 번입니다.
어떤 모델인가요?
google/embeddinggemma-2(Apache-2.0)의 결정 파인튜닝판을 ONNX로 올려 transformers.js로 WebGPU/WASM에서 돌립니다.
왜 0토큰인가요?
질의 임베딩과 선택지 임베딩의 코사인 유사도에 softmax를 씌운 것이라 텍스트 생성이 없습니다. 그래서 결정적이고 쌉니다.
GPU가 필요한가요?
아니요. 빠르게 하려고 WebGPU를 쓰지만 없으면 CPU(WASM)로 느리게라도 동작합니다.
제작 VIDRAFT / FINAL-Bench · Apache-2.0. 직접 해보고, 페이지 소스를 열어 결정 경로 전체를 확인해 보세요.