QAT- Nghệ thuật phát triển một mô hình Bonsai

Không có mô tả

  • 8 min read
QAT- Nghệ thuật phát triển một mô hình Bonsai
Không có mô tả

🌳 QAT: Nghệ thuật phát triển mô hình Bonsai

Thành tựu

Kimi K2 Thinking đã đạt được một điều đáng kinh ngạc: một mô hình suy luận với 1 nghìn tỷ tham số hoạt động ở độ chính xác INT4 và đạt SOTA (State-Of-The-Art). Mô hình này cải thiện tốc độ tạo sinh gấp 2 lần với độ chính xác “không suy giảm” - tất cả trong khi mỗi trọng số chỉ được biểu diễn bằng 16 giá trị có thể.

Thoạt nhìn, điều này có vẻ không thể. Làm thế nào để biểu diễn toàn bộ khả năng biểu đạt của trọng số mạng nơ-ron chỉ bằng 4 bit? Câu trả lời nằm ở Đào tạo nhận biết lượng tử hóa (QAT), và việc hiểu tại sao lại tiết lộ những hiểu biết cơ bản về cách thức hoạt động thực sự của mạng nơ-ron.

Tại sao 16 Giá trị có thể Lưu trữ Trạng thái cho Mỗi Trọng số

Quan điểm ngây thơ (Sai)

Hầu hết mọi người nghĩ về lượng tử hóa như thế này:

Trọng số FP16 gốc: 0.00347182… ↓ (làm tròn ngây thơ) Giá trị INT4: ??? Vấn đề: Làm thế nào để nhét độ chính xác vô hạn vào 16 thùng?

Điều này có vẻ là một cơn ác mộng nén mất mát. Và với lượng tử hóa ngây thơ, nó đúng là như vậy.

Thực tế: Nó Phụ thuộc vào Phân phối, Không phải Độ chính xác

Đây là những gì thực sự quan trọng đối với trọng số mạng nơ-ron:

Trọng số cần biểu diễn:

  • Không phải: “chính xác là 0.00347182”
  • Mà là: “kết nối này nên hơi dương và yếu”

Mạng nơ-ron không quan tâm đến độ chính xác tuyệt đối - chúng quan tâm đến tầm quan trọng tương đốicác mẫu hình trên nhiều trọng số.

Trực quan hóa Phân phối Trọng số

Tần suất │ │ ╱╲ │ ╱ ╲ Hầu hết trọng số tập trung │ ╱ ╲ quanh số không │ ╱ ╲ │ ╱ ╲___________ └──────────────────────── Giá trị trọng số -0.5 0 0.5

Lưu ý chính: Hầu hết trọng số nhỏ, với một vài giá trị ngoại lệ lớn. Chúng ta không cần độ chính xác đồng đều - chúng ta cần độ chính xác cao hơn ở những nơi trọng số tập trung.

Lượng tử hóa INT4: Đặt giá trị một cách chiến lược

Đây là cách lượng tử hóa INT4 thực sự hoạt động:

Bước 1: Tìm tỷ lệ và điểm không

Phạm vi FP16: [-0.47, 0.53] Ánh xạ sang phạm vi INT4: [0, 15]

Tỷ lệ = (0.53 - (-0.47)) / 15 = 0.0667 Điểm không = 7

Bước 2: Xác định 16 mức lượng tử hóa

INT4 Giá trị FP16 thực tế Giá trị Giá trị ──────────────────── 0 → -0.467 1 → -0.400 2 → -0.333 3 → -0.267 4 → -0.200 5 → -0.133 6 → -0.067 7 → 0.000 ← điểm không (phổ biến nhất) 8 → 0.067 9 → 0.133 10 → 0.200 11 → 0.267 12 → 0.333 13 → 0.400 14 → 0.467 15 → 0.533

Mỗi trọng số được ánh xạ tới mức lượng tử hóa gần nhất. Tỷ lệ và điểm không được chọn cho mỗi kênh hoặc mỗi nhóm để tối đa hóa chất lượng biểu diễn.

Tại sao điều này hoạt động

Ví dụ ma trận trọng số (4×4, hiển thị giá trị FP16):

