- Một bộ thuật toán lượng tử hóa giải quyết tận gốc bài toán overhead bộ nhớ của các vector nhiều chiều, có thể áp dụng cho cả nén key-value cache của LLM lẫn tìm kiếm vector
- Cấu trúc nén 2 giai đoạn: trước tiên dùng PolarQuant để nén dữ liệu với chất lượng cao, sau đó dùng thuật toán QJL để loại bỏ sai số còn lại chỉ với 1 bit
- Có thể lượng tử hóa key-value cache xuống 3 bit mà không cần huấn luyện hay fine-tuning và không làm giảm độ chính xác của mô hình, đồng thời đạt mức tăng hiệu năng tối đa 8 lần trên GPU H100
- Trong tìm kiếm vector, hệ thống cũng đạt tỷ lệ recall tối ưu mà không cần codebook cỡ lớn hay tinh chỉnh theo từng bộ dữ liệu, vượt qua các phương pháp SOTA hiện có
- Đây là một đóng góp thuật toán nền tảng với hiệu quả có thể chứng minh được, tiến gần giới hạn dưới về mặt lý thuyết, và được kỳ vọng đóng vai trò cốt lõi trong các mô hình như Gemini cũng như hạ tầng tìm kiếm ngữ nghĩa quy mô lớn
Bối cảnh về vector và lượng tử hóa
- Vector là cách nền tảng để các mô hình AI hiểu và xử lý thông tin; vector nhiều chiều biểu diễn các thông tin phức tạp như đặc trưng hình ảnh, ý nghĩa của từ ngữ và thuộc tính của bộ dữ liệu
- Vector nhiều chiều tiêu tốn lượng bộ nhớ khổng lồ, từ đó tạo ra nút thắt trong key-value cache (một dạng bảng tham chiếu số tốc độ cao lưu thông tin thường dùng dưới các nhãn đơn giản để có thể truy xuất ngay)
- Lượng tử hóa vector là một kỹ thuật nén dữ liệu cổ điển giúp giảm kích thước vector nhiều chiều, qua đó tăng tốc tìm kiếm vector và giảm nghẽn ở key-value cache
- Lượng tử hóa vector truyền thống có overhead bộ nhớ nội tại vì phải tính toán và lưu hằng số lượng tử hóa với đầy đủ độ chính xác cho từng khối dữ liệu nhỏ; chi phí bổ sung 1–2 bit cho mỗi số này phần nào làm triệt tiêu mục tiêu của lượng tử hóa
Cách TurboQuant hoạt động
- TurboQuant là một phương pháp nén đạt mức thu nhỏ mô hình lớn mà không làm mất độ chính xác, hỗ trợ cả nén key-value cache lẫn tìm kiếm vector
- Hệ thống gồm hai bước cốt lõi:
Giai đoạn 1: Nén chất lượng cao (phương pháp PolarQuant)
- Vector dữ liệu được xoay ngẫu nhiên để đơn giản hóa cấu trúc hình học của dữ liệu, sau đó áp dụng riêng bộ lượng tử hóa chất lượng cao tiêu chuẩn cho từng phần của vector
- Ở giai đoạn này, phần lớn số bit được dùng để nắm bắt các khái niệm chính và cường độ của vector gốc
Giai đoạn 2: Loại bỏ sai số ẩn
- Áp dụng thuật toán QJL lên sai số nhỏ còn lại từ giai đoạn 1 với chỉ 1 bit năng lực nén dư
- QJL hoạt động như một bộ kiểm tra sai số toán học, loại bỏ độ chệch để tạo ra điểm attention chính xác hơn
QJL: kỹ thuật 1 bit không overhead
- Tận dụng biến đổi Johnson-Lindenstrauss để giảm chiều dữ liệu nhiều chiều trong khi vẫn giữ được khoảng cách cốt lõi và mối quan hệ giữa các điểm dữ liệu
- Mỗi con số trong vector kết quả được rút gọn thành một bit dấu duy nhất (+1 hoặc -1), nên overhead bộ nhớ bằng 0
- Để duy trì độ chính xác, hệ thống dùng một bộ ước lượng đặc biệt giúp cân bằng chiến lược giữa truy vấn độ chính xác cao và dữ liệu đơn giản hóa độ chính xác thấp
- Nhờ vậy, mô hình có thể tính chính xác điểm attention, tức chỉ số quyết định phần nào của đầu vào là quan trọng và phần nào có thể bỏ qua
PolarQuant: một “góc nhìn” mới về nén
- Đây là một cách tiếp cận giải bài toán overhead bộ nhớ theo hướng hoàn toàn khác
- Thay vì tọa độ chuẩn (X, Y, Z), vector được chuyển sang tọa độ cực — tương tự như thay “3 block về phía đông, 4 block về phía bắc” bằng “5 block theo hướng 37 độ”
- Kết quả chuyển đổi gồm hai loại thông tin: bán kính thể hiện cường độ của dữ liệu cốt lõi và góc thể hiện hướng cũng như ý nghĩa của dữ liệu
- Vì mẫu hình của góc đã được biết trước và tập trung cao, hệ thống ánh xạ dữ liệu lên một lưới “tròn” cố định có ranh giới đã biết sẵn, thay vì lưới “vuông” có ranh giới liên tục thay đổi, từ đó bỏ qua bước chuẩn hóa dữ liệu tốn kém
- Với vector d chiều, hệ thống nhóm các cặp tọa độ để ánh xạ sang hệ tọa độ cực, gom các bán kính lại theo cặp và lặp lại biến đổi tọa độ cực đệ quy, cuối cùng chưng cất thành một bán kính duy nhất cùng một tập góc giàu tính mô tả
Thử nghiệm và kết quả
Hiệu năng trên benchmark ngữ cảnh dài
- Được đánh giá trên các benchmark ngữ cảnh dài tiêu chuẩn như LongBench, Needle In A Haystack, ZeroSCROLLS, RULER, L-Eval bằng các LLM mã nguồn mở (Gemma, Mistral)
- TurboQuant đạt điểm tối ưu ở cả độ méo tích vô hướng (dot product distortion) lẫn recall, đồng thời giảm footprint bộ nhớ key-value xuống mức tối thiểu
- Trên mô hình Llama-3.1-8B-Instruct, hệ thống cho hiệu năng vững chắc so với baseline KIVI trên nhiều tác vụ như hỏi đáp, sinh mã và tóm tắt
Tác vụ Needle-in-Haystack
- Trong bài kiểm tra tìm thông tin cụ thể giữa lượng lớn văn bản, TurboQuant đạt kết quả downstream hoàn hảo trên toàn bộ benchmark
- Kích thước bộ nhớ key-value được giảm ít nhất hơn 6 lần
- PolarQuant cũng gần như không mất mát trên tác vụ này
Hiệu năng thời gian chạy
- Có thể lượng tử hóa key-value cache xuống 3 bit mà không cần huấn luyện hay fine-tuning, đồng thời không phải đánh đổi độ chính xác của mô hình
- Đạt thời gian chạy nhanh hơn cả LLM gốc; cách triển khai cực kỳ hiệu quả và overhead runtime gần như không đáng kể
- TurboQuant 4 bit mang lại mức tăng hiệu năng tối đa 8 lần trong tính toán attention logits trên GPU H100 so với key không lượng tử hóa 32 bit, đo theo baseline tối ưu hóa JAX
Hiệu năng tìm kiếm vector
- Được đánh giá so sánh với các phương pháp tiên tiến như PQ, RabbiQ trong tìm kiếm vector nhiều chiều
- Sử dụng tỷ lệ recall 1@k, đo mức độ thường xuyên mà thuật toán bắt được kết quả tích vô hướng tốt nhất thực sự trong top-k xấp xỉ
- So với các baseline dùng codebook khổng lồ kém hiệu quả và tinh chỉnh theo từng bộ dữ liệu, TurboQuant cho tỷ lệ recall vượt trội một cách nhất quán
- Trên bộ dữ liệu GloVe (d=200), hệ thống đạt tỷ lệ recall 1@k tối ưu so với nhiều baseline lượng tử hóa hiện đại
- Với cách tiếp cận data-oblivious, hệ thống cung cấp mức méo gần tối ưu, giúp duy trì độ chính xác của những mô hình nặng hơn nhiều nhưng chỉ với hiệu quả của một hệ thống 3 bit
Triển vọng tương lai
- TurboQuant, QJL và PolarQuant không chỉ là các giải pháp kỹ thuật thực dụng mà còn là những đóng góp thuật toán nền tảng được hậu thuẫn bởi các chứng minh lý thuyết mạnh mẽ
- Nhờ có hiệu quả có thể chứng minh được và hoạt động sát giới hạn dưới về mặt lý thuyết, chúng vững chắc và đáng tin cậy cho các hệ thống lõi quy mô lớn
- Ngoài ứng dụng chính là giải quyết nút thắt key-value cache ở các mô hình như Gemini, tác động của lượng tử hóa vector online hiệu quả còn có thể mở rộng rộng hơn nhiều
- Khi tìm kiếm hiện đại chuyển từ mô hình dựa trên từ khóa sang hiểu ý định và ngữ nghĩa, tìm kiếm vector để xác định mục có độ tương đồng ngữ nghĩa cao nhất trong các cơ sở dữ liệu hàng tỷ vector trở thành điều thiết yếu
- TurboQuant cho phép xây dựng và truy vấn các chỉ mục vector quy mô lớn với mức dùng bộ nhớ tối thiểu, thời gian tiền xử lý gần như bằng 0 và độ chính xác ở mức tiên tiến nhất, từ đó hiện thực hóa tìm kiếm ngữ nghĩa ở quy mô Google nhanh hơn và hiệu quả hơn
4 bình luận
"Phép quay là sức mạnh vô hạn. Hãy tin vào điều đó."
Xin bày tỏ sự kính trọng.
Tôi đã đăng nhập chỉ vì bình luận này.
Ý kiến trên Hacker News
Nghiên cứu về nén KV cache quả thực là một bước tiến rất thú vị
Tuy vậy, khá đáng tiếc là các công trình liên quan lại thiếu trích dẫn về cơ chế toán học cốt lõi
Kỹ thuật áp dụng phép quay hình học để xử lý hình học không gian nhiều chiều rồi thực hiện lượng tử hóa cực đoan đã được đề xuất lần đầu trong bài báo NeurIPS 2021 của nhóm chúng tôi, “DRIVE”
Nhờ cách tiếp cận dựa trên phép quay này cùng cơ chế hiệu chỉnh độ lệch, chúng tôi đã đạt được ước lượng trung bình phương sai tối ưu
Sau đó chúng tôi cũng đã trình bày nội dung này trong một seminar do Google mời, và hy vọng các phiên bản sau sẽ bổ sung trích dẫn công trình đi trước khi xét đến sự tương đồng về mặt lý thuyết giữa TurboQuant và PolarQuant
Tức là tôi muốn hỏi liệu đây có phải là cách lưu ma trận đường chéo và một cơ sở mới để nén thêm hay không
Mong ai đó giải thích mối quan hệ giữa nghiên cứu này và MHLA
Những ý tưởng như thế này cứ vài năm lại được khám phá lại, ví dụ bài báo năm 2017 cũng có cách tiếp cận tương tự
Nhưng cũng có khả năng nhà nghiên cứu đã tự nảy ra ý tưởng tương tự một cách độc lập sau khi công việc đã tiến khá xa
Ý tưởng hay thì người hiểu sâu về vấn đề thường sẽ tự nhiên đi tới được
Tôi không hiểu cách giải thích “TurboQuant xoay dữ liệu ngẫu nhiên để đơn giản hóa hình học”
Chẳng phải đâu có gì đảm bảo phép quay lúc nào cũng tạo ra dạng đơn giản hơn?
Ngoài ra, đoạn “dùng biến đổi Johnson–Lindenstrauss để giảm dữ liệu nhiều chiều và biểu diễn mỗi vector bằng các bit dấu” cũng khó thuyết phục, vì tôi không hiểu làm sao chỉ với các giá trị Boolean mà vẫn giữ được thông tin về quan hệ
Một số chiều sẽ xuất hiện giá trị kích hoạt ngoại lai (outlier activation), và do đặc tính của optimizer Adam nên hiện tượng này còn bị khuếch đại
Có thể tham khảo các bài SmoothQuant và Privileged Basis về chủ đề này
Làm vậy sẽ giảm việc học các quy luật không cần thiết và giúp tối ưu ổn định hơn
Tức là tránh để mô hình học những quy tắc vặt vãnh kiểu “nếu chữ số ở vị trí nào đó của một chiều cụ thể bằng 5 thì là mèo”
Khi nhân với ma trận quay, dữ liệu sẽ phân bố đồng đều hơn nên có thể lượng tử hóa hiệu quả hơn
Sau đó dùng thuật toán Lloyd–Max để tối ưu ranh giới và giá trị tái tạo, còn độ lệch (bias) còn lại thì được hiệu chỉnh bằng 1 bit
Nhờ vậy có thể giữ độ chính xác cao dù chỉ dùng ít bit
Ví dụ, nếu đổi giá trị dấu phẩy động sang một đơn vị khác (bel → decibel), ta có thể biểu diễn chúng bằng các giá trị gần nhau hơn nên việc nén sẽ dễ hơn
Tức là quá trình kéo những dữ liệu nằm quá xa về lại gần vùng trung tâm hơn
Ngoài ra, mỗi chiều được mã hóa riêng lẻ nên không phải toàn bộ vector bị rút xuống chỉ còn một giá trị Boolean duy nhất
Bài blog này có chất lượng thấp
Trục trong biểu đồ bị ghi sai, và hình trực quan dạng video cũng hoàn toàn không truyền tải được khái niệm Polar Quantization
Một biểu đồ khác lại bắt đầu trục từ 48 nên phóng đại khác biệt thực tế
Nhìn chung, độ tin cậy của tư liệu trực quan và chất lượng truyền đạt đều kém
Đã có người triển khai vào llama.cpp rồi
Xem commit liên quan
Hy vọng định lý Johnson–Lindenstrauss vẫn còn đúng để việc lượng tử hóa độc lập từng tọa độ vẫn có cơ sở lý thuyết vững chắc
Tôi không có nhiều kiến thức miền, nhưng cấu trúc có vẻ rất rõ ràng
Khả năng cao sẽ được hợp nhất vào nhánh chính trong vòng 4~6 tuần
Có một ảnh động giải thích TurboQuant khá trực quan
Đây là phần tóm tắt tôi viết lại theo mức độ đại học năm đầu
Cốt lõi là lượng tử hóa KV cache với mức mất mát thông tin tối thiểu
Vì phần lớn vector tập trung quanh vùng xích đạo của một siêu cầu nhiều chiều, người ta dùng phép quay để làm phân bố đồng đều hơn, qua đó tăng khả năng bảo toàn entropy
PolarQuant từng thử làm điều này bằng biến đổi tọa độ cực, nhưng TurboQuant đơn giản hóa cách làm đó và bổ sung hiệu chỉnh độ lệch QJL
Kết quả là đạt được nén hiệu quả cao bằng cách kết hợp PolarQuant + QJL + hiệu chỉnh thực dụng
Bài blog có nhiều lỗi và gây rối
Codebook tọa độ hyperpolar của PolarQuant vẫn còn được giữ lại một phần trong TurboQuant
Bài này thuộc loại giải thích thành phần AI tệ nhất mà tôi từng thấy
Gần như không có ngữ cảnh kỹ thuật
Có nhắc đến định lý Johnson–Lindenstrauss nhưng lại không giải thích rõ mối liên hệ cụ thể
Ví dụ kiểu giải thích “đi 3 block về phía đông, 4 block về phía bắc” thành “đi 5 block theo góc 37 độ”, tạo cảm giác như ví dụ cho học sinh cấp 2
Một bản cài đặt PyTorch độc lập đã được công bố
turboquant-pytorch
Blog mới được công bố gần đây, nhưng bài báo thì đã được đưa lên arXiv gần một năm trước
Tôi tò mò liệu nó đã được áp dụng cho các mô hình như Gemini hay chưa, và nếu có thì hy vọng chi phí RAM cho máy cá nhân cũng có thể giảm xuống
Gần đây tôi rất ấn tượng với tốc độ mà nghiên cứu nén được chuyển hóa thành ứng dụng thực tế
Cũng như AVIF và JPEG XL trong định dạng ảnh bắt nguồn từ nghiên cứu codec video, các kỹ thuật lượng tử hóa AI có lẽ cũng sẽ sớm được áp dụng vào môi trường suy luận thực tế
Một số khái niệm như không gian màu XYB là điểm chung, và tôi đoán với LLM cũng sẽ cần kiểu kỹ thuật hóa chuyên biệt tương tự