llama.cpp ReleasesActualizado el

[Pre-release / compilación continua] b11569

[Pre-release / compilación continua] metal : fix mul_mat_id con ids duplicados (#30373) * metal : corrige los límites de mul_mat_id y el nombre del kernel * metal : corrige mul_mat_id con ids duplicados…

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

metal : corrige mul_mat_id con ids duplicados (#30373) * metal : corrige los límites de mul_mat_id y el nombre del kernel * metal : corrige mul_mat_id con ids duplicados kernel_mul_mm_id_map0 asumía como máximo una coincidencia por token y una capacidad fija de ne21 entradas por experto, lo que producía filas de salida incorrectas o eliminadas y podía desbordarse hacia la porción del siguiente experto cuando los ids contienen duplicados. construye en su lugar una lista compacta por experto de las entradas (token, slot): - el paso 1 cuenta las entradas de cada experto, el hilo 0 calcula los desplazamientos de las porciones de los expertos (tpe ahora contiene [base, count]) - el paso 2 escribe las entradas con un almacén incondicional por token (los almacenes condicionales de lanes divergentes son muy lentos), el valor ficticio de los tokens sin coincidencia cae en una ranura de relleno de la porción que nunca se lee - los duplicados se manejan con una rama poco frecuente - kernel_mul_mm_id lee el base/count de su experto y recorre en bucle los mosaicos de entradas que no caben en la cuadrícula El búfer de ids se dimensiona como ne20*ne21 + ne02 (entradas + relleno). 883/883 pruebas test-backend-ops MUL_MAT_ID pasan, llama-bench está dentro de la varianza de ejecución a ejecución del comportamiento anterior. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * metal : convierte ne02 de mul_mat_id map0 en una constante de función usa FOR_UNROLL para los bucles de ids de kernel_mul_mm_id_map0 y convierte ne02 en la constante de función FC_mul_mm_id_map0_ne02 (FC_MUL_MM + 7), de modo que los desplazamientos de threadgroup de cnt/bas/sids y el límite de la suma de prefijos se plieguen en tiempo de compilación. el nombre del pipeline ahora codifica ne02 (misma convención que las constantes nc/silu de ssm_conv) y el pipeline de map0 se compila con el valor constante establecido. ne02 ya no es parte de ggml_metal_kargs_mul_mm_id_map0 - la cuadrícula de despacho sigue proviniendo del ne[2] del tensor en el host. sin cambio de rendimiento medible: 883/883 pruebas test-backend-ops MUL_MAT_ID pasan, los resultados a nivel de op y de llama-bench están dentro de la varianza de ejecución. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : limpieza + TODO * metal : despachar mosaicos de entradas de mul_mat_id desde la prepasada sigue el enfoque de la implementación de vulkan (#29998): en lugar de lanzar una cuadrícula sobre expertos x ne21 mosaicos de entradas y dejar que la mayoría de los threadgroups salgan temprano, kernel_mul_mm_id_map0 ahora también emite un mapa de filas - el conteo total de mosaicos más un descriptor (experto, primera entrada, filas válidas) por cada mosaico de 32 entradas que tenga trabajo. kernel_mul_mm_id se lanza con un límite superior estático en el número de mosaicos (mosaicos completos sobre todas las entradas más como máximo un mosaico parcial por experto), lee su descriptor y procesa un solo mosaico - la cola sale temprano. Esto elimina el bucle de rondas que se necesitaba para cubrir ids duplicados más allá de la cuadrícula (presión de registros: th_max 768 -> de vuelta al nivel simple de mul_mm) y los duplicados ahora se manejan implícitamente, ya que solo producen más descriptores dentro del límite. La cuadrícula se reduce ~8-16x en formas típicas (p. ej. 128 expertos, 8 usados, 512 tokens: 128 mosaicos en lugar de 2048 mosaicos de entradas, de los cuales el 94% solo se lanzaban para salir) y ne21 ya no es necesario en los kargs del kernel mm. 883/883 pruebas test-backend-ops MUL_MAT_ID pasan. llama-bench (Qwen3.6-35B-A3B Q8_0) ahora es más rápido que master en todos los tamaños pp (pp2048/4096/8192 +2%, pp512 +0.5%), tg32 sin cambios. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : añadir aserción de smem

Sitio web: - https://llama.app

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

macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI habilitado) DISABLED - 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) - 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, GPU Adreno, NPU Hexagon) - guía de configuración

Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, GPU Adreno, NPU Hexagon) - 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