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 und batchweise Kopien für spekulatives Dekodieren Spekulatives Dekodieren verifiziert pro Schritt einige wenige…

Pre-Release / Continuous Build: Dies ist ein experimenteller Build, keine stabile Version.

metal : few-row MMA mat-mul (#29869) * metal : few-row MMA mat-mul und batchweise Kopien für spekulatives Dekodieren Spekulatives Dekodieren verifiziert pro Schritt einige wenige Draft-Tokens. Ohne die Tensor-API führte Metal diese Mat-Muls mit den Mat-Vec-Kernels aus, deren Zeit mit jeder src1-Zeile wächst, wodurch DFlash2-Dekodierung auf einem M3 Ultra langsamer war als serielles Dekodieren. - Mat-Mul-Kernels für 2..16 src1-Zeilen auf 8x8-Simdgroup-Matrizen hinzugefügt: jedes Gewicht wird einmal für alle Zeilen dequantisiert, und die Simdgroups eines Threadgroups teilen K. Q4_0, Q8_0 und Q5_K haben eigene Kernels, F32, F16, Q4_1, Q5_0, Q5_1, Q4_K und Q6_K verwenden einen generischen Pfad über die 16-Gewicht-Dequantisierer, und Q4_0 bei 2 Zeilen verwendet eine 2-Zeilen-Variante des Mat-Vec-Kernels - Verwendung nur auf MTLGPUFamilyApple7+ ohne die Tensor-API, ab der Zeilenzahl, ab der sie die Mat-Vec-Kernels auf einem M3 Ultra schlagen (F32: 6, F16, Q4_K, Q5_0, Q5_1: 3, andere Typen: 2) - Fusionstabelle: MUL_MAT + ADD fügt im MMA-Store ein Residuum gleicher Form hinzu, und bis zu 16 angrenzende f32-Kopien gleichen Layouts zwischen denselben beiden Tensoren laufen als ein Dispatch - die Fusionsprüfungen und ggml_graph_optimize berücksichtigen die Device-Props, sodass das Reorder MUL_MAT + ADD nur auf Devices packt, die es fusionieren können, bei jeder src1-Zeilenzahl - Views zählen nicht zu GGML_METAL_FUSION_MAX, wenn das Reorder eine Gruppe packt, sodass 16 Kopien rekurrenter Zustands-Snapshots mit Views dazwischen eine Gruppe bleiben - der Encoder prüft die inneren Knoten einer fusionierten Gruppe auf Nebenläufigkeit, verfolgt geschriebene Views nach ihrem extent und zählt das Ziel eines CPY nicht als Lesezugriff - CONCAT teilt lange Zeilen über Threadgroups auf, wenn es wenige Zeilen gibt - Tests: few-row-Fälle für MUL_MAT, MUL_MAT_ADD, CPY_BATCH und CONCAT in test-backend-ops (mit einem prepare_graph-Hook für die Kopierreihenfolge), test-metal-graph-optimize, test-metal-cpy-batch-alias * metal : die CPY_BATCH-Fusion und die Änderungen an den Speicherbereichen entfernen Die Fusion batchweiser Kopien mit ihrem Kernel und Tests entfernen und die Änderungen an den Speicherbereichen zurücksetzen, wie im Review vorgeschlagen. Die Speicherbereiche, das Graph-Reorder und der CPY-Encoder sind wieder dieselben wie auf master. * cont : Aufräumen * cont : has_tensor-Gate entfernen * cont : Operanden-/Residuum-Logik aufräumen * cont : Sonderfall Q4_0 ne11=2 entfernen * cont : kernels/mul_mv_mma.metal hinzufügen * cont : Auswahl-Logik der mma-Pipelines konsolidieren * cont : Fusionslogik von den Device-Props entkoppeln --------- Co-authored-by: Georgi Gerganov

Website: - https://llama.app

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

macOS/iOS: - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI aktiviert) DEAKTIVIERT - 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-Bibliotheken - Ubuntu x64 (CUDA 13) - CUDA-13.4-Bibliotheken - Ubuntu arm64 (CUDA 13) - CUDA-13.4-Bibliotheken - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - Einrichtungsanleitung

Android: - Android arm64 (CPU) - Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - Einrichtungsanleitung

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

openEuler: - DEAKTIVIERT - openEuler x86 (310p) - openEuler x86 (910b, ACL Graph) - openEuler aarch64 (310p) - openEuler aarch64 (910b, ACL Graph)

Benutzeroberfläche: - Benutzeroberfläche

Originalquelle

llama.cpp Releases

Hinweise zum Inhalt

Originalveröffentlichung und Rechte liegen bei der Quelle.

Maschinelle Übersetzung · Original beachten