llama.cpp Releases

[Pré-version / build continu] b11404

[Pré-version / build continu] metal : multiplication mat-mul MMA pour quelques lignes (#29869) * metal : multiplication mat-mul MMA pour quelques lignes et copies par lots pour le décodage spéculatif Le décodage…

Pré-version / build continu : il s'agit d'un build expérimental, pas d'une version stable.

metal : multiplication mat-mul MMA pour quelques lignes (#29869) * metal : multiplication mat-mul MMA pour quelques lignes et copies par lots pour le décodage spéculatif Le décodage spéculatif vérifie quelques draft tokens à chaque étape. Sans l'API tensor, Metal exécutait ces mat-muls avec les kernels mat-vec, dont le temps croît à chaque ligne de src1, si bien que le décodage DFlash2 sur un M3 Ultra était plus lent que le décodage série. - ajout de kernels mat-mul pour 2..16 lignes de src1 sur des matrices simdgroup 8x8 : chaque poids est déquantisé une seule fois pour toutes les lignes, et les simdgroups d'un threadgroup répartissent K. Q4_0, Q8_0 et Q5_K ont leurs propres kernels, F32, F16, Q4_1, Q5_0, Q5_1, Q4_K et Q6_K utilisent un chemin générique sur les 16 déquantiseurs de poids, et Q4_0 à 2 lignes utilise une variante à 2 lignes du kernel mat-vec - utilisation uniquement sur MTLGPUFamilyApple7+ sans l'API tensor, à partir du nombre de lignes à partir duquel ils battent les kernels mat-vec sur un M3 Ultra (F32 : 6, F16, Q4_K, Q5_0, Q5_1 : 3, autres types : 2) - table de fusion : MUL_MAT + ADD ajoute un résidu de même forme dans le stockage MMA, et jusqu'à 16 copies f32 adjacentes de même disposition entre les mêmes deux tenseurs s'exécutent en un seul dispatch - les vérifications de fusion et ggml_graph_optimize prennent les props du périphérique, ainsi le réordonnancement regroupe MUL_MAT + ADD uniquement sur les périphériques capables de le fusionner, à tout nombre de lignes de src1 - les views ne comptent pas dans GGML_METAL_FUSION_MAX quand le réordonnancement regroupe un groupe, ainsi 16 copies d'instantanés d'état récurrent avec des views entre elles restent un seul groupe - l'encoder vérifie les nœuds internes d'un groupe fusionné pour la concurrence, suit les views écrites par leur étendue, et ne compte pas la destination d'un CPY comme une lecture - CONCAT répartit les longues lignes entre les threadgroups quand il y a peu de lignes - tests : cas few-row MUL_MAT, MUL_MAT_ADD, CPY_BATCH et CONCAT dans test-backend-ops (avec un hook prepare_graph pour l'ordre des copies), test-metal-graph-optimize, test-metal-cpy-batch-alias * metal : suppression de la fusion CPY_BATCH et des changements de plages mémoire Suppression de la fusion de copies par lots avec son kernel et ses tests, et annulation des changements de plages mémoire, comme suggéré en revue. Les plages mémoire, le réordonnancement du graphe et l'encoder CPY redeviennent identiques à ceux de master. * cont : nettoyage * cont : suppression de la porte has_tensor * cont : nettoyage de la logique opérande/résidu * cont : suppression du cas spécial Q4_0 ne11=2 * cont : ajout de kernels/mul_mv_mma.metal * cont : consolidation de la logique de sélection des pipelines mma * cont : découplage de la logique de fusion des props du périphérique --------- Co-authored-by: Georgi Gerganov

Site web : - https://llama.app

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

macOS/iOS : - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI activé) DÉSACTIVÉ - macOS Intel (x64) - XCFramework iOS

Linux : - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - Bibliothèques CUDA 12.8 - Ubuntu x64 (CUDA 13) - Bibliothèques CUDA 13.4 - Ubuntu arm64 (CUDA 13) - Bibliothèques 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) - guide d'installation

Android : - Android arm64 (CPU) - Android arm64 (Snapdragon : CPU, GPU Adreno, NPU Hexagon) - guide d'installation

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

openEuler : - DÉSACTIVÉ - openEuler x86 (310p) - openEuler x86 (910b, ACL Graph) - openEuler aarch64 (310p) - openEuler aarch64 (910b, ACL Graph)

UI : - UI

Source originale

llama.cpp Releases

À propos du contenu

La publication originale et les droits appartiennent à la source.

Traduction automatique · Consultez l’original