랩 컨트롤 플레인: Mac Studio · Spark · EVO+4080
Mac Studio에 Open WebUI + 상태 보드를 두고 Spark·EVO+4080을 한곳에서 쓴다. Flash-Next 4080 spill quality×cost(1083s vs 5321s)와 함께 정리.
한 줄. 추론은 Spark / EVO+4080에서, 대시보드는 Mac Studio(M2 Max)에 둔다. Open WebUI로 채팅, 상태 보드로 health·모델·지연을 본다. 공개 사이트에는 아키텍처와 최신 Flash-Next+4080 quality×cost만 올린다(LAN IP는 프록시하지 않음).
레이아웃
| 역할 | 머신 | 주소 |
|---|---|---|
| 컨트롤 · Open WebUI | Mac Studio | http://127.0.0.1:3080 (LAN only) |
| 컨트롤 · Status | Mac Studio | http://127.0.0.1:3090 (LAN only) |
| 추론 · Flash-Next NVFP4 | DGX Spark | 192.168.1.200:30000 · SGLang |
| 추론 · Flash-Next + 4080 spill | EVO-X3 | 192.168.1.50:8080 · Vulkan1+0 -ts 56,8 |
| 공개 글 · 벤치 | Cloudflare Pages | tech.dubuworld.com |
Studio 96GB에 Flash-Next(~88G)나 GLM EXL3(91G Spark 레시피)를 올리지 않는다. Studio는 조종석이다.
1 · Open WebUI
Docker Compose로 Studio에 띄운다. 백엔드 두 개:
- Spark
/v1→ 모델qwen38-flash-next - EVO
/v1→ Flash-Next ROCmFP4 GGUF (4080 spill)
cd lab-control
docker compose up -d
# → http://127.0.0.1:3080
모델 피커에서 연결(Spark / EVO)을 고른 뒤 같은 프롬프트로 비교하면 된다.
2 · Status board
15초마다 두 박스 /v1/models를 폴링한다. UP/DOWN · latency · 현재 모델 ID. 보드 하단에는 최신 quality×cost 스냅샷을 박아 둔다.
./lab-control/serve-status.sh
# → http://127.0.0.1:3090
3 · Flash-Next + RTX 4080 spill (실측)
같은 Playwright render_ok 프로토콜. 상세 GIF·HTML은 4080 spill 글.
| Spark | EVO + 4080 | |
|---|---|---|
| wall_sum | 1083s | 5321s |
| stages | 3/3 | 2/3 (angry 12 fail) |
| arch3d first pass | 357s | 267s |
| decode | ~37 tok/s | ~21–26 tok/s |
읽는 법: 4080 spill로 EVO에서 Flash-Next는 돌아간다. 품질 게이트까지 포함한 비용은 Spark가 ~5× 유리. angry가 EVO wall의 대부분.
왜 Studio에 대시보드만?
- Cloudflare / 공개 사이트는 사설 LAN에 닿지 않는다.
- 채팅·상태·하니스 컨트롤은 한 머신(Studio)에 모으는 게 단순하다.
- 무거운 가중치는 Spark UMA / EVO GTT+4080에 남긴다.
코드: testbench/dgx/lab-control/ · 결과 JSON: pipeline-flashnext-spark-vs-4080-v2/