llama.cpp b10687 tối ưu hóa OpenCL cho GPU Adreno
Bản phát hành llama.cpp b10687 giới thiệu các tối ưu hóa OpenCL giúp cải thiện hiệu suất prefill của LLM trên các thế hệ GPU Qualcomm Adreno cụ thể. Cụ thể, bản cập nhật này mặc định chuyển sang đường dẫn nhân ma trận nhanh hơn cho Adreno X2E và bỏ qua đường dẫn tiled bị chậm trên Adreno A7X. Bản cập nhật này mang lại tốc độ prefill nhanh hơn 25% trên Adreno X2-90 và 9% trên Adreno 740, giúp việc suy luận AI cục bộ trên thiết bị di động chạy phần cứng Qualcomm nhanh hơn. Điều này làm nổi bật nỗ lực tối ưu hóa việc thực thi LLM trên các thiết bị biên bằng cách tùy chỉnh các kernel cho các kiến trúc GPU cụ thể. Tối ưu hóa này nhắm vào giai đoạn prefill (nơi kích thước batch N >= 16) và không ảnh hưởng đến giai đoạn decode. Nó giải quyết các vấn đề tràn thanh ghi (register spilling) của trình biên dịch trên Adreno A7X bằng cách chuyển hướng các phép toán F32xF32 dạng batch sang kernel F32 theo từng hàng thay vì đường dẫn tiled.
## KIẾN THỨC NỀN
Quá trình suy luận LLM được chia thành hai giai đoạn: giai đoạn prefill (xử lý lời nhắc đầu vào song song) và giai đoạn decode (tạo ra các token đầu ra một cách tuần tự). Phép nhân ma trận tổng quát (GEMM) là phép toán toán học cơ bản thúc đẩy các tính toán này, và việc tối ưu hóa các kernel GEMM cho các kiến trúc phần cứng cụ thể là rất quan trọng để thực thi cục bộ hiệu quả.