Trước khi lượng tử hóa (FP16): ┌─────────────────────────────────────────┐ │ 0.023 -0.156 0.401 -0.089 │ │ -0.312 0.067 0.134 -0.445 │ │ 0.189 -0.223 0.012 0.356 │ │ -0.078 0.445 -0.267 0.101 │ └─────────────────────────────────────────┘

Sau khi lượng tử hóa INT4 (lưu trữ giá trị INT4): ┌─────────────────────────────────────────┐ │ 7 5 13 6 │ ← Mỗi giá trị là 0-15 │ 3 8 9 1 │ │ 10 4 7 12 │ │ 6 15 4 9 │ └─────────────────────────────────────────┘

Tái tạo khi suy luận (FP16): ┌─────────────────────────────────────────┐ │ 0.000 -0.133 0.400 -0.067 │ ← Gần với bản gốc! │ -0.267 0.067 0.133 -0.467 │ │ 0.200 -0.200 0.000 0.333 │ │ -0.067 0.533 -0.200 0.133 │ └─────────────────────────────────────────┘

Phép màu: Đối với hầu hết các phép toán mạng nơ-ron (nhân ma trận, kích hoạt), các xấp xỉ này bảo tồn các mẫu hình cần thiết. Mạng học cách trở nên mạnh mẽ với sự rời rạc hóa này.

QAT so với PTQ

Lượng tử hóa sau đào tạo (PTQ): Cách tiếp cận ngây thơ

PTQ giống như cố gắng nhét một cây trưởng thành vào một chậu nhỏ:

PTQ (Lượng tử hóa sau đào tạo): ═══════════════════════════════════════════════════

Bước 1: Huấn luyện mô hình bình thường ──────────────────────────────── [Huấn luyện độ chính xác đầy đủ] │ │ Trọng số học: “Tôi cần chính xác 0.00347182 để chính xác” │ ▼ Mô hình FP16 đã huấn luyện

Bước 2: Lượng tử hóa sau khi huấn luyện ──────────────────────────────── [Mất độ chính xác đột ngột] │ │ Trọng số 0.00347182 → Giá trị INT4 7 → 0.00000000 │ Trọng số 0.15234 → Giá trị INT4 9 → 0.13333333 │ Trọng số -0.08234 → Giá trị INT4 6 → -0.06666666 │ ▼ Mô hình INT4 (độ chính xác giảm!)

Vấn đề: ──────────── Mạng chưa bao giờ được huấn luyện để chống chịu được lượng tử hóa └─> Lỗi tích lũy qua các chuỗi dài └─> Đối với mô hình suy luận: thất bại thảm hại

Đào tạo nhận biết lượng tử hóa (QAT): Lớn lên trong chậu

QAT giống như trồng một cây bonsai - được định hình để phù hợp ngay từ đầu:

QAT (Đào tạo nhận biết lượng tử hóa): ═══════════════════════════════════════════════════

Bước 1: Bắt đầu với mô hình đã được huấn luyện trước ───────────────────────────────────── [Mô hình FP16 từ huấn luyện trước]

Bước 2: Thêm mô phỏng lượng tử hóa trong quá trình huấn luyện ──────────────────────────────────────────────────── Lượt truyền xuôi: │ ├─> Trọng số FP16: 0.00347182 │ ├─> [Mô phỏng lượng tử hóa] │ └─> Lượng tử hóa: 0.00347182 → INT4(7) → 0.00000000 │ └─> Sử dụng giá trị lượng tử hóa trong lượt truyền xuôi │ └─> Tính toán tổn thất với trọng số đã lượng tử hóa

Lượt truyền ngược: │ ├─> Gradient chảy qua │ (sử dụng ước lượng truyền thẳng) │ └─> Cập nhật trọng số FP16: 0.00347182 → 0.00123456 (Nhưng các lượt truyền xuôi trong tương lai sẽ lượng tử hóa nó)

