
스마트폰의 WebGPU로 분산 AI 기반을 만들려다 정밀도 차이로 출력이 갈라진 이야기 (ArcAsha-OS 개발기)
요약
스마트폰을 에지 노드로 활용하는 분산 AI 기반 ArcAsha-os의 개발 과정을 다룹니다. WebGPU와 WebSocket을 이용한 아키텍처 설계와 이종 런타임 간 수치 정밀도 차이로 인한 출력 불일치 문제를 분석합니다.
핵심 포인트
- WebGPU와 WebSocket을 활용한 스마트폰 기반 분산 지능 아키텍처 구현
- FP32와 FP16 간의 정밀도 차이로 인한 토큰 생성 경로 이탈 현상 규명
- 통신 오버헤드 최소화를 위한 바이너리 제로 카피 텐서 프로토콜 도입
- 단말별 소규모 모델 탑재 및 오케스트레이터 기반 동적 연계 방식 채택
Big Tech의 거대 데이터 센터에 대항하여, **"내 방에 있는 스마트폰 군단을 연결해 분산 지능을 만든다"**를 테마로, 오픈 소스 에지 분산 AI 기반인 ArcAsha-os를 개발하고 있습니다.
이번에 Mac의 Master (Orchestrator)에 대해, iPhone (15 Pro / 12 mini)을 브라우저의 WebGPU + WebSocket을 경유하여 에지 노드(Edge Node)로서 정상적으로 접속시키는 실험(EXP-0002)에 성공했습니다.
본 기사에서는 이 프로토타입의 아키텍처와, 이종 런타임(Runtime) 간(PyTorch vs ONNX/WebGPU)에 직면했던 "정밀도 수치의 미세한 괴리로 인해 출력 텍스트가 갈라지는 메커니즘" 등의 고된 실험 검증 데이터에 대해 공유합니다.
흔히 있는 "하나의 거대 모델(예: 70B)을 잘게 나누어 스마트폰에 배포하는" 수법은 단말 간의 통신 레이턴시(Latency)가 병목 현상이 되기 쉽습니다.
ArcAsha는 접근 방식을 바꾸어, **"단말마다 소규모 모델(~0.6B 등)을 통째로 탑재하고, 이를 오케스트레이터(Orchestrator)가 동적으로 연계하는 분산 지능 패브릭(Fabric)"**을 목표로 하고 있습니다.
Master (Heart of Wisdom): 라우팅(Routing), 스케줄링(Scheduling), 상태 관리
Edge Node (WebGPU/WebSocket): 브라우저 상에서 동작하는 추론 엔진 (iPhone / PC 등)
키보드 옆의 iPhone이 Mac Master에 정상적으로 인식되어 노드로 대기 중인 상태 (이미지가 불분명하여 보기 어렵지만 제대로 기능하고 있습니다.)
개발 중에 가장 흥미로웠던 점은 **Python (PyTorch FP32 Golden)**과 JavaScript (ONNX / WebGPU FP16) 사이의 수치 정밀도 비교 실험(EXP-0001)입니다.
노드 간의 통신 오버헤드(Overhead)를 극한까지 줄이기 위해, **48바이트 헤더를 가진 바이너리 제로 카피 텐서 프로토콜(Binary Zero-copy Tensor Protocol)**을 구현했습니다. 이를 통해 브라우저(WebWorker)에서 GPU로의 텐서(Tensor) 전송 속도를 마이크로초(microsecond) 단위로 억제하고 있습니다.
검증 중, PyTorch (FP32)와 ONNX Runtime (FP16)에서 토큰(Token) 생성 출력이 도중에 어긋나는 현상이 발생했습니다.
원인을 분석한 결과, Top-1 토큰과 Top-2 토큰의 로짓 차이(Logit Margin)가 0.02 이하로 매우 작은 국면에서, FP16의 반올림 오차(Rounding Error)로 인해 1위와 2위의 순위가 역전되어, 그 이후의 자기 재귀적 생성(Auto-regressive Generation) 경로가 완전히 갈라져 버린다는 사실이 판명되었습니다.
이러한 "이종 런타임 간의 수치적 동작 차이"를 프로파일링(Profiling)하고, 라우터 측에서 이를 흡수하는 메커니즘을 도입하고 있습니다.
현재는 기초적인 접속 및 텐서 파이프라인이 완성된 단계(WIP)입니다. 향후에는 다음과 같은 개발을 진행할 예정입니다.
Apple / Metal 백엔드 최적화: WebGPU뿐만 아니라 Metal / CoreML 등의 네이티브 가속(Native Acceleration) 비교
멀티 노드 라우팅 (EXP-0002B): 복수 단말 간의 실시간 태스크 분산 및 병렬 평가
내결함성 (Shadow Node): 모바일 단말의 갑작스러운 연결 끊김 및 배터리 저하에 대한 다이내믹 페일오버(Dynamic Failover)
프로젝트의 설계 사상(MASTER_SPEC.md) 및 실험 코드, 로우 로그(Raw Log) 데이터는 모두 GitHub에서 공개하고 있습니다!
🌟 GitHub Repository:
ArcAsha-os (GitHub)
※ 개인이 꾸준히 개발하고 있는 초기 단계(Early Stage)의 프로젝트입니다. 의견, 조언, GitHub Star 등을 주시면 정말 큰 힘이 됩니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기