kindlingai/gr8는 GLM-5.3 전체 모델을 DGX Spark(GB10) 3~6대에서 돌리려고 처음부터 CUDA로 작성한 추론 엔진이다. 2026년 11월 7일 커밋 e231adb("GLM-5.3-Flash: context-parallel KV (#384) (#414)")는 이 엔진의 GLM-5.3-Flash 빌드에 컨텍스트 병렬 KV(context-parallel KV)를 추가했다. 31개 파일에서 1,353줄이 추가되고 171줄이 삭제됐으며, CUDA 커널과 런타임, 문서가 함께 바뀌었다.
컨텍스트 병렬 KV는 KV 캐시 페이지(64행 단위)를 여러 랭크에 나눠 저장해 각 랭크가 전체 문맥을 복제하지 않고 일부만 들고 있게 하는 방식이다. Flash 빌드에서는 기본값이 0이라 EXTRA_ENV=GR8_CP=1로 켜야 하고, 앞쪽 R개 토큰(GR8_CP_R)은 12개 어텐션 바인딩 모두에 복제되고 그 뒤 페이지는 (pos / 64) % TP 규칙으로 한 랭크에만 놓인다. R을 넘은 디코드는 DSA 레이어마다 다섯 단계로 진행된다. 이 랭크가 맡은 행만 넣고, 자기 풀만 채점해 행마다 상위 512개를 남긴 뒤 후보를 all-gather해 복제 경로의 목록과 비트 단위로 같게 합친다. 이어서 흡수된 쿼리를 모아 head group별 부분 어텐션을 계산하고, 순위 순서로 log-sum-exp 병합한 다음 value projection을 한다. FLASH.md는 목록과 캐시 바이트는 복제 경로와 같지만 출력이 비트 단위로 같지는 않다고 적는다. 병합하는 합의 순서가 달라서다.
다만 기능은 실험 단계로 남아 있다. Flash 빌드에서 CP 바인딩에 대한 프리필은 아직 거절되고, Flash 프리필은 R 아래에서 복제 경로로 돈다. m4sim은 --prefill에서 R을 넘는 프롬프트를 거부한다. MTP 레이어는 KV 전체를 그대로 들고, 체크포인트는 각 랭크가 맡은 11개 DSA 레이어 페이지만 보관하며 엔트리 형식이 3으로 올라가 이전 형식(2)의 엔트리는 버려진다. 문서는 클러스터에서 측정한 결과가 아직 없다고 밝힌다. GPU 한 대에서 복제 경로와 비교하는 테스트(engine/tests/test_flash_cp.cu)가 붙었지만 여러 랭크로 돌린 처리량과 정확도 차이는 기록되지 않았다. Flash로 긴 문맥을 서비스하려면 지금은 지켜보는 쪽이 맞아 보인다.