Bước 3: Mô hình học cách chống chịu ────────────────────────────────── Sau nhiều lần lặp: │ ├─> Trọng số tự nhiên tập trung quanh các mức lượng tử hóa ├─> Mạng bù đắp cho lỗi lượng tử hóa ├─> Các trọng số quan trọng di chuyển đến các điểm lượng tử hóa “ổn định” │ └─> Mô hình cuối cùng hoạt động tốt ngay cả khi được lượng tử hóa hoàn toàn

Bước 4: Lưu dưới dạng INT4 ───────────────────── [Chuyển đổi trọng số FP16 cuối cùng → INT4] │ └─> Không mất độ chính xác! Mô hình đã được huấn luyện cho điều này.

Sự khác biệt chính

PTQ: “Làm thế nào tôi có thể ép mô hình này vào INT4?” └─> Ép một chốt tròn vào một lỗ vuông

QAT: “Làm thế nào tôi có thể huấn luyện một mô hình hoạt động tốt một cách tự nhiên trong INT4?” └─> Tạo ra một chốt vuông ngay từ đầu

Tại sao QAT lại quan trọng

Thách thức của mô hình suy luận

Prompt: “Giải bài toán này…” │ ├─> Token suy luận 1 (lỗi nhỏ: +0.1%) ├─> Token suy luận 2 (lỗi tích lũy: +0.2%) ├─> Token suy luận 3 (lỗi tích lũy: +0.3%) ├─> … ├─> Token suy luận 10.000 (lỗi bùng nổ: +25%!) │ └─> Câu trả lời cuối cùng: SAI

Với PTQ, các lỗi lượng tử hóa nhỏ tích lũy qua hàng nghìn token suy luận. Mô hình “trôi” khỏi quỹ đạo.

Giải pháp của Kimi: QAT trên các thành phần MoE

Kiến trúc: ═══════════════════════════════════════════

┌─────────────────────────────────────────┐ │ Các lớp Chú ý │ │ (FP16 hoặc FP8) │ └─────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Lớp MoE (INT4 với QAT) │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │Chuyên│ │Chuyên│ … │Chuyên│ │ ← 384 chuyên gia │ │ gia 1 │ │ gia 2 │ │ gia 384 │ │ ← Mỗi chuyên gia ở INT4 │ └──────┘ └──────┘ └──────┘ │ │ ↑ ↑ ↑ │ │ └─────────┴─────────────┘ │ │ Bộ định tuyến (chọn 8) │ └─────────────────────────────────────────┘

Tại sao lại áp dụng QAT đặc biệt cho các thành phần MoE?

  1. Phần lớn tham số nằm ở đây: 384 chuyên gia × tham số mỗi chuyên gia
  2. Sự dư thừa: Chỉ có 8/384 chuyên gia hoạt động trên mỗi token - chịu được sai số xấp xỉ hơn
  3. Điểm nghẽn: Các lớp MoE bị giới hạn băng thông bộ nhớ
  4. Chiến thắng lớn nhất: Giảm bộ nhớ 4 lần ở những nơi quan trọng nhất

Kết luận: Trí tuệ 4-Bit

Điều đáng kinh ngạc về Kimi K2 Thinking không chỉ là việc nó sử dụng 4 bit cho mỗi trọng số. Đó là việc thông qua QAT, mô hình học cách sống trong thế giới 16 giá trị mỗi trọng số.

Hai hiểu biết chính:

  1. 16 giá trị là đủ vì mạng nơ-ron có sự dư thừa lớn, và với tỷ lệ/điểm không phù hợp cho mỗi nhóm, 16 giá trị đó có thể được đặt một cách chiến lược ở nơi phân phối trọng số thực sự tồn tại.
  2. QAT so với PTQ không chỉ là về thời điểm bạn lượng tử hóa - đó là về việc dạy mô hình trở nên mạnh mẽ ngay từ đầu với lượng tử hóa, ngăn chặn sự tích lũy lỗi trong các chuỗi suy luận dài.

Tham khảo

Recommended for You

Gợi ý hiệu quả cho các mô hình thị giác sinh

Gợi ý hiệu quả cho các mô hình thị giác sinh

Không có mô tả

SYNTH- biên giới dữ liệu mới

SYNTH- biên giới dữ liệu mới

Không có mô tả