2080 Ti có thể chạy được các mô hình lớn 70 tỷ, và framework mới có thể tăng tốc độ suy luận LLM lên 11 lần.

Công việc trước đây yêu cầu một A100 80G trị giá 160.000 nhân dân tệ giờ chỉ cần một 4090 24G trị giá dưới 20.000 nhân dân tệ!

PowerInfer, một framework suy luận mã nguồn mở do IPADS Laboratory thuộc Đại học Jiao Tong Thượng Hải phát hành, tăng tốc suy luận mô hình lớn lên 11 lần.

Và mà không cần lượng tử hóa, chỉ cần sử dụng độ chính xác FP16 để chạy mô hình 40 tỷ trên máy tính cá nhân; nếu thêm lượng tử hóa, 2080 Ti cũng có thể chạy mô hình 70 tỷ một cách mượt mà.

Kết hợp các đặc điểm độc đáo của các mô hình lớn và thông qua tính toán kết hợp giữa CPU và GPU, PowerInfer có thể đạt được suy luận nhanh trên máy tính cá nhân có bộ nhớ video hạn chế.

So với llama.cpp, PowerInfer đạt được tăng tốc lên đến 11 lần, cho phép mô hình 40 tỷ xuất ra mười mã thông báo mỗi giây trên máy tính cá nhân.

ChatGPT, mà chúng ta quen thuộc nhất, đôi khi gặp sự cố do lưu lượng quá tải. Trong khi đó, cũng có vấn đề về bảo mật dữ liệu.

Mô hình mã nguồn mở có thể giải quyết tốt hai vấn đề này, nhưng mà không có một card đồ họa hiệu năng cao, tốc độ chạy thường rất ấn tượng:

Sự xuất hiện của PowerInfer chính giải quyết điểm đau này.

PowerInfer đã nhận được phản hồi nhiệt tình ngay khi được phát hành, và nhận được hơn 500 sao trong vòng chưa đầy 24 giờ, trong đó có một sao từ Gerganov, tác giả của llama.cpp.

Hiện nay, mã nguồn và bài báo của PowerInfer đã được công khai. Hãy xem sức mạnh tăng tốc của nó như thế nào.

Tốc độ suy luận lên đến 11 lần

Trên một nền tảng phần cứng tiêu dùng được trang bị CPU x86 và GPU NVIDIA, PowerInfer đã được đánh giá so sánh với một loạt các mô hình LLM với kích thước tham số từ 7 tỷ đến 175 tỷ. Tốc độ suy luận từ đầu đến cuối của PowerInfer đã được kiểm tra và so sánh với hiệu suất tốt nhất trên cùng một nền tảng. Framework suy luận llama.cpp đã được so sánh.

Đối với các mô hình độ chính xác FP16, PowerInfer đã đạt được tăng tốc trung bình 7,23 lần trên một máy tính cá nhân cao cấp (PC-High) được trang bị Intel Core i9 thế hệ thứ 13 và một chiếc RTX 4090 duy nhất, trong đó tốc độ tăng lên đến 11,69 lần trên Falcon 40B.

Trên tất cả các trường hợp kiểm tra, PowerInfer đạt được trung bình 8,32 mã thông báo/giây, với tối đa lần lượt là 16,06 mã thông báo/giây và 12,94 mã thông báo/giây trên OPT 30B và Falcon 40B.

Với PowerInfer, các nền tảng tiêu dùng hiện nay có thể chạy mượt mà các mô hình LLM cấp 30-40 tỷ và chạy mô hình LLM cấp 70 tỷ với tốc độ chấp nhận được.

△ Biểu đồ kiểm tra tốc độ tạo mã thông báo trung bình của PowerInfer dưới độ dài đầu ra khác nhau trong các mô hình khác nhau. Trục tung là tỷ lệ tăng tốc. Số được đánh dấu trên mỗi biểu đồ cột đại diện cho số mã thông báo có thể tạo ra mỗi giây.

Lượng tử hóa mô hình là một công nghệ rất phổ biến cho suy luận LLM phía cuối, và PowerInfer cũng hỗ trợ suy luận các mô hình lượng tử hóa INT4.

