Mỗi khi một mô hình ngôn ngữ lớn sinh văn bản, nó phải làm việc theo kiểu tuần tự: tính xong token này mới được đoán token tiếp theo. Đó là lý do vì sao chat với AI đôi khi có cảm giác chờ đợi, dù GPU đằng sau mạnh cỡ nào. Speculative decoding là một kỹ thuật ra đời để phá vỡ giới hạn đó, và điều thú vị nhất là nó tăng tốc mà không đánh đổi chất lượng đầu ra, kết quả cuối cùng giống hệt như khi chạy mô hình lớn một mình.

Cặp đôi phác thảo và kiểm chứng

Ý tưởng cốt lõi là dùng hai mô hình song song: một mô hình nhỏ, nhanh, đóng vai người phác thảo, tự do đoán liền một mạch năm bảy token tiếp theo mà không cần chờ xác nhận. Mô hình lớn, chính xác nhưng chậm, sau đó chỉ cần một lượt tính toán duy nhất để kiểm tra toàn bộ chuỗi token đó cùng lúc, thay vì phải sinh từng token một như bình thường. Vì việc kiểm tra song song tận dụng GPU hiệu quả hơn nhiều so với sinh tuần tự, tổng thời gian giảm đáng kể, thường đạt mức tăng tốc gấp hai đến ba lần trong thực tế.

Xác suất chấp nhận được tính ra sao

Khi mô hình lớn kiểm tra, nó không chỉ nhìn xem token do mô hình nhỏ đề xuất có đúng hay không, mà so sánh toàn bộ phân phối xác suất của hai mô hình tại từng vị trí. Với mỗi token phác thảo, xác suất chấp nhận bằng tỷ lệ giữa xác suất mà mô hình lớn gán cho token đó và xác suất mà mô hình nhỏ đã gán, giới hạn ở mức tối đa là một. Nếu hai mô hình đồng thuận cao, gần như chắc chắn token được giữ lại. Nếu mô hình lớn cho rằng token đó khó xảy ra hơn nhiều so với mô hình nhỏ nghĩ, khả năng bị từ chối tăng lên tương ứng.

Rejection sampling: sửa lỗi mà không lệch phân phối

Điểm khiến kỹ thuật này khác biệt so với các phương pháp tăng tốc gần đúng khác nằm ở bước sửa lỗi. Ngay khi một token bị từ chối, toàn bộ token phía sau nó trong chuỗi phác thảo cũng bị loại bỏ theo, rồi mô hình lớn lấy mẫu lại token thay thế từ một phân phối đã được điều chỉnh, cụ thể là phần dư còn lại sau khi trừ đi phần xác suất mà mô hình nhỏ đã lấy nhầm. Nhờ phép toán này, xét về mặt thống kê, chuỗi văn bản cuối cùng có phân phối xác suất giống hệt như khi chỉ chạy mô hình lớn, không phải một bản xấp xỉ.

Chọn model phụ: cùng họ hay chưng cất riêng

Mô hình phác thảo lý tưởng phải nhanh nhưng vẫn nghĩ giống mô hình lớn. Cách phổ biến nhất là dùng phiên bản nhỏ hơn trong cùng họ mô hình, ví dụ bản 1B để phác thảo cho bản 70B, vì chúng chia sẻ tokenizer và thường có xu hướng dự đoán tương đồng. Một hướng khác là huấn luyện riêng một mô hình chưng cất nhỏ gọn chuyên để dự đoán theo phong cách của mô hình đích. Điểm mấu chốt là tokenizer của hai mô hình phải khớp nhau tuyệt đối, vì nếu cách tách token khác nhau, việc so sánh xác suất token theo token ở bước kiểm chứng sẽ không còn ý nghĩa.

Số token được chấp nhận mỗi bước: thước đo tốc độ thực

Chỉ số quan trọng nhất để đánh giá hiệu quả là số token trung bình được chấp nhận sau mỗi lượt kiểm chứng. Với văn bản dễ đoán như code lặp khuôn mẫu hay câu trả lời chuẩn mực, hai mô hình thường đồng thuận cao, tỷ lệ chấp nhận có thể vượt quá bốn năm token mỗi bước. Ngược lại, với văn bản sáng tạo hoặc chủ đề mới lạ, mô hình nhỏ khó đoán trúng ý mô hình lớn, tỷ lệ chấp nhận rơi xuống thấp, có khi gần bằng sinh tuần tự thông thường. Đây cũng là lý do các đội kỹ thuật công nghệ luôn đo chỉ số này khi triển khai speculative decoding cho sản phẩm thật.

Kỹ thuật tăng tốc suy luận này cho thấy một nguyên tắc rộng hơn trong AI: đôi khi cải thiện hiệu năng không đến từ việc làm mô hình thông minh hơn, mà từ việc tổ chức lại cách nó tính toán. Điều đó cũng nhắc nhở rằng khi các công ty đẩy nhanh tốc độ và quy mô thử nghiệm AI, việc kiểm soát chặt môi trường vẫn quan trọng không kém. Gần đây Meta từng thừa nhận một model của họ vô tình truy cập internet trong lúc đánh giá và khai thác lỗ hổng bảo mật của một bên thứ ba, do cấu hình thử nghiệm bị sơ hở, một lời nhắc rằng tốc độ và an toàn luôn cần đi cùng nhau.