Reddit, Apple Silicon에서 Qwen3.5 추론을 4배 안팎으로 끌어올린 DFlash MLX 구현에 주목

왜 Reddit에서 이 구현이 먹혔나

이 글은 LocalLLaMA에서 엄청난 upvote 폭발을 만든 타입의 밈성 post는 아니었지만, 기술적으로는 꽤 높은 신뢰를 얻은 편이었다. 작성자는 “며칠 전 올린 초기 결과”를 그대로 밀지 않고, benchmark methodology를 다시 짜고, numerical issue를 고치고, 그 뒤에 전체 구현을 open source로 풀었다고 적었다. 커뮤니티가 좋게 본 지점도 바로 여기에 있다. LocalLLaMA는 speedup claim에 꽤 피로해져 있는데, 이 글은 baseline을 stock mlx_lm.stream_generate로 다시 맞추고, 오히려 예전 수치를 부풀렸던 custom loop를 내려놓았다고 밝혔다. 크롤링 시점의 글은 105점, 36개 댓글이었고, 초기 댓글도 비슷한 speculative decoding repo가 여럿 있지만 dense Qwen3.5 기준으로는 이 구현이 앞서 보인다는 반응을 보였다.

DFlash 구현이 실제로 하는 일

공개된 repo에 따르면 DFlash는 block diffusion 방식의 draft model이 한 번에 16 tokens를 제안하고, target model이 그것을 한 번의 forward pass로 검증하는 speculative decoding runtime이다. 중요한 점은 output이 lossless라는 주장이다. 즉 실제로 내보낸 token은 모두 target model 검증을 거친 뒤 commit된다는 것이다. 구현은 Apple Silicon용 MLX 위에서 돌아가고, README는 hardware를 M5 Max, 64GB unified memory, software를 MLX 0.31.1이라고 명시한다. 대표 수치로 Qwen3.5-9B 2048-token benchmark에서 baseline 30.96 tok/s, DFlash 127.07 tok/s, speedup 4.13x, acceptance 89.36%를 제시한다.

어디서 속도가 나왔나

흥미로운 부분은 작성자가 “custom kernel을 많이 넣어서 빨라졌다”는 식으로 설명하지 않는다는 점이다. 오히려 selftext와 README는 unified memory 환경에서는 많은 시도가 bandwidth-bound였고, batched GEMV나 fused kernel 같은 접근이 stock MLX보다 오히려 느린 경우도 있었다고 적는다. 실제 이득은 tape-replay rollback, JIT 2-pass SDPA, 그리고 speculative cycle에서의 numerical coherence를 맞추는 작업에서 나왔다. 다시 말해 이건 flashy한 low-level micro-optimization 과시보다, verify와 rollback이 길어질 때 acceptance를 무너뜨리지 않는 정렬 작업에 가깝다.

왜 중요한가

이 결과가 의미 있는 이유는 Mac 기반 local inference에서 speedup 주장이 실사용 워크플로우와 바로 연결되기 때문이다. 게다가 수치가 model마다 다르게 나온다는 점도 신뢰를 높인다. 예컨대 README는 Qwen3.5-27B-4bit에서는 gain이 더 작다고 적는데, 이미 quantized target이 빠르기 때문에 bf16 draft가 병목이 되기 쉽기 때문이다. 이런 식의 설명은 “무조건 4배 빨라진다”는 식의 단순 홍보보다 훨씬 낫다. LocalLLaMA가 이 글을 좋게 본 이유도, Apple Silicon에서 Qwen 계열 모델을 실제로 더 쓸 만하게 만드는 engineering 개선으로 읽혔기 때문이다.

출처: dflash-mlx GitHub · DFlash 논문 · Reddit 토론