llama.cpp Releases수정일

[사전 릴리스 / 지속 빌드] b11569

[사전 릴리스 / 지속 빌드] metal : 중복 id가 있는 mul_mat_id 수정 (#30373) * metal : mul_mat_id 제한 및 커널 이름 수정 * metal : 중복 id가 있는 mul_mat_id 수정 kernel_mul_mm_id_map0은 토큰당 최대 하나의 매치와 전문가당 ne21 항목의 고정 용량을 가정했는데, 이는 id에 중복이 포함될 경우 잘못되었거나…

사전 릴리스 / 지속 빌드: 이것은 실험적 빌드이며 안정 릴리스가 아닙니다.

metal : 중복 id가 있는 mul_mat_id 수정 (#30373) * metal : mul_mat_id 제한 및 커널 이름 수정 * metal : 중복 id가 있는 mul_mat_id 수정 kernel_mul_mm_id_map0은 토큰당 최대 하나의 매치와 전문가당 ne21 항목의 고정 용량을 가정했는데, 이는 id에 중복이 포함될 경우 잘못되었거나 누락된 출력 행을 생성하고 다음 전문가의 슬라이스로 넘쳐흘렀습니다. 대신 (token, slot) 항목의 전문가별 압축 목록을 만듭니다: - pass 1은 모든 전문가의 항목을 세고, 스레드 0이 전문가 슬라이스의 오프셋을 계산합니다 (tpe는 이제 [base, count]를 보유) - pass 2는 토큰당 하나의 무조건 스토어로 항목을 기록합니다 (발산하는 레인의 조건부 스토어는 매우 느림), 매치가 없는 토큰의 더미 값은 읽히지 않는 슬라이스의 패딩 슬롯에 위치합니다 - 중복은 드문 분기로 처리됩니다 - kernel_mul_mm_id는 자신의 전문가의 base/count를 읽고 그리드에 맞지 않는 항목 타일을 반복합니다 ids 버퍼는 ne20*ne21 + ne02 (항목 + 패딩)로 크기가 지정됩니다. 883/883 test-backend-ops MUL_MAT_ID 테스트가 통과하며, llama-bench는 이전 동작의 실행 간 분산 범위 내에 있습니다. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * metal : mul_mat_id map0 ne02를 함수 상수로 변경 kernel_mul_mm_id_map0의 id 루프에 FOR_UNROLL을 사용하고 ne02를 함수 상수 FC_mul_mm_id_map0_ne02 (FC_MUL_MM + 7)로 만들어, cnt/bas/sids의 스레드그룹 오프셋과 prefix-sum 경계가 컴파일 타임에 접히도록 합니다. 파이프라인 이름은 이제 ne02를 인코딩하며 (ssm_conv nc/silu 상수와 동일한 규칙) map0 파이프라인은 상수 값이 설정된 상태로 컴파일됩니다. ne02는 더 이상 ggml_metal_kargs_mul_mm_id_map0의 일부가 아닙니다 - 디스패치 그리드는 여전히 호스트의 텐서 ne[2]에서 가져옵니다. 측정 가능한 성능 변화 없음: 883/883 test-backend-ops MUL_MAT_ID 테스트가 통과하며, op 수준 및 llama-bench 결과는 실행 분산 범위 내에 있습니다. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : 정리 + TODO * metal : 사전 패스에서 mul_mat_id 항목 타일 디스패치 vulkan 구현(#29998)의 접근 방식을 따릅니다: 전문가 x ne21 항목 타일 위에 그리드를 시작하고 대부분의 스레드그룹이 조기 종료하도록 하는 대신, kernel_mul_mm_id_map0은 이제 행 맵도 출력합니다 - 전체 타일 수에 1을 더한 값과 작업이 있는 32항목 타일당 하나의 (전문가, 첫 항목, 유효 행) 디스크립터입니다. kernel_mul_mm_id는 타일 수의 정적 상한(모든 항목의 전체 타일과 전문가당 최대 하나의 부분 타일)으로 시작되어 자신의 디스크립터를 읽고 단일 타일을 처리합니다 - 꼬리는 조기 종료합니다. 이는 그리드를 넘어서는 중복 id를 처리하기 위해 필요했던 라운드 루프를 제거하고 (레지스터 압력: th_max 768 -> 일반 mul_mm 수준으로 복귀), 중복은 이제 상한 내에서 더 많은 디스크립터만 생성하므로 암묵적으로 처리됩니다. 그리드는 일반적인 형태에서 ~8-16x 축소됩니다 (예: 128 전문가, 8 사용, 512 토큰: 2048 항목 타일 대신 128 타일, 그중 94%는 종료하기 위해서만 시작됨) 그리고 ne21은 더 이상 mm 커널 kargs에 필요하지 않습니다. 883/883 test-backend-ops MUL_MAT_ID 테스트가 통과합니다. llama-bench (Qwen3.6-35B-A3B Q8_0)는 이제 모든 pp 크기에서 master보다 빠릅니다 (pp2048/4096/8192 +2%, pp512 +0.5%), tg32는 변화 없음. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : smem 어설션 추가

웹사이트: - https://llama.app

증명(Attestations): - https://github.com/ggml-org/llama.cpp/attestations/55057952

macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI 활성화) 비활성화됨 - macOS Intel (x64) - iOS XCFramework

Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - CUDA 12.8 라이브러리 - Ubuntu x64 (CUDA 13) - CUDA 13.4 라이브러리 - Ubuntu arm64 (CUDA 13) - CUDA 13.4 라이브러리 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 설정 가이드

Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 설정 가이드

Windows: - Windows x64(CPU)용 - Windows arm64(CPU)용 - Windows arm64(OpenCL Adreno)용 - Windows x64(CUDA 12)용 - CUDA 12.4 DLL - Windows x64(CUDA 13)용 - CUDA 13.4 DLL - Windows arm64(CUDA 13)용 - CUDA 13.4 DLL - Windows x64(Vulkan)용 - Windows arm64(Vulkan)용 - Windows x64(OpenVINO)용 - Windows x64(SYCL)용 - Windows x64(ROCm 10.0)용

openEuler: - DISABLED - openEuler x86(310p) 환경 - openEuler x86(910b, ACL Graph) 환경 - openEuler aarch64(310p) 환경 - openEuler aarch64(910b, ACL Graph) 환경

UI: - UI

원문 출처

llama.cpp Releases

내용 안내

원문 발행 및 권리는 출처에 있습니다.

기계 번역 · 원문을 참고하세요