Vorab-Release / Continuous Build: Dies ist ein experimenteller Build, keine stabile Veröffentlichung.
metal : MUL_MAT+ADD-Fusion korrigiert, wenn der Residual selbst ein MUL_MAT ist (#30100) * metal : MUL_MAT+ADD-Fusion korrigiert, wenn der Residual selbst ein MUL_MAT ist ggml_metal_op_mul_mat_mma wählt den Residual einer fusionierten MUL_MAT+ADD-Operation als „den ADD-Operanden, dessen op nicht MUL_MAT ist“. Wenn beide Operanden des ADD Mat-Mul-Ausgaben sind (x = W1 @ u + W2 @ v), trifft dieser Test auf beide zu, sodass der Residual zur eigenen, nie geschriebenen Ausgabe der fusionierten Mat-Mul auflöst und der Kernel das addiert, was dieser Puffer gerade enthält. Die Fusionsprüfung (ggml_metal_mul_mat_add_operand) wählt den Operanden bereits über die Identität aus; bringe den Encoder dazu, das Gleiche zu tun. Clef-Entscheidungsmodelle treffen dies in ihrem Kopf (proj_option_context @ ctx + proj_option_lexical @ lex, 9 Optionszeilen): Auf Metal kollabieren die /v1/systemone- Wahrscheinlichkeiten Richtung uniform (billing 0.28, während das CPU-Backend 0.977 liefert, Cloudflare_clef-flash Q8_0), deterministisch je Speicherlayout, korrekt mit GGML_METAL_FUSION_DISABLE=1. Kein Quantisierungsproblem: die dieselbe Datei ist auf CPU korrekt. Füge einen MUL_MAT_ADD-Modus zu test-backend-ops hinzu, bei dem der Residual eine zweite Mat-Mul ist; auf Metal schlagen vor dieser Änderung 27 von 28 Fällen fehl (der eine Durchlauf ist f16 n=2, unter der MMA-Zeilenschwelle, sodass nichts fusioniert wird). * Update tests/test-backend-ops.cpp Co-authored-by: Georgi Gerganov --------- Co-authored-by: Georgi GerganovWebseite: - https://llama.app
Nachweise (Attestations): - https://github.com/ggml-org/llama.cpp/attestations/53594480
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)
UI: - UI