llama.cpp Releases

[Pre-release / continuous build] b11404

[Pre-release / continuous build] metal : few-row MMA mat-mul (#29869) * metal : few-row MMA mat-mul y copias por lotes para decodificación especulativa La decodificación especulativa verifica unos pocos tokens borradores…

Pre-release / continuous build: esta es una compilación experimental, no una versión estable.

metal : few-row MMA mat-mul (#29869) * metal : few-row MMA mat-mul y copias por lotes para decodificación especulativa La decodificación especulativa verifica unos pocos tokens borradores por paso. Sin la tensor API, Metal ejecutaba estas mat-muls con los kernels mat-vec, cuyo tiempo crece con cada fila de src1, por lo que la decodificación DFlash2 en un M3 Ultra era más lenta que la decodificación en serie. - añadir kernels mat-mul para 2..16 filas de src1 sobre matrices simdgroup de 8x8: cada peso se desuantiza una sola vez para todas las filas, y los simdgroups de un threadgroup dividen K. Q4_0, Q8_0 y Q5_K tienen sus propios kernels, F32, F16, Q4_1, Q5_0, Q5_1, Q4_K y Q6_K usan una ruta genérica sobre los desuantizadores de 16 pesos, y Q4_0 a 2 filas usa una variante de 2 filas del kernel mat-vec - usarlos solo en MTLGPUFamilyApple7+ sin la tensor API, a partir del número de filas en el que superan a los kernels mat-vec en un M3 Ultra (F32: 6, F16, Q4_K, Q5_0, Q5_1: 3, otros tipos: 2) - tabla de fusión: MUL_MAT + ADD añade un residual de la misma forma en el almacén MMA, y hasta 16 copias f32 adyacentes del mismo diseño entre los mismos dos tensores se ejecutan como un único dispatch - las comprobaciones de fusión y ggml_graph_optimize toman las device props, por lo que la reordenación empaqueta MUL_MAT + ADD solo en dispositivos que puedan fusionarlo, en cada número de filas de src1 - las views no cuentan hacia GGML_METAL_FUSION_MAX cuando la reordenación empaqueta un grupo, por lo que 16 copias de instantáneas de estado recurrentes con views entre ellas permanecen como un solo grupo - el encoder comprueba los nodos internos de un grupo fusionado en busca de concurrencia, rastrea las views escritas por su extensión y no cuenta el destino de un CPY como una lectura - CONCAT divide filas largas entre threadgroups cuando hay pocas filas - pruebas: casos few-row de MUL_MAT, MUL_MAT_ADD, CPY_BATCH y CONCAT en test-backend-ops (con un hook prepare_graph para el orden de copia), test-metal-graph-optimize, test-metal-cpy-batch-alias * metal : eliminar la fusión CPY_BATCH y los cambios de rangos de memoria Eliminar la fusión de copias por lotes con su kernel y pruebas, y revertir los cambios de rangos de memoria, como se sugirió en la revisión. Los rangos de memoria, la reordenación del grafo y el encoder CPY vuelven a ser los mismos que en master. * cont : limpieza * cont : eliminar la puerta has_tensor * cont : limpieza de la lógica de operando/residual * cont : eliminar el caso especial Q4_0 ne11=2 * cont : añadir kernels/mul_mv_mma.metal * cont : consolidar la lógica de selección de pipelines mma * cont : desacoplar la lógica de fusión de las device props --------- Co-authored-by: Georgi Gerganov

Sitio web: - https://llama.app

Atestaciones: - https://github.com/ggml-org/llama.cpp/attestations/52722020

macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI habilitado) DESACTIVADO - macOS Intel (x64) - XCFramework de iOS

Linux: - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - Bibliotecas CUDA 12.8 - Ubuntu x64 (CUDA 13) - Bibliotecas CUDA 13.4 - Ubuntu arm64 (CUDA 13) - Bibliotecas 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) - guía de configuración

Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - guía de configuración

Windows: - Windows x64 (CPU) - Windows arm64 (CPU) - Windows arm64 (OpenCL Adreno) - Windows x64 (CUDA 12) - DLLs de CUDA 12.4 - Windows x64 (CUDA 13) - DLLs de CUDA 13.4 - Windows arm64 (CUDA 13) - DLLs de CUDA 13.4 - 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

Fuente original

llama.cpp Releases

Notas sobre el contenido

La publicación original y los derechos pertenecen a la fuente.

Traducción automática · Consulte el original