llama.cpp Phát hành Bản b11365 Sửa Lỗi Ghi Đè Bộ Nhớ CPU Trong Phép Toán Softmax Backward
llama.cpp đã phát hành bản cập nhật b11365, khắc phục sự cố trong CPU backend khi phép toán `soft_max_back` tạo ra kết quả sai nếu vùng nhớ đích dùng chung bộ nhớ với dữ liệu đầu vào. Bản cập nhật thay thế chuỗi xử lý nhiều bước bằng một vòng lặp hợp nhất (fused loop) để đọc toàn bộ dữ liệu đầu vào trước khi ghi đè bộ nhớ. Bản sửa lỗi này ngăn ngừa tình trạng sai số lặng lẽ trong quá trình lan truyền ngược trên kiến trúc CPU khi bật các tính năng tối ưu hóa bộ nhớ đồ thị. Việc đảm bảo tính toán đạo hàm chính xác là rất quan trọng đối với các tác vụ huấn luyện, tinh chỉnh (fine-tuning) và lan truyền ngược trên hệ sinh thái GGML. Lỗi xảy ra do `GGML_OP_SOFT_MAX_BACK` cho phép cấp phát bộ nhớ tại chỗ (in-place), khiến trình phân bổ bộ nhớ gán `dst` trùng với `src1`, dẫn đến các bước tính toán ban đầu ghi đè lên dữ liệu cần cho các bước sau. CUDA không bị ảnh hưởng vì kernel giảm (reduction kernel) của nó hoàn thành việc đọc trước khi ghi, và một bài kiểm tra hồi quy mới đã được thêm vào để xác minh hành vi gán trùng bộ nhớ trên CPU.
## KIẾN THỨC NỀN
llama.cpp là một thư viện máy học mã nguồn mở C/C++ dựa trên khung làm việc GGML tensor, hỗ trợ xử lý LLM hiệu quả trên nhiều loại phần cứng phổ thông. Để tối ưu hóa dung lượng RAM, trình phân bổ đồ thị tính toán thường xuyên tái sử dụng các bộ đệm bộ nhớ (aliasing) cho các phép toán tại chỗ (in-place) khi tensor đầu ra dùng chung bộ nhớ với tensor đầu vào.