graph_reused로 CUDA 체크 제거
ggml: add graph_reused by am17an · Pull Request #21764 · ggml-org/llama.cpp
·2026.04.16 21:45
핵심 내용
llama.cpp의 ggml에 graph_reused를 넣어 CUDA의 O(n) 변경 체크를 줄였다.
자세히 보기
ggml의 ggml_cgraph에 reused 상태를 추가해, 백엔드가 그래프 재사용 여부를 더 직접적으로 판단할 수 있게 했다.
핵심은 CUDA 백엔드가 graph_reuse 호출 때마다 그래프 변경 여부를 확인하던 O(n) props change check를 우회하는 것이다. 그래프 재사용이 보장되는 상황에서는 이 검사가 중복이므로, 이를 생략해 약간의 오버헤드를 줄인다.
실측 결과도 제시됐다.
- RTX 5090 기준
gemma4 ?B Q4_0,gpt-oss 20B MXFP4 MoE,qwen35 27B Q4_K_M,qwen35moe 35B.A3B Q4_K_S등에서 테스트- 대체로 1.02x~1.07x 수준의 향상
- 가장 큰 경우는
qwen35moe 35B.A3B Q4_K_S에서 206.56 t/s vs 194.52 t/s
리뷰 과정에서는 단순한 reuse flag보다 graph GUID / versioning이 더 적절한지, split graph와 main graph를 어떻게 식별할지 논의가 이어졌다. tensor-overrides처럼 하나의 백엔드 안에 여러 split이 생길 수 있어, split별 식별자 분리가 필요하다는 지적도 나왔다.
결국 이 패치는 단순한 플래그 추가가 아니라, 그래프 식별과 재사용 계약을 어떻게 정의할지를 둘러싼 llama.cpp/ggml 내부 설계 논의까지 포함한 최적화 작업이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.