Thư viện suy luận cục bộ llama.cpp vừa phát hành v1.0.0, còn thư viện tensor nền tảng ggml cũng được nâng lên 1.0 cùng lúc. Nhóm dự án đăng bài trên blog Hugging Face, cho biết bản này nhằm mang đến một nền tảng ổn định hơn cho các lập trình viên đang phụ thuộc vào nó: từ nay, hễ API công khai hoặc ABI của llama.cpp và ggml xuất hiện thay đổi không tương thích, điều đó sẽ được thể hiện bằng việc tăng số phiên bản chính.
Suốt mấy năm qua, llama.cpp gần như chỉ phát hành theo số bản dựng bắt đầu bằng chữ b: mỗi lần mã được gộp vào nhánh chính là có một bản dựng mới, và hiện đã đếm đến hơn b12000. Sau 1.0, hệ số bản dựng này không dừng lại mà vẫn tiếp tục ra đời dưới dạng bản tiền phát hành; điểm khác là giờ có thêm một dòng phiên bản chính thức đi kèm cam kết, người dùng có thể chọn theo nhu cầu.
Số phiên bản từ nay có ý nghĩa
Quy tắc trong bài blog khá thẳng thắn: MAJOR tương ứng với các thay đổi phá vỡ giao diện C công khai trong thư mục ./include; MINOR là tính năng mới hoặc hỗ trợ mô hình mới tương thích ngược; PATCH chỉ sửa lỗi, không đụng đến giao diện. Quy tắc áp dụng cho toàn bộ các dự án thuộc ggml-org. Nhóm dự án viết rằng số người dùng ngày càng nhiều nên về sau họ sẽ làm cho những ranh giới này hiển thị rõ ràng hơn.
Để khởi đầu sạch sẽ, bản 1.0 trước hết dọn dẹp một đợt: xóa một loạt giao diện công khai đã được đánh dấu lỗi thời từ lâu, đổi tên một số hàm, và thêm trường mới vào cấu trúc tham số ngữ cảnh; về phía ggml, các API lỗi thời và toán tử DIAG_MASK cũ cũng bị loại bỏ. Với lập trình viên liên kết llama.cpp như một thư viện vào sản phẩm của mình, lần nâng cấp này đòi hỏi sửa mã một lần; sau đó chỉ cần theo các phiên bản phụ, họ không phải lo giao diện đột nhiên biến mất ở một bản dựng nào đó.
Phiên bản này bổ sung những gì
Ngoài quy tắc phiên bản, bản 1.0 còn mang theo khá nhiều cập nhật:
- Bộ nhớ đệm KV hỗ trợ FP8; bổ sung bộ đệm chuyên gia MoE đặt trong bộ nhớ máy chủ, cho phép cấu hình tỷ lệ phân chia cho CPU;
- Bổ sung hỗ trợ các mô hình như Kimi-K3.1-Pro, trong đó Kimi-K3.1 có thể xử lý đầu vào là hình ảnh;
- llama-server có thêm giao diện tổng hợp giọng nói /v1/audio/speech, dùng cùng mô hình TTS drama-3;
- Phía máy chủ đã sửa các vấn đề SSRF, CORS và DNS rebinding; việc gọi công cụ không cần xác thực và truy cập địa chỉ mạng riêng nay đều phải bật một cách tường minh, còn HF_TOKEN chỉ được gửi tới huggingface.co.
Mục cuối cùng thiết thực nhất với những ai tự dựng dịch vụ. llama-server thường được dùng như giao diện tương thích OpenAI chạy cục bộ và đặt trong mạng nội bộ, thậm chí có người để lộ thẳng ra internet; nếu tính năng gọi công cụ mở sẵn theo mặc định thì bề mặt rủi ro cũng nới rộng theo. Chuyển sang bật tường minh đồng nghĩa với việc trả quyền lựa chọn về cho người triển khai.
Bộ đệm chuyên gia MoE thì nhắm đúng vào hình thái mô hình hiện nay. Phần lớn mô hình lớn năm nay dùng kiến trúc hỗn hợp chuyên gia, tổng số tham số thường lên đến vài trăm tỷ nhưng mỗi bước chỉ kích hoạt một phần nhỏ. Khi VRAM không chứa nổi toàn bộ các chuyên gia, việc chuyển phần tạm thời chưa dùng đến sang bộ nhớ máy chủ và giao cho CPU tính theo một tỷ lệ nhất định là cách dung hòa quen thuộc để chạy mô hình MoE cỡ lớn trên card đồ họa phổ thông. Giờ tính năng này đã vào nhánh chính, người dùng không cần đi tìm các nhánh của bên thứ ba nữa.
Đặt cạnh nhánh dành cho trung tâm dữ liệu
Các framework suy luận hiện chia thành hai hướng. vLLM, SGLang và những framework tương tự nhắm tới GPU trung tâm dữ liệu, cạnh tranh về thông lượng theo lô và khả năng xử lý đồng thời; mục tiêu của llama.cpp là để mô hình chạy được trên điện thoại, laptop và máy trạm, dựa vào lượng tử hóa để nhét mô hình lớn vào bộ nhớ hạn chế, đồng thời dùng kết hợp CPU và GPU.
Điều này thể hiện rõ trong danh sách backend: CUDA, Metal, Vulkan, WebGPU, HIP của AMD, SYCL của Intel, Hexagon của Snapdragon và MUSA của Moore Threads đều có mặt, mỗi backend có thể được biên dịch thành thư viện động và nạp theo nhu cầu lúc chạy. Theo bài blog, dự án đã hỗ trợ hơn 150 biến thể kiến trúc mô hình. Các framework cho trung tâm dữ liệu chạy theo phần cứng mới nhất, còn llama.cpp chạy theo những thiết bị đuôi dài; tập người dùng của hai bên chồng lấn không nhiều.
Dự án có khoảng 135 nghìn sao và 25,6 nghìn fork trên GitHub. Nhóm hiện làm việc tại Hugging Face; bài blog cảm ơn HF đã cung cấp tài nguyên tính toán cho CI, đồng thời liệt kê sự hỗ trợ phần cứng từ NVIDIA, AMD, Qualcomm, Arm, IBM và Intel. Cam kết về phiên bản có giữ được hay không còn phải xem vài bản phụ sắp tới có lén thay đổi giao diện hay không.
Nguồn tham khảo: Blog Hugging Face, trang phát hành llama.cpp trên GitHub, CocoLoop, README của kho llama.cpp; trang phát hành đã được đối chiếu để xác nhận các tính năng mới của 1.0, phạm vi dọn dẹp giao diện và danh sách backend.