Mục lục
- Giới thiệu về tốc độ suy luận AI
- Giải mã dự đoán: Một "mã gian lận" cho hiệu năng
- Thực hành giải mã dự đoán với Llama.cpp
- Tại sao cần giải mã dự đoán?
- Thử nghiệm và kết quả
- Kết luận
1. Giới thiệu về tốc độ suy luận AI
Trong lĩnh vực suy luận AI, tốc độ tạo ra phản hồi càng nhanh càng tốt. Gần đây, nhiều công ty khởi nghiệp về chip đã công bố những con số hiệu năng đáng kinh ngạc. Cerebras tuyên bố đạt mốc suy luận 969 token/giây với mô hình khổng lồ 405 tỷ tham số của Meta (539 token/giây ở cửa sổ ngữ cảnh đầy đủ 128K). Với mô hình Llama 3.1 70B nhỏ hơn, Cerebras đạt hiệu năng thậm chí còn cao hơn, vượt quá 2.100 token/giây. Không kém cạnh, công ty khởi nghiệp chip AI Groq đạt 1.665 token/giây.
Những con số này vượt xa mọi thứ có thể đạt được chỉ với GPU. Bảng xếp hạng API Llama 3.1 70B của Artificial Analysis cho thấy ngay cả các sản phẩm dựa trên GPU nhanh nhất cũng chỉ đạt tối đa khoảng 120 token/giây, trong khi các nhà cung cấp IaaS thông thường chỉ đạt khoảng 30 token/giây.
Một phần nguyên nhân là do chip của Cerebras và Groq không phải là GPU. Chúng là các bộ tăng tốc AI được chế tạo đặc biệt, tận dụng các ngân hàng SRAM lớn để khắc phục các tắc nghẽn băng thông thường gặp trong suy luận. Tuy nhiên, điều này không giải thích được sự tăng vọt hiệu năng lớn đến vậy. Trước đây, Cerebras và Groq đã cho thấy hiệu năng Llama 3.1 70B khoảng 450 và 250 token/giây.
Sự đột phá về hiệu năng này là nhờ một kỹ thuật gọi là giải mã dự đoán.
2. Giải mã dự đoán: Một "mã gian lận" cho hiệu năng
Giải mã dự đoán là một kỹ thuật khá đơn giản. Nó sử dụng một mô hình dự thảo nhỏ hơn (ví dụ: Llama 3.1 8B) để tạo đầu ra ban đầu, trong khi một mô hình lớn hơn (như Llama 3.1 70B hoặc 405B) đóng vai trò kiểm tra thực tế để đảm bảo độ chính xác.
Khi thành công, nghiên cứu cho thấy kỹ thuật này có thể tăng tốc độ tạo token từ 2x đến 3x, trong khi các ứng dụng thực tế đã cho thấy sự cải thiện lên tới 6x.
Có thể hình dung mô hình dự thảo như một trợ lý cá nhân chuyên đánh máy nhanh. Họ có thể trả lời email nhanh hơn nhiều, và miễn là dự đoán của họ chính xác, tất cả những gì bạn (trong ví dụ này là mô hình lớn) cần làm là nhấn gửi. Nếu họ không làm đúng, bạn có thể can thiệp và sửa chữa.
Kết quả của việc sử dụng giải mã dự đoán là, ít nhất là trung bình, thông lượng cao hơn vì mô hình dự thảo yêu cầu ít tài nguyên hơn - cả về TOPS hoặc FLOPS và băng thông bộ nhớ. Hơn nữa, vì mô hình lớn vẫn đang kiểm tra kết quả, nên các nhà đánh giá chuẩn tại Artificial Analysis khẳng định về cơ bản không có sự mất mát về độ chính xác so với việc chỉ chạy mô hình đầy đủ.
3. Thực hành giải mã dự đoán với Llama.cpp
Bài viết hướng dẫn sử dụng Llama.cpp để thực hành giải mã dự đoán. Việc cài đặt và cấu hình Llama.cpp tương đối đơn giản, có sẵn các gói đã được biên dịch sẵn cho macOS, Windows và Linux. Tuy nhiên, để đạt hiệu năng tốt nhất với phần cứng cụ thể, nên biên dịch thủ công phiên bản mới nhất.
Sau khi cài đặt Llama.cpp, bạn có thể khởi chạy một máy chủ mới bằng cách sử dụng giải mã dự đoán. Ví dụ, lệnh sau sử dụng hai mô hình GGUF 8-bit đã được lượng tử hóa từ Hugging Face: Llama 3.2 1B làm mô hình dự thảo và Llama 3.1 8B làm mô hình chính.
./llama-speculative -m Meta-Llama-3.1-8B-Instruct-Q8_0.gguf -md Llama-3.2-1B-Instruct-Q8_0.gguf -c 4096 -cd 4096 -ngl 99 -ngld 99 --draft-max 16 --draft-min 4 -n 128 -p "Who was the first prime minister of Britain?"
(Người dùng Windows cần thay thế ./llama-speculative
bằng llama-speculative.exe
. Nếu không sử dụng tăng tốc GPU, hãy xóa -ngl 99
và -ngld 99
.)
Kết quả sẽ hiển thị tốc độ tạo và số lượng token do mô hình nhỏ tạo ra so với số lượng token được mô hình lớn chấp nhận. Tỷ lệ chấp nhận càng cao thì tốc độ tạo càng cao.
Bạn cũng có thể khởi chạy một máy chủ API tương thích với OpenAI:
./llama-server -m Meta-Llama-3.1-8B-Instruct-Q8_0.gguf -md Llama-3.2-1B-Instruct-Q8_0.gguf -c 4096 -cd 4096 -ngl 99 -ngld 99 --draft-max 8 --draft-min 4 --draft-p-min 0.9 --host 0.0.0.0 --port 8087
4. Tại sao cần giải mã dự đoán?
Giải mã dự đoán không phải là mới. Tuy nhiên, với các mô hình nguyên khối ngày càng lớn hơn, giải mã dự đoán cung cấp một phương tiện để chạy các mô hình lớn như Llama 3.1 405B hiệu quả hơn mà không ảnh hưởng đến độ chính xác.
Mô hình nền tảng 405B của Meta vẫn rất khó chạy ở thông lượng cao. Ở độ phân giải đầy đủ, để đạt tốc độ tạo 25 token/giây cần hơn 810GB vRAM và hơn 20 TB/giây băng thông bộ nhớ.
Sử dụng giải mã dự đoán với một mô hình như Llama 3.1 70B làm mô hình dự thảo, về lý thuyết có thể đạt tốc độ tạo vượt quá 100 token/giây, nhưng khi xảy ra dự đoán sai, thông lượng sẽ giảm mạnh. Đây là một trong những thách thức của giải mã dự đoán: Nó rất hiệu quả trong việc tăng cường thông lượng, nhưng độ trễ có thể không đều.
5. Thử nghiệm và kết quả
Trong thử nghiệm với Llama 3.1 8B, hiệu năng tăng đáng kể từ khoảng 90-100 token/giây lên 182 token/giây khi bật giải mã dự đoán, mặc dù tỷ lệ chấp nhận chỉ đạt 60%. Cerebras đã chứng minh hiệu năng vượt trội với giải mã dự đoán, đạt 1.665-2.100 token/giây cho mô hình 70B và lên đến 969 token/giây cho mô hình 405B.
6. Kết luận
Giải mã dự đoán là một kỹ thuật hiệu quả để tăng tốc độ suy luận AI, đặc biệt quan trọng đối với các ứng dụng đòi hỏi thông lượng cao như CoT (Chain of Thought) và AI tác động. Mặc dù độ trễ có thể không đều, nhưng ở tốc độ hàng trăm hoặc hàng nghìn token/giây, sự gián đoạn có thể không đáng kể.
Ghi chú của biên tập viên: Bài viết này được hỗ trợ bởi card đồ họa RTX 6000 Ada Generation từ Nvidia, GPU Arc A770 từ Intel và Radeon Pro W7900 DS từ AMD. Không nhà cung cấp nào can thiệp vào nội dung bài viết.
0 comments Blogger 0 Facebook
Đăng nhận xét