b11463: sycl을 사용하여 GLM MLA의 prefill을 MKL flash attention으로 가속화 (#29171)
요약
본 기사는 SYCL을 활용하여 GLM MLA의 prefill 과정을 MKL flash attention으로 가속화하는 기술적 개선 사항을 다룹니다. 특히, K/V 캐시 처리 방식과 QK GEMM 출력을 F16으로 저장함으로써 메모리 사용량 및 데이터 트래픽을 절반으로 줄여 성능 향상을 이끌었습니다. 실제 테스트 결과, Intel Arc Pro B70 환경에서 pp8192의 토큰 생성 속도가 432.80 tok/s에서 1292.29 tok/s로 크게 개선되는 등 상당한 가속 효과를 확인했습니다.
핵심 포인트
- SYCL을 이용해 GLM MLA prefill을 MKL flash attention으로 가속화함.
- K/V 캐시 처리 및 QK GEMM 출력을 F16으로 저장하여 효율성을 높임.
- Intel Arc Pro B70 환경에서 pp8192의 속도가 2.99배 향상됨.
- F16 저장은 메모리 사용량과 트래픽을 절반으로 줄여 성능에 기여함.
- sycl: MKL flash attention을 이용한 GLM MLA prefill 가속화
GLM-4.7 Flash는 576폭의 Q/K 헤드, 512폭의 V 헤드, GQA 20, F16 KV를 사용하는 MLA 형태를 사용합니다. SYCL 디스패처는 일반 MKL flash-attention 게이트가 일치하는 K/V 폭을 요구하고 헤드 차원을 512로 제한하기 때문에 이 형태를 거부하며, 그 결과 프롬프트 처리가 훨씬 느린 TILE 커널로 폴백됩니다.
기존 MKL 파이프라인에 검증된 576/576/512, GQA-20 F16 형태만 허용합니다. 나머지 불일치한 K/V 형태는 현재의 폴백 경로를 유지합니다.
GLM의 V 캐시를 K 행의 더 좁은 스트라이드 뷰로 처리합니다. 행 스트라이드가 패딩된 경우 스트라이디드 F16 디스크립터를 선택하고, 논리적 폭이 일치할 때만 K/V 역양자화 버퍼에 별칭(alias)을 부여합니다. 스트라이드 예외는 K의 행 스트라이드를 공유하는 실제 V 뷰로 제한합니다.
정확한 576/512, GQA-20 프롬프트 경로 백엔드 테스트를 추가했습니다.
Intel Arc Pro B70에서 master e613ef2를 사용했을 때, pp8192는 432.80 tok/s에서 1292.29 tok/s로 향상되었습니다 (2.99배, +198.6%). tg256은 노이즈 범위 내에서 45.67 대비 45.65 tok/s로 변화가 없습니다. 정확한 MLA 테스트는 통과했으며 디버그 출력이 MKL 디스패치를 확인시켜줍니다.
- sycl: MKL flash attention 점수를 F16으로 저장
QK GEMM 출력을 F32 대신 F16으로 유지합니다. 온라인 소프트맥스는 여전히 각 점수를 최대값, 지수, 합계 계산을 위해 F32로 변환하므로, 요소별 수학 연산은 점수 반올림 외에는 변경되지 않으며, F32 행렬은 오직 F16 확률로 소비되기 위해 작성되고 있었습니다.
F32 점수 행렬이 이 경로에서 가장 큰 flash-attention 중간 결과물입니다. 이를 F16으로 저장하면 크기와 트래픽을 절반으로 줄일 수 있습니다. 이는 1aa2954에서 각 점수 행을 협력적으로 읽어들이는 응집된(coalesced) 소프트맥스 로드에 기반하며, 따라서 더 작은 자료형(dtype)이 이점을 제공합니다.
이전 커밋에서 디스패치된 Intel Arc Pro B70에서 측정된 결과는 다음과 같습니다. -ngl 999 -b 4096 -ub 1024 -ctk f16 -ctv f16 -fa on:
pp8192 1583.9 -> 1657.1 tok/s (+4.6%)
pp64000 610.0 -> 684.5 tok/s (+12.2%)
pp131072 ~354 -> 402.1 tok/s (+13.5%)
tg256 at 8k context는 변경되지 않았습니다 (32.64), 그리고 FLASH_ATTN_EXT 스위트에서는 새로운 실패가 보고되지 않았습니다. 정확한 GLM MLA 백엔드 케이스들은 CPU에서 통과합니다. 측정된 쌍만을 인용하는 것을 선호한다면 ~354 기준 수치를 조정하십시오 (131k 디스패치 전용 지점은 동등하게 유지된 빌드에서 가져왔습니다). AI가 변경에 기여했으므로, 선택적으로 기여 가이드라인에 따라 Assisted-by:를 추가할 수 있습니다.
- "sycl: MKL flash attention 점수를 F16에 저장" 되돌리기(Revert)
이것은 커밋 265f974를 되돌립니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기