6 TOPS짜리 NPU가 달린 보드 세 대를 평범한 이더넷으로 묶으면 18 TOPS가 될까요.
데이터시트의 산술은 그렇다고 합니다. 실제로 재 보면 그 질문 자체가 서로 다른 두 질문이 겹쳐 있는 것이었습니다.
NanoPi R76S(Rockchip RK3576, 6 TOPS) 세 대를 표준 2.5GbE와 평범한 gRPC로 묶어 요청 단위 데이터 병렬 추론 런타임을 Rust로 만들고, 2주 동안 421건을 실측했습니다. 보드는 개당 USD 110이었는데, 정작 스위치와 10G NIC이 보드값의 절반을 넘었습니다. 처리량은 112.9에서 338.4 inf/s로, 3.00배 거의 선형으로 확장했습니다.
그런데 이건 TOPS가 더해졌다는 뜻이 아닙니다. 이미 “클러스터로 묶이는 비용”을 치른 기준선에서 출발한 수치입니다. 발표의 앞부분은 이 둘을 분리하는 데 씁니다.
발표의 절반은 답이 아니라 답을 낸 과정입니다
421건을 재는 동안 결론의 부호가 뒤집힌 적이 네 번, 계기가 거짓말한 적이 여섯 번 있었습니다.
- 노드당 커넥션을 1에서 2로 늘리는 변경을 부하 c32에 고정해 쟀더니 p95가 46% 나빠졌습니다. 그런데 포화 곡선을 다시 그려 보니 c32는 시험 대상 세 구성 모두 이미 과부하 구간이었고, 운영점은 c12였습니다. c12에서 같은 변경을 다시 재니 p95가 18.8% 좋아졌습니다. 두 측정 다 맞았고, 앞의 것은 쓸모가 없었습니다.
- 무팬으로 세 번 재는 동안 세 보드의 SoC 최고 온도는 거의 같았는데(약 86 °C) 노드 간 지연 편차는 1.10배에서 2.40배까지 갈렸습니다. 최고 온도만으로는 편차가 설명되지 않았습니다. 편차를 따라간 것은 보드 사이에서 클럭 스로틀링이 얼마나 벌어지는가였습니다.
- 스케줄러가 낡은 상태를 보고 몰려다녔습니다. 부하 인지 정책이 단순 round-robin 보다 처리량을 55~58% 무너뜨렸는데, 정책이 아니라 기본 설정의 버그였습니다.
- 계획서에 적어 둔 io_uring은 재 보고 나서 만들지 않기로 했습니다. 회수 가능한 몫이 전송 비용의 약 8%였고, 여기서 CPU는 제약이 아니라 비용이었기 때문입니다.
여섯 번의 오측정은 전부 성공처럼 보였습니다. 숫자가 나왔고, 그럴듯했고, 아무도 멈추지 않았습니다. 네 건은 다른 측정과 대조해서, 두 건은 도구가 시끄럽게 굴어서 잡혔습니다. 그리고 그중 셋은 뿌리가 하나였습니다 — 계기가 틀렸고, 그 위에 설명이 세워졌고, 그 설명이 다른 문서로 번졌습니다.
틀린 것을 지우지 않았습니다
이 발표에서 제일 하고 싶은 이야기입니다.
철회한 주장, 잘못 잰 온도, 취소선 친 결론, 계기가 거짓말한 여섯 건의 목록까지 저장소에 그대로 남아 있습니다. 421건 원본 데이터도, 실험 보고서 12건도, “이건 아직 설명하지 못했다”고 적어 둔 잔차 16.1%도 공개돼 있습니다. 발표에 쓰는 숫자는 전부 원본 데이터로 역추적되고, 각 숫자가 어떤 조건에서 나왔는지도 함께 공개돼 있습니다.
제 발표를 듣고 그 자리에서 반박하실 수 있습니다. 그게 이 프로젝트에서 제일 값어치 있는 부분이라고 생각합니다.
다루는 것
- Edge NPU Cluster가 무엇이고 무엇이 아닌지 — 요청 단위 데이터 병렬은 처리량을 올리지 단일 요청을 빠르게 하지 않습니다. 모델 병렬과는 다른 문제입니다
- 3노드에서 3.00배가 나온 조건, 전송을 튜닝하면 처리량은 오르는데(387.2 inf/s) 효율은 왜 떨어지는지(98.9% → 95.3%)
- 결론이 뒤집힌 네 번과, 계기가 거짓말한 여섯 번
- 저가 하드웨어에서 재현 가능한 측정을 하려면 무엇을 미리 정해 둬야 하는지
다루지 않는 것
- LLM 추론 · 모델 병렬 · 텐서 병렬
- RDMA, 커널 우회, 전용 전송 계층 (안 썼습니다. 평범한 gRPC입니다)
- 4노드 이상 (측정하지 않았습니다)
이런 분께
엣지에서 추론을 굴리거나 굴릴 예정인 분, 저가 SBC와 NPU 생태계를 보고 계신 분, 그리고 벤치마크를 만들거나 남의 벤치마크 숫자를 믿어야 하는 모든 분.
NPU나 RKNN 사전 지식은 필요 없습니다. 필요한 만큼 앞에서 깝니다. 뒷부분의 측정 방법론 이야기는 NPU와 무관하게 성립하므로 도메인이 달라도 가져가실 수 있습니다.
런타임과 421건의 원본 데이터, 실험 보고서, 아키텍처 결정 기록은 모두 오픈소스로 공개돼 있습니다. 저장소와 프로젝트 페이지 주소는 요청하시면 바로 드리겠습니다.
