Xuất bản vào

Cách mở rộng quy mô suy luận LLM bằng KV-Caching

Tác giả

Khi bạn sử dụng ChatGPT hoặc Claude, tại sao từ đầu tiên mất thời gian lâu hơn để xuất hiện so với từ thứ hai? Đó là nhờ vào việc sử dụng bộ nhớ cache KV! Điều này khá ấn tượng khi bạn nghĩ về số lượng các thủ thuật tối ưu nhỏ nhằm cải thiện thời gian phục vụ của các dịch vụ tạo văn bản!

Một LLM tạo văn bản bằng cách dự đoán lặp lại từ tiếp theo và nối nó vào các token đã được tạo ra trước đó và câu gốc. Thông thường, các LLM gây ra từ tiếp theo trong chuỗi. Điều này có nghĩa là mỗi token đầu vào tương ứng với một trạng thái ẩn kết quả trong Transformer, rồi đó sẽ tương ứng với một vectơ dự đoán cho từ tiếp theo. Vectơ dự đoán có nhiều dự đoán như có token trong từ điển, và từ tiếp theo có thể được dự đoán bằng cách tìm kiếm cố gắng dự đoán có xác suất cao nhất. Điều này có nghĩa là khi chúng ta giải mã một token cụ thể, chúng ta chỉ cần tính toán trạng thái ẩn tương ứng của nó và loại bỏ các token khác.

Trạng thái ẩn cần thiết này tương ứng với token cuối cùng của chuỗi đầu vào. Để tính toán trạng thái ẩn này, trong mỗi lớp tự chú ý, chúng ta cần tất cả các Key và Values của toàn bộ chuỗi đầu vào nhưng chỉ cần Query cho token cuối cùng của chuỗi này. Chúng ta tạo ra sự chú ý cho token cuối cùng bằng cách lấy Softmax của tích vô hướng giữa Query và tất cả các Key:

sự chú ý cho token cuối cùng = Softmax(Query x tất cả Keys)

Và chúng ta có được trạng thái ẩn kết quả bằng cách lấy trung bình có trọng số của tất cả các Values như được cho bởi sự chú ý:

trạng thái ẩn = tất cả các Values x sự chú ý

Có một vài kết luận mà chúng ta có thể rút ra. Thứ nhất, không cần phải tính toán sự chú ý ngoại trừ những cái tương ứng với token cuối cùng. Điều này có nghĩa là trong quá trình giải mã, độ phức tạp thời gian ở mỗi lần lặp lại là tuyến tính theo số token đầu vào (~O(N)), ngay cả với cơ chế chú ý vanilla. Thứ hai, các Key và Values vẫn giữ nguyên cho mỗi token cho tất cả các lần lặp lại. Điều này có nghĩa là chúng ta không cần phải tính toán lại chúng ở mỗi lần lặp lại. Đó là nơi mà ý tưởng về việc sử dụng cache KV đến từ!

Quá trình giải mã có thể được chia thành 2 giai đoạn: giai đoạn khởi tạo và giai đoạn tạo ra. Trong giai đoạn khởi tạo, tất cả các Key và Values tương ứng với tất cả các token trong câu gốc đầu vào cần được tạo ra. Điều này mất g

ần như bằng thời gian như pha tiếp theo. Sau đó, chúng ta có thể lưu trữ tất cả các key và values cho tất cả các lớp chú ý trong bộ nhớ cache KV. Trong giai đoạn tạo ra, chúng ta chỉ cần tạo ra Key, Query và Value tương ứng với token cuối cùng trong chuỗi đầu vào. Sau đó, chúng ta có thể rút các Keys và Values đã lưu trữ từ bộ nhớ cache để tính toán các trạng thái ẩn cần thiết. Cuối cùng, chúng ta cập nhật bộ nhớ cache với Key và Value đã tính toán mới nhất tương ứng với token cuối cùng đó.

Quá trình cache KV này giảm đáng kể thời gian trễ liên quan đến việc tạo văn bản!

Cách mở rộng quy mô suy luận LLM bằng KV-Caching

TÁC GIẢ

Về ABN Asia: AiUTOMATING PEOPLE, ABN Asia được thành lập từ năm 2012, là một công ty xuất phát từ học thuật, do những giảng viên, cựu du học sinh Hungary, Hà Lan, Nga, Đức, và Nhật Bản sáng lập. Chúng tôi chia sẻ đam mê chung và tầm nhìn vững chắc về công nghệ, mang đến sự đổi mới và chất lượng đỉnh cao cho khách hàng. Phương châm của chúng tôi là: Tốt hơn. Nhanh hơn. An toàn hơn. Trong nhiều trường hợp: Rẻ hơn.

Hãy liên hệ với chúng tôi khi Quý doanh nghiệp có các nhu cầu về dịch vụ công nghệ thông tin, tư vấn chuyển đổi số, tìm kiếm các giải pháp phần mềm phù hợp, hoặc nếu Quý doanh nghiệp có đấu thầu CNTT (RFP) để chúng tôi tham dự. Quý doanh nghiệp có thể liên hệ với chúng tôi qua địa chỉ email [email protected]. Chúng tôi sẵn lòng hỗ trợ với mọi nhu cầu công nghệ của Quý doanh nghiệp.

ABNAsia.org

© ABN ASIA

AbnAsia.org Software