llama.cpp Phát Hành Phiên Bản b10357 Với Tối Ưu Hóa OpenCL Cho FlashAttention
llama.cpp đã phát hành phiên bản b10357, giới thiệu một tối ưu hóa OpenCL giúp chuyển vị (transpose) ô dữ liệu Key (K) trong bộ nhớ cục bộ (local memory) cho các kernel prefill của FlashAttention. Bản phát hành phụ này tập trung vào việc cải thiện các mẫu truy cập bộ nhớ trong giai đoạn xử lý prompt ban đầu. Tối ưu hóa này nâng cao hiệu suất suy luận LLM trên các nền tảng phần cứng phụ thuộc vào OpenCL, chẳng hạn như GPU tích hợp và các bộ tăng tốc không phải của NVIDIA. Bằng cách cải thiện hiệu quả bộ nhớ trong giai đoạn prefill, người dùng có thể kỳ vọng thời gian xử lý prompt đầu vào nhanh hơn. Bản cập nhật nhắm mục tiêu cụ thể vào các kernel prefill của FlashAttention bằng cách chuyển vị ô dữ liệu K trong bộ nhớ cục bộ, giúp căn chỉnh việc truy cập bộ nhớ và giảm độ trễ. Bản phát hành cũng cung cấp các tệp thực thi biên dịch sẵn cho nhiều hệ điều hành và backend phần cứng khác nhau, bao gồm Windows, Linux, macOS và Android.
## KIẾN THỨC NỀN
Quá trình suy luận LLM gồm hai giai đoạn chính: giai đoạn prefill (xử lý song song prompt đầu vào để xây dựng KV cache) và giai đoạn decode (tạo các token tiếp theo một cách tuần tự). FlashAttention là một thuật toán tối ưu hóa được thiết kế để tăng tốc cơ chế attention bằng cách giảm số lần đọc và ghi bộ nhớ. OpenCL là một framework cho phép phần mềm chạy trên các nền tảng không đồng nhất, giúp llama.cpp hoạt động hiệu quả trên nhiều loại phần cứng khác ngoài GPU NVIDIA tiêu chuẩn.