PowerInfer đã kiểm tra tốc độ suy luận của một loạt các mô hình lượng tử hóa INT4 trên các máy tính cá nhân cao cấp (PC-High) và trung-thấp (PC-Low) được trang bị một chiếc RTX 2080Ti duy nhất.

Trên PC-High, PowerInfer có thể chạy các mô hình có quy mô 40-70 tỷ với tốc độ cao, đạt tốc độ suy luận tối đa là 29,09 mã thông báo/giây, và đạt được tăng tốc trung bình 2,89 lần và tối đa 4,28 lần.

Đồng thời, cũng có thể chạy các mô hình có kích thước OPT-175 tỷ trên phần cứng tiêu dùng.

Trên các máy tính cá nhân trung-thấp như PC-Low, PowerInfer có thể chạy mượt mà các mô hình có kích thước 30-70 tỷ và đạt được tăng tốc trung bình 5,01 lần và tối đa 8,00 lần. Điều này chủ yếu do phần lớn các neuron nóng trong mô hình sau khi lượng tử hóa INT4 được đặt trong bộ nhớ video.

△ Tốc độ suy luận của PowerInfer trong mô hình lượng tử hóa INT4. Trục tung là tỷ lệ tăng tốc. Số được đánh dấu trên mỗi biểu đồ cột đại diện cho số mã thông báo có thể tạo ra mỗi giây.

Cuối cùng, PowerInfer đã so sánh tốc độ suy luận từ đầu đến cuối khi chạy PowerInfer trên PC-High so với thẻ tính toán đám mây hàng đầu A100 chạy framework SOTA vLLM. Các mô hình kiểm tra là OPT-30B và Falcon-40B (ReLU) với độ chính xác FP16.

Khi độ dài đầu vào là 64, khoảng cách tốc độ giữa PowerInfer và A100 được giảm từ 93%-94% xuống còn 28%-29%; trong kịch bản tạo mã thuần túy với độ dài đầu vào là 1, khoảng cách này được giảm xuống còn chỉ 18%.

Điều này có nghĩa là PowerInfer sử dụng kích hoạt thưa thớt và suy luận kết hợp CPU/GPU để thu hẹp khoảng cách tốc độ suy luận giữa các card đồ họa tiêu dùng và các card tính toán máy chủ hàng đầu.

△ So sánh hiệu suất của PowerInfer trên 4090 và vLLM trên A100

Vậy, PowerInfer làm thế nào để đạt được suy luận tốc độ cao trên phần cứng tiêu dùng?

Tận dụng tối đa các đặc điểm của mô hình và phần cứng.

Bí mật của PowerInfer để đạt được khả năng suy luận tốc độ cao là tận dụng đầy đủ tính cục bộ cao của kích hoạt thưa thớt trong các mô hình dày đặc và kết hợp hoàn toàn với đặc điểm tính toán của CPU và GPU.

“Kích hoạt thưa thớt” là gì?

Gần đây, mô hình lớn Mixtral MoE đã làm nổ tung cả vòng AI và các mô hình thưa thớt đã trở lại tầm nhìn của mọi người.

Một sự thật thú vị là LLM, được coi là một mô hình dày đặc như OPT và LLaMA(ReLU), cũng có đặc điểm kích hoạt thưa thớt.

Kích hoạt thưa thớt của mô hình dày đặc là gì?

Tương tự như một mã thông tin đầu vào trong mô hình MoE, chỉ cần kích hoạt một hoặc hai mô-đun chuyên gia trong lớp FFN, lấy lớp FFN dày đặc của mô hình OPT làm ví dụ, chỉ có một phần nhỏ (thí nghiệm cho thấy khoảng 10%) các nơ-ron cần được kích hoạt để đảm bảo đầu ra chính xác.

Mặc dù các nơ-ron khác tham gia tính toán, chúng không đóng góp đáng kể cho đầu ra.

Nói cách khác, mỗi nơ-ron trong mô hình dày đặc đều là một chuyên gia!

△ Hình ảnh bên trái được lấy từ bài báo của Alexander Clark (số aRXiv: 2101.03961)

