Wasm에서 GPU로 zero-copy inference, HN은 “어디서 빨라지나”를 물었다

Community Spark

Hacker News의 #47820195는 113 points와 51 comments를 모았다. Abacus Noir의 post는 Apple Silicon에서 WebAssembly linear memory를 GPU와 직접 공유해 inference path의 copies를 줄일 수 있다는 실험을 설명한다. HN의 관심은 hype가 아니라 boundary였다. Wasm sandbox, Metal buffer, unified memory가 실제로 같은 bytes를 볼 수 있다면, stateful AI inference runtime 설계가 달라질 수 있기 때문이다.

What Was Tested

글쓴이는 Driftwood라는 system의 foundation으로 이 zero-copy chain을 검증했다고 설명한다. 첫 단계는 mmap으로 page-aligned memory를 확보하는 것이다. 두 번째는 Metal의 bytesNoCopy path로 그 pointer를 GPU buffer로 감싸는 것이다. 세 번째는 Wasmtime의 MemoryCreator를 사용해 Wasm linear memory가 같은 backing region을 쓰게 하는 것이다.

Post의 핵심 demo는 128 by 128 matrix multiply다. Wasm module이 matrices를 linear memory에 쓰고, GPU가 Metal shader로 계산한 뒤, module이 같은 memory에서 결과를 읽는다. 저자는 pointer identity와 memory overhead를 확인했고, explicit copy path와 비교해 hidden copy가 사실상 measurement noise 수준이었다고 적었다. 작은 test지만, 이런 stack에서는 one wrong layer만 있어도 garbage가 나오므로 correctness 자체가 중요한 signal이다.

Why HN Cared

HN comments는 곧바로 “native code와 비교해 무엇을 얻나”로 이동했다. 이미 host side를 native로 만들 수 있다면 Wasm layer의 value는 portability, isolation, actor mobility 같은 runtime property에서 나와야 한다. 또 다른 commenter는 이 work가 browser WebAssembly가 아니라 wasmtime에서 동작한다는 점을 짚었다.

그래서 thread의 takeaway는 “Apple Silicon이면 모두 빨라진다”가 아니다. 더 좁고 흥미로운 주장이다. Unified memory가 있는 machine에서 Wasm actor state와 GPU inference buffer를 같은 allocation으로 묶을 수 있다면, long-running AI sessions를 freeze, move, thaw하는 architecture가 더 현실적이 된다. HN은 속도 숫자보다 abstraction cost가 실제로 사라졌는지를 보고 있었다.