Pre-release / compilación continua: esta es una compilación experimental, no una versión estable.
llama : corregir la reasignación inesperada del grafo en los modelos k-pool (#29958) * llama : corregir la reasignación inesperada del grafo en los modelos k-pool Ambos modelos k-pool construían una forma de grafo que depende de un estado que la reserva de contexto completo no puede conocer: - qwen4exp ramificaba según inp->cache_safe, que pasa a false en cuanto llama_memory_seq_cp comparte celdas (p. ej. batched-bench -pps): las capas QSA cambiaron scatter+gather por fill+concat y eliminaron la hoja new_pool_rep, de modo que el grafo de decode tenía 12 nodos menos que el reservado - glm5-next ramificaba según gather = n_tokens <= 16 && n_kv > n_sel, de modo que el decode de TG construía la forma gather (7564 nodos) mientras que la última reserva, la de PP, tenía la forma densa (7762 nodos) Cualquiera de las dos discrepancias fuerza una re-reserva en tiempo de decode que descarta el dimensionamiento del peor caso y fija el estado actual, de modo que el siguiente crecimiento del estado (n_pool, n_kv, n_new) necesita más espacio con un tamaño de grafo sin cambios y aborta bajo GGML_SCHED_DEBUG_REALLOC=1. Reproducir con, p. ej.: GGML_SCHED_DEBUG_REALLOC=1 ./bin/llama-batched-bench \ -hf ggml-org/GLM-5.3-Flash-GGUF:Q2_K -npp 2500 -ntg 32 -npl 1,2 \ -c 32768 -pps -kvu Hacer siempre scatter+gather de las claves agrupadas, y elegir gather solo a partir de constantes del contexto: n_ubatch acota cada ubatch, y top_k + kpool - 1 acota n_sel. Así, cada grafo de un contexto comparte una sola forma, que la reserva cubre, y la ruta densa resultó más rápida que la ruta gather con contexto de 2.5k y 16k. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * llama : eliminar la API de grafo cache_safe de k-pool que no se usaba Los grafos k-pool ya no ramifican según cache_safe, así que nada lee get_kpool_cache_safe() ni el new_pool_rep condicional: ambos modelos pasan siempre el destino de scatter, que set_input_kpool ahora exige en lugar de simplemente preferir. También se elimina la copia de cache_safe en kpool_build_sizes(), un auxiliar que solo calcula tamaños. La disposición y el flag de estado en sí se mantienen; todavía decide qué pools debe re-agrupar una disposición con celdas compartidas. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * tests : añadir una prueba de regresión de reserva de grafo con seq compartida Decodificar un prompt en la seq 0, compartir sus celdas con la seq 1 mediante llama_memory_seq_cp (lo que hace llama-batched-bench para -pps) y luego seguir decodificando ambas secuencias. Para los modelos k-pool, compartir borra cache_safe, lo que cambia la topología del grafo mientras los pools siguen creciendo, de modo que un planificador que re-reserva con el estado actual en lugar del peor caso aborta bajo GGML_SCHED_DEBUG_REALLOC=1. El registro de la prueba activa ese flag, y la prueba abortaba en ambos modelos k-pool antes de 2220411ec1. kimi-linear y minimax-01 se omiten: reservan el grafo pp final con n_seqs = 1 (véase [TAG_RESERVE_DIAG_DECAY] en llama-context.cpp), de modo que cada grafo multi-seq tiene una disposición distinta y se re-reserva por diseño. Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : añadir TODOs * cont : corregir comentario * cuda: igualar la reducción ponderada moe en ubatches vacíos ggml_cuda_match_moe_weighted_reduction rechazaba tensores con cero filas. Un ubatch sin salidas reduce la última capa a cero filas mediante inp_out_ids, de modo que graph_optimize eliminaba su dependencia de asignación allí y el grafo del planificador perdía un nodo respecto al reservado. El planificador entonces re-reservaba con el tamaño de ese ubatch, y el siguiente ubatch con el mismo número de nodos pero tensores mayores abortaba bajo GGML_SCHED_DEBUG_REALLOC=1. El bucle de cómputo ya omite los nodos vacíos antes de intentar cualquier fusión, así que la guarda solo hacía que las dependencias de asignación dependieran del número de filas. * tests: compilar la prueba de rollback solo donde los símbolos internos se enlazan El caso de seq compartida llama a llm_arch_from_string, que libllama no exporta mediante LLAMA_API, así que el enlace de test-recurrent-state-rollback falla en Windows con bibliotecas compartidas. Su compilación ahora se encuentra en el bloque NOT WIN32 OR NOT BUILD_SHARED_LIBS, junto a test-llama-archs y el registro de la prueba donde ya vivía. * tests: omitir archs por nombre en la prueba de reserva de seq compartida La omisión de kimi-linear y minimax-01 pasaba por llm_arch_from_string, que libllama no exporta mediante LLAMA_API, así que la prueba no podía enlazarse en Windows con bibliotecas compartidas. Ahora compara la cadena general.architecture directamente, y la prueba vuelve a compilar en todas las plataformas. --------- Co-authored-by: PascalSitio web: - https://llama.app
Atestaciones: - https://github.com/ggml-org/llama.cpp/attestations/52789660
macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI habilitado) DISABLED - 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, 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