Mô hình MoE có thể phân phối đầu vào cho một hoặc hai chuyên gia thông qua mô-đun định tuyến trước lớp FFN chuyên gia để tính toán. Vậy làm thế nào để định tuyến các kích hoạt thưa thớt trong mô hình dày đặc hoặc biết những nơ-ron chuyên gia nào sẽ đóng góp vào kết quả trước khi tính toán. Vải len?

Câu trả lời là thêm một mô-đun dự đoán định tuyến vào mô hình dày đặc.

Trước khi mô hình bắt đầu phục vụ, PowerInfer sẽ tiến hành phân tích ngoại tuyến của mô hình, thu được sự tương ứng giữa đầu vào của mỗi lớp và các nơ-ron được kích hoạt bằng cách suy luận mô hình trên một tập dữ liệu chung, sau đó huấn luyện một mô hình nhỏ cho mỗi lớp của mô hình dày đặc. Mô-đun dự đoán định tuyến dự đoán các nơ-ron sẽ được kích hoạt cho mỗi đầu vào và chỉ đếm các nơ-ron được kích hoạt bởi đường dẫn (chuyên gia).

Trong các thử nghiệm trên nhiều nhiệm vụ phụ, mô-đun định tuyến của PowerInfer gần như không gây mất mát độ chính xác bổ sung.

Tính cục bộ của suy luận do kích hoạt thưa thớt mang lại

Một sự thật thú vị khác về kích hoạt thưa thớt là mặc dù có sự khác biệt trong phân phối của các nơ-ron được kích hoạt cho các mã thông tin đầu vào khác nhau; nếu suy luận được thực hiện trên đủ dữ liệu và phân phối của mỗi kích hoạt được chồng lên nhau, PowerInfer phát hiện rằng một số ít nơ-ron có xác suất cao hơn để được kích hoạt tổng thể.

Nói cách khác, theo một cách thống kê, việc kích hoạt các nơ-ron trong mô hình lớn tuân theo phân phối Power Law (phân phối Power Law là một quy luật thống kê cho thấy một số ít sự kiện xảy ra nhiều hơn rất nhiều so với một số lượng lớn các sự kiện khác).

Như được hiển thị trong Hình (a) dưới đây, đối với một lớp mạng FFN cụ thể trong các mô hình OPT-30B và LLaMA(ReGLU)-70B, thống kê cho thấy 26% và 43% các nơ-ron đóng góp 80% kích hoạt tương ứng.

Ở quy mô của toàn bộ mô hình, như được hiển thị trong (b) dưới đây, 17% và 26% số nơ-ron đóng góp 80% kích hoạt.

Do đó, khi chỉ xem xét các hoạt động đóng góp vào kích hoạt cuối cùng, LLM gặp vấn đề về tính cục bộ của suy luận: việc truy cập vào trọng số có xu hướng tập trung ở một khu vực cụ thể thay vì được phân bố đều trên tất cả các nơ-ron.

Trong các hoạt động lập luận, nó xuất hiện dưới dạng tính cục bộ của chương trình: việc truy cập vào không gian bộ nhớ có xu hướng tập trung ở một khu vực cụ thể, thay vì được phân bố đều trong không gian bộ nhớ.

Trong các máy tính cá nhân thông thường, GPU có bộ nhớ video ít hơn và sức mạnh tính toán mạnh hơn, và phù hợp để xử lý các nhiệm vụ được truy cập thường xuyên và tính toán mạnh; trong khi CPU có dung lượng bộ nhớ lớn hơn nhưng sức mạnh tính toán tương đối yếu, và phù hợp để xử lý một lượng dữ liệu nhỏ. Truy cập và các nhiệm vụ ít tính toán mạnh.

Do đó, lý tưởng nhất là một số ít nơ-ron được truy cập thường xuyên nên được lưu trữ trong bộ nhớ video, trong khi các nơ-ron lớn hơn, ít được truy cập hơn thì phù hợp hơn để được lưu trữ trong bộ nhớ và tính toán bởi CPU.

Điều này đã truyền cảm hứng cho PowerInfer để thiết kế một hệ thống suy luận kết hợp CPU/GPU dựa trên các đặc điểm cục bộ.

