19 điểm bởi GN⁺ 27 ngày trước | 4 bình luận | Chia sẻ qua WhatsApp
  • 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

    • Khi nói đến phép quay, có phải rốt cuộc là đang nói tới chéo hóa (diagonalization) hay không?
      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
    • Hôm nay tôi mới biết đến Multi-Head Latent Attention (MHLA), và nghe nói đây cũng là một cách nén KV cache
      Mong ai đó giải thích mối quan hệ giữa nghiên cứu này và MHLA
    • Thực ra đây là kiểu kỹ thuật Johnson–Lindenstrauss cổ điển đã có từ lâu
      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ự
    • Nếu thực sự thiếu trích dẫn thì quả là đáng tiếc
      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
    • Schmidhuber’d”, một cách nói châm biếm về việc bỏ sót trích dẫn công trình trướ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ệ

    • Trên thực tế, phân bố giá trị kích hoạt trong các mô hình deep learning không hề đẳng hướng (isotropic)
      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 SmoothQuantPrivileged Basis về chủ đề này
    • Ý ở đây là mô hình chỉ nên nhạy với khoảng cách giữa các vector, chứ không phải hướng của dữ liệu
      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”
    • Mục tiêu của lượng tử hóa là đưa dữ liệu vào các ‘bin’ để nén
      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
    • Phép quay đơn giản là đưa dữ liệu sang một hệ tọa độ tham chiếu khác để tăng hiệu quả nén
      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
    • Đây không phải là phép quay ngẫu nhiên mà là căn chỉnh outlier
      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

    • Họ đang thử một cách hiệu quả hơn cả bài báo: thay phép quay O(d²) bằng Subsampled Randomized Hadamard Transform để cải thiện xuống O(d log d)
      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 ngạc nhiên vì việc triển khai lại đơn giản hơn tưởng tượng
      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
    • Tốc độ phát triển của llama.cpp thật sự rất nhanh
      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

    • Trên thực tế, người ta sẽ quay ngược (un-rotation) để phục vụ các vector truy vấn trong tương lai
      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

    • Thực sự trông như do AI viết ra, hoặc do người không hiểu kỹ thuật viế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ể
    • Một số câu bị đơn giản hóa quá mức
      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
    • Câu “TurboQuant, QJL và PolarQuant là những đổi mới thuật toán hiệu quả về mặt lý thuyết và tiệm cận cận dưới” nghe giống khẩu hiệu quảng bá bị thổi phồng
  • Một bản cài đặt PyTorch độc lập đã được công bố
    turboquant-pytorch

    • Nó đưa ra phần giải thích rõ ràng hơn nhiều so với blog của Google
  • 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ế

    • JPEG XL thì dựa trên nghiên cứu chuyên cho ảnh, nhưng cũng có điểm tương tự với các trường hợp như AVIF, tức là điều chỉnh công nghệ video cho phù hợp với ảnh
      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ự