CPU cứu cánh: LLM dành cho mọi người

Tối ưu hóa các mô hình ngôn ngữ lớn

Năm qua đã cho thấy những tiến bộ đáng kể trong các mô hình ngôn ngữ lớn (LLM) và những gì chúng có thể đạt được. Khởi đầu là công cụ tạo văn bản, giờ đây chúng đã phát triển thành các mô hình đa phương thức có thể dịch ngôn ngữ, duy trì hội thoại, tạo nhạc và hình ảnh, cùng nhiều chức năng khác. Tuy nhiên, việc đào tạo và vận hành các máy chủ suy luận của những mô hình tham số khổng lồ với hàng tỷ tham số này đòi hỏi nguồn lực tính toán khổng lồ và rất nhiều GPU cao cấp.

Sự gia tăng phổ biến của LLM đã thúc đẩy sự quan tâm mạnh mẽ đến việc chuyển các khuôn khổ này sang các CPU phổ thông. Các dự án nguồn mở như llama.cpp và Intel® Extension for Transformers nhằm mục đích tinh chỉnh và tối ưu hóa các mô hình để thực thi hiệu quả trên các kiến ​​trúc CPU. Những nỗ lực này bao gồm việc triển khai C/C++ thuần túy, tối ưu hóa phần cứng cụ thể cho các tập lệnh AVX, AVX2 và AVX512, và biểu diễn mô hình độ chính xác hỗn hợp. Các kỹ thuật lượng tử hóa và nén được khai thác để thu nhỏ các mô hình từ 16 bit xuống còn 8 bit hoặc thậm chí 2 bit. Mục tiêu là thu được các mô hình nhỏ gọn hơn, tinh gọn hơn, được thiết kế riêng cho việc suy luận trên các CPU phổ biến rộng rãi, từ trung tâm dữ liệu đến máy tính xách tay của bạn.

Mặc dù GPU vẫn có thể được ưu tiên cho việc đào tạo, CPU trong các trung tâm dữ liệu và trên các thiết bị có thể được sử dụng để triển khai hiệu quả cho suy luậnVới các mô hình được tối ưu hóa này. CPU có thể tận dụng những tiến bộ gần đây trong kiến ​​trúc và cung cấp khả năng truy cập rộng hơn vào các khả năng của mô hình ngôn ngữ lớn. Những tiến bộ trong năm qua về tối ưu hóa mô hình và suy luận CPUthể hiện sự hứa hẹn trong việc mang công nghệ ngôn ngữ tự nhiên được hỗ trợ bởi các mô hình lớn đến với nhiều người dùng hơn.

Phần cứng

Để đánh giá các công cụ suy luận CPU mới này, chúng tôi đã tận dụng phần mềm cung cấp cụm Dell Omnia để triển khai Rocky Linux trên máy chủ Dell PowerEdge C6620. Omnia cho phép triển khai nhanh chóng nhiều lựa chọn hệ điều hành trên một cụm máy chủ PowerEdge sử dụng bộ xử lý Intel® Xeon®. Bằng cách sử dụng Omnia để tự động cài đặt và cấu hình hệ điều hành, chúng tôi có thể nhanh chóng thiết lập một cụm thử nghiệm để thử nghiệm khả năng suy luận của các mô hình được tối ưu hóa cho CPU trên phần cứng Intel® của mình.

Bảng 1. Thông số kỹ thuật của Dell PowerEdge C6620

Phần cứng Chi tiết
Máy chủ Dell PowerEdge C6620
Mô hình bộ xử lý Intel ® Xeon ® Gold 6414U (Sapphire Rapids)
Bộ xử lý trên mỗi nút 2
Số lượng lõi bộ xử lý 32
Tần số bộ xử lý  2GHz
Bộ nhớ máy chủ 256 GB, 8 x 32 GB 

Bảng 2. Thông số kỹ thuật phần mềm liên quan

Phần mềm Chi tiết
Omnia https://github.com/dell/omnia
Rocky Linux 8.8 https://rockylinux.org/
Tiện ích mở rộng Intel® dành cho máy biến áp https://github.com/intel/intel-extension-for-transformers
Tốc độ thần kinh Intel® https://github.com/intel/neural-speed

Llama 2 với Intel® Neural Speed

Intel® đã mã nguồn mở một số công cụ theo giấy phép cho phép trên GitHub để hỗ trợ phát triển với Intel® Extensions for Transformers. Một trong những tính năng quan trọng là Neural Speed, nhằm mục đích cho phép suy luận hiệu quả.của các mô hình ngôn ngữ lớn trên phần cứng Intel®. Neural Speed ​​tận dụng Intel® Neural Compressor, một bộ công cụ tối ưu hóa mô hình học sâu, để áp dụng các kỹ thuật lượng tử hóa bit thấp và độ thưa thớt, giúp nén và tăng tốc hiệu suất của các LLM hàng đầu. Điều này cho phép Neural Speed ​​cung cấp khả năng suy luận hiệu quả tiên tiến cho các mô hình ngôn ngữ chính. Neural Speed ​​cung cấp một ngăn xếp suy luận có thể tối đa hóa hiệu suất của các mô hình ngôn ngữ dựa trên Transformer mới nhất trên các nền tảng Intel®, từ biên đến đám mây. Bằng cách cung cấp mã nguồn mở các công nghệ này với giấy phép cho phép, Intel® cho phép các nhà phát triển dễ dàng áp dụng và đổi mới với khả năng suy luận LLM được tối ưu hóa trên phần cứng Intel®.

Để bắt đầu, hãy sao chép kho lưu trữ Intel® Neural Speed ​​và cài đặt các gói:

git clone https://github.com/intel/neural-speed.git
pip cài đặt -r requirements.txt
cài đặt pip.

Neural Speed ​​có thể hỗ trợ 3 loại mô hình khác nhau:  

  • Các mô hình GGUF được tạo bởi llama.cpp
  • Các người mẫu GGUF từ HuggingFace
  • Các mô hình Pytorch từ HuggingFace – được lượng tử hóa bởi Neural Speed

Chúng tôi bắt đầu các thí nghiệm của mình bằng cách làm việc trực tiếp với mô hình trò chuyện Llama-2-7B của Meta trong Pytorch từ Hugging Face. Mô hình đàm thoại 7 tỷ tham số này đóng vai trò là một trường hợp thử nghiệm lý tưởng để đánh giá việc chuyển đổi, lượng tử hóa và suy luận mô hình từ đầu đến cuối.sử dụng bộ công cụ Neural Speed. Để đơn giản hóa việc kiểm thử, Neural Speed ​​cung cấp các tập lệnh tiện dụng để xử lý toàn bộ quy trình, bắt đầu bằng việc lấy mô hình Pytorch gốc và chuyển nó sang mô hình GGUF, sau đó áp dụng các chính sách lượng tử hóa để nén mô hình xuống các độ chính xác thấp hơn như int8 hoặc int4, và cuối cùng là chạy suy luận để đánh giá hiệu suất. Trong trường hợp này, chúng tôi không nén mô hình và giữ nguyên các giá trị 32 bit.

Lệnh sau sẽ chạy chuyển đổi, lượng tử hóa và suy luận chỉ bằng một cú nhấp chuột:

tập lệnh python/run.py \
/home/models/ Llama-2-7b-chat-hf \
--weight_dtype f32 \
-p "luôn trả lời bằng thơ Haiku. Điều tuyệt vời nhất khi đi thuyền là gì?
Niềm vui lớn nhất của chèo thuyền,
Tự do trên đại dương xanh,
Đã tìm thấy sự thanh thản.

Phần kết luận

Trong quá trình thử nghiệm, mô hình Llama-2 được chuyển đổi và lượng tử hóa không chỉ cung cấp phản hồi chính xác mà còn có độ trễ phản hồi tuyệt vời, điều mà chúng tôi sẽ tìm hiểu sâu hơn trong các bài viết sau. Mặc dù chúng tôi đã trình diễn quy trình làm việc này trên AI đàm thoại Llama-2 với 7 tỷ tham số của Meta, nhưng quy trình tương tự cũng có thể được áp dụng để chuyển đổi và tối ưu hóa nhiều mô hình ngôn ngữ lớn hàng đầu khác để chạy hiệu quả trên CPU. Các ứng viên phù hợp khác bao gồm các LLM tập trung vào trò chuyện như NeuralChat, GPT-J, GPT-NEOX, Dolly-v2 và MPT, cũng như các mô hình đa năng như Falcon, BLOOM, Mistral, OPT và DistilGPT2 của Hugging Face. Các mô hình tập trung vào mã như CodeLlama, MagicCoder và StarCoder cũng có thể được hưởng lợi. Ngoài ra, các mô hình Trung Quốc bao gồm Baichuan, Baichuan2 và Qwen là những mục tiêu chính để triển khai cải tiến trên CPU Intel®.

Ưu điểm chính của phương pháp suy luận CPU này là khai thác tất cả các lõi CPU khả dụng cho suy luận song song tiết kiệm chi phí. Bằng cách chuyển đổi và lượng tử hóa các mô hình để chạy trên CPU Intel®, chúng ta có thể tận dụng tối đa các máy tính phổ biến sử dụng chip Intel®, từ máy tính xách tay đến máy chủ. Đối với các nền tảng thiếu GPU cao cấp, việc tối ưu hóa các mô hình để tận dụng tài nguyên CPU hiện có là một cách hiệu quả để mang lại trải nghiệm AI nhạy bén.