Thiết kế suy luận kết hợp CPU/GPU

Dựa trên Định luật Power Law của các nơ-ron đã được đề cập ở trên và tính cục bộ kết quả, PowerInfer phân tích tĩnh sự nóng và lạnh của mỗi nơ-ron trước, tải một số ít nơ-ron nóng vào bộ nhớ GPU và tải các nơ-ron lạnh còn lại vào CPU. trong bộ nhớ.

Việc tải hỗn hợp các mô hình với độ tinh mịch của nơ-ron sẽ làm cho một số nơ-ron trong một lớp nằm trên GPU và một số nằm trên CPU.

Vì vậy, PowerInfer đã thiết kế một công cụ suy luận kết hợp CPU/GPU tinh mịch.

Ví dụ, trong hình dưới đây, đối với đầu vào của một lớp cụ thể, PowerInfer sẽ trước tiên dự đoán rằng đầu vào sẽ kích hoạt các nơ-ron 3, 4 và 5.

Sau đó, CPU và GPU sẽ thực hiện tính toán trên các nơ-ron nằm trong bộ nhớ của họ dựa trên thông tin dự đoán.

Cụ thể, ví dụ trong hình dưới đây, nơ-ron thứ tư sẽ được tính toán trên CPU, nơ-ron thứ ba và năm sẽ được tính toán trên GPU, sau đó kết quả tính toán của cả hai bên sẽ được hợp nhất trên GPU.

△ Phương pháp tính toán hỗn hợp PowerInfer

Kiến trúc tổng thể của PowerInfer

Nhìn chung, PowerInfer đã phát triển một công cụ suy luận kết hợp CPU/GPU sáng tạo sử dụng kích hoạt thưa thớt dựa trên các mô hình dày đặc và các tính chất cục bộ mà nó mang lại.

Khi kết nối với một mô hình ngôn ngữ lớn (LLM), PowerInfer trước tiên huấn luyện mô-đun dự đoán định tuyến của mô hình trong giai đoạn ngoại tuyến và tiến hành phân tích sâu về các đặc điểm kích hoạt của mô hình.

Đồng thời, chiến lược đặt nơ-ron tối ưu được tính toán dựa trên thông tin quan trọng như băng thông và khả năng của phần cứng mục tiêu.

Trên cơ sở này, PowerInfer sẽ phân phối tối ưu các nơ-ron trong bộ nhớ hoặc bộ nhớ video dựa trên kết quả tính toán này.

Trong giai đoạn suy luận trực tuyến, CPU và GPU xử lý riêng biệt các nơ-ron được lưu trữ trong bộ nhớ của chúng, sau đó kết quả của các tính toán độc lập này được kết hợp một cách hiệu quả trên GPU.

△ Sơ đồ kiến trúc tổng quan của PowerInfer

Tóm tắt và Triển vọng

Đối với người dùng cuối, khung suy luận hiệu quả của PowerInfer mở ra những khả năng mới.

Đầu tiên, nó cho phép người dùng máy tính cá nhân chạy các mô hình ngôn ngữ quy mô lớn tiên tiến mà không cần phần cứng chuyên dụng đắt tiền.

Điều này không chỉ thúc đẩy sự phổ biến của các ứng dụng trí tuệ nhân tạo, mà còn mang đến cơ hội chưa từng có cho những người đam mê, nhà nghiên cứu và doanh nghiệp nhỏ.

PowerInfer cũng có tiềm năng lớn khi triển khai trên đám mây.

Các CPU đám mây hiện có cũng được hỗ trợ bởi các đơn vị tính toán AMX mạnh mẽ. Bằng cách tận dụng các đặc điểm không đồng nhất giữa CPU và GPU, chúng ta có thể lạc quan rằng PowerInfer có thể sử dụng ít thẻ tính toán cao cấp hơn để đạt được khả năng xử lý dịch vụ cao hơn.

Địa chỉ bài báo:

https://ipads.se.sjtu.edu.cn/_media/publications/powerinfer-20231219.pdf

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

You cannot copy content of this page