8 3090, 1 ngày nén nghìn tỷ tham số mô hình lớn! 3.2TB giảm mạnh xuống còn 160GB, với tỷ lệ nén lên đến 20 lần

Nguồn bài viết: New Zhiyuan

Gần đây, các nhà nghiên cứu từ ISTA đã đề xuất một phương pháp lượng tử hóa mô hình mới, QMoE, có thể nén tham số 1,6 nghìn tỷ SwitchTransformer xuống dưới 160GB (0,8 bit trên mỗi tham số) mà ít mất độ chính xác.

Nguồn hình ảnh: Được tạo bởi Unbounded AI

Với kiến trúc của GPT-4 được "mã nguồn mở" bởi các nhà lãnh đạo ngành công nghiệp nổi tiếng, Kiến trúc chuyên gia lai (MoE) một lần nữa trở thành trọng tâm nghiên cứu.

GPT-4 có 16 mô hình chuyên gia với tổng số 1,8 nghìn tỷ thông số. Mỗi lần tạo token yêu cầu khoảng 280 tỷ thông số và 560 TFLOP

Tuy nhiên, chi phí của một mô hình nhanh hơn và chính xác hơn là số lượng thông số khổng lồ và chi phí cao đi kèm với nó.

Ví dụ, mô hình SwitchTransformer-c2048 tham số 1,6 nghìn tỷ yêu cầu 3,2 TB bộ nhớ GPU để chạy hiệu quả.

Để giải quyết vấn đề này, các nhà nghiên cứu từ Viện Công nghệ Áo (ISTA) đã đề xuất một khung nén và thực thi hoàn toàn mới - QMoE.

Địa chỉ:

Bằng cách sử dụng lõi giải mã GPU được thiết kế đặc biệt, QMoE có khả năng suy luận nén đầu cuối hiệu quả - có thể đạt được độ nén lên đến 20x chỉ với một chút mất độ chính xác.

Cụ thể, QMoE có thể nén model SwitchTransformer-c2048 tham số 1,6 nghìn tỷ xuống dưới 160GB trong một máy chủ GPU trong một ngày, tương đương với chỉ 0,8 bit trên mỗi tham số.

Điều này cho phép bạn chạy trên 4 GPU NVIDIA RTX A6000 hoặc 8 NVIDIA RTX 3090 với chi phí suy luận dưới 5% cho một kiểu máy không nén.

** Lượng tử hóa mô hình MoE**

Ý tưởng cốt lõi của Mô hình lai (MoE) là tăng số lượng tham số mô hình để cải thiện khả năng mô hình hóa của mạng, trong khi vẫn giữ chi phí tính toán gần như giống nhau so với kiến trúc chuyển tiếp tiêu chuẩn.

Vì chỉ một phần nhỏ của mạng cần được gọi để xử lý từng mã thông báo đầu vào, thiết kế này có thể tận dụng 100 hoặc thậm chí 1.000 "chuyên gia" để xây dựng các mô hình siêu quy mô để đào tạo và suy luận hiệu quả.

Nó đã được chứng minh rằng MoE có thể cải thiện đáng kể độ chính xác và tốc độ đào tạo khi tốc độ suy luận là tương đương. Nhưng khối lượng lớn như vậy có nghĩa là cần rất nhiều bộ nhớ video để làm cho mô hình chạy.

Một thách thức lớn trong việc nén MoE là cần phải duy trì một bộ kích hoạt lớn.

Về vấn đề này, dữ liệu trung gian cần được tính toán có thể được kiểm soát trong một phần nhỏ bằng cách sắp xếp cẩn thận việc thực thi mô hình. Điều này giảm tải bộ nhớ chính từ GPU sang bộ nhớ CPU rẻ hơn, đắt tiền hơn.

Cụ thể, duy trì bộ đệm B lớn và cập nhật phần dày đặc của khối Biến áp như sau:

  1. Từ CPU đến GPU, lấy một "mẫu" X chứa hàng trăm mã thông báo;

  2. Thông qua lớp dày đặc tương ứng, thu được kết quả Y;

  3. Tính toán và lưu trữ phân bổ token của chuyên gia trong Y;

  4. Gửi Y trở lại CPU và ghi đè X vào B.

Đối với các phần thưa thớt:

  1. Từ CPU đến GPU, lấy tất cả các mã thông báo trong B đã được gán cho Chuyên gia E, được đại diện bởi X \ _E.

  2. Sử dụng chúng để tạo ra các chuyên gia nén E (ví dụ: sử dụng GPTQ).

  3. Chạy X \ _E qua E 'để lấy Y \ _E '.

  4. Gửi Y \ _E ' trở lại CPU và ghi đè X \ _E vào B.

Như thể hiện trong Hình 2, quá trình này giảm thiểu chi phí tiêu thụ và truyền bộ nhớ: chỉ cần một bản sao của B và mỗi mã thông báo chỉ được đọc và ghi hai lần trong mỗi khối Biến áp.

Hơn nữa, các nhà nghiên cứu đã thiết kế một sơ đồ mã hóa và lõi CUDA để đạt được độ nén dưới 1 bit trên mỗi trọng lượng và giảm thiểu chi phí thực thi GPU để suy luận.

Hiệu ứng nén

Độ chính xác

Đầu tiên, các nhà nghiên cứu đã lượng tử hóa tất cả các mô hình SwitchTransformer với độ chính xác 2 bit và bậc ba, sau đó đánh giá tổn thất xác nhận của chúng.

Đối với 128 chuyên gia, kích thước mẫu hiệu chuẩn mặc định là 10K; Đối với 2048 chuyên gia, kích thước mẫu hiệu chuẩn mặc định là 160K. Đồng thời, các nhà nghiên cứu cũng thử nghiệm kích thước mẫu 0,5x và 2x.

Kết quả cho thấy mô hình 2 chữ số có thể đạt được với tổn thất tối thiểu (1,7% so với C2048) và tăng tổn thất nhỏ dưới độ chính xác bậc ba (6,7% so với C2048) bằng cách sử dụng lượng tử hóa phụ thuộc dữ liệu.

Điều này không chỉ chứng minh tính hiệu quả của phương pháp định lượng tiên tiến được đề xuất mà còn cho thấy nén độ rộng bit cực thấp thực sự phù hợp với MoE quy mô lớn.

Ngoài ra, các nhà nghiên cứu đã đánh giá dữ liệu từ arXiv, GitHub, StackExchange và Wikipedia của RedPajama.

Mặc dù chỉ có <0,01% dữ liệu hiệu chuẩn đến từ các trang web này, mô hình nén vẫn duy trì hiệu suất gần như tương tự như phân phối lõi.

Trong trường hợp dữ liệu hiệu chuẩn, việc tăng kích thước mẫu thường cải thiện hiệu suất một chút và đáng chú ý nhất trong lượng tử hóa bậc ba. Nhưng cũng có một số tiếng ồn trong quá trình này, đặc biệt là ở 2 bit.

### Nén

Trong thử nghiệm, các nhà nghiên cứu đã xem xét cả việc nén mô-đun MoE, cũng như độ nén liên quan đến toàn bộ mô hình và tất cả siêu dữ liệu của nó.

Riêng đối với MoE, nén >16x đạt được ở tất cả các quy mô, tương đương với 1 bit dung lượng lưu trữ < cho mỗi tham số.

Trên c2048, tỷ lệ nén tổng thể là 19,81 lần, tương đương với 0,807 bit trên mỗi tham số, thậm chí bao gồm tất cả các lớp dày đặc không nén, giảm kích thước trạm kiểm soát từ 3142GB xuống 158,6GB.

Ngoài ra, có thể quan sát thấy rằng tỷ lệ nén tăng theo kích thước của mô hình vì hai lý do:

(a) sự thưa thớt tự nhiên tăng lên và các nhà nghiên cứu đã tối ưu hóa từ điển mã hóa cho C2048;

(b) Lớp càng lớn, sự phân bố trọng lượng càng gần với sự độc lập.

### Thời gian chạy

Cuối cùng, các nhà nghiên cứu đã đánh giá thời gian cần thiết để tạo ra một mô hình nén trên một GPU A6000 duy nhất cho các lượng dữ liệu hiệu chuẩn khác nhau.

Kết quả cho thấy các mô hình nhỏ hơn có thể được nén trong vòng chưa đầy một giờ và thậm chí c2048 có thể được hoàn thành trong vòng chưa đầy một ngày, khẳng định hiệu quả cao của QMoE.

Từ large128 đến c2048, việc tăng thời gian chạy về cơ bản tỷ lệ thuận với sự khác biệt về kích thước, mặc dù sau này sử dụng nhiều mẫu hơn 16 lần. Điều này là do kích thước mẫu cho mỗi chuyên gia vẫn giữ nguyên, trong khi kích thước chuyên gia chỉ tăng nhẹ.

### Kết quả chạy

Đầu tiên, so sánh trực tiếp (bị cô lập) của hạt nhân sản phẩm vectơ ma trận nén với nhân bfloat16 cuBLAS (không nén) của tiêu chuẩn PyTorch.

Hình 5 (trái) cho thấy thời gian cần thiết để MoE khám phá các hình dạng ma trận trên hai GPU khác nhau so với các lõi bfloat16.

Mặc dù các nhà nghiên cứu đã sử dụng hiệu suất lưu trữ kém, nhưng vẫn mất ít thời gian hơn để thực thi hạt nhân nén so với đường cơ sở bfloat16 gần lý tưởng. Nhanh hơn tới 35% trong một hình dạng ma trận nhất định.

Độ trễ của các hoạt động này cũng rất thấp, với ma trận nhỏ nhất lấy < 0,02 ms và lớn nhất < 0,05 ms.

Sau đó, các nhà nghiên cứu đã tiến hành một điểm chuẩn từ đầu đến cuối của hạt nhân trong HuggingFace bằng cách sử dụng trọng lượng thực tế của mô hình MoE nén.

Như thể hiện trong Hình 5 (bên phải), việc thực thi từ đầu đến cuối của mô hình nén chỉ chậm hơn <5% so với mô hình tiêu chuẩn (không nén).

Mặc dù thời gian của mỗi lớp nhanh hơn, nhưng tốc độ vẫn giảm nhẹ vì bộ mã hóa đôi khi định tuyến nhiều mã thông báo đến cùng một chuyên gia.

Việc triển khai hiện tại là thực hiện một sản phẩm vectơ ma trận riêng biệt cho mỗi mã thông báo, trong khi đường cơ sở thực hiện phép nhân ma trận chung hiệu quả hơn.

Trong một số ứng dụng, đây là một nút cổ chai lớn. Điều này có thể được thực hiện bằng cách giới thiệu một vòng lặp trong mã thông báo trong hạt nhân hoặc, trong trường hợp số lượng lớn mã thông báo, bằng cách thực hiện giải nén hoàn toàn trước khi thực hiện phép nhân ma trận tiêu chuẩn.

Thảo luận &; Hạn chế

Tóm lại, QMoE là một khung suy luận và nén end-to-end mã nguồn mở để giải quyết vấn đề chi phí bộ nhớ quá mức trong quá trình suy luận của MoE.

Lần đầu tiên, các nhà nghiên cứu đã chứng minh rằng một mô hình nghìn tỷ tham số như SwitchTransformer c2048 có thể được nén chính xác xuống dưới 1 bit trên mỗi tham số, với tốc độ nén gần 20 lần. Và, lần đầu tiên, việc thực thi hiệu quả từ đầu đến cuối của các mô hình như vậy đạt được trên một máy chủ GPU cấp người tiêu dùng duy nhất.

Tuy nhiên, do chỉ có một số ít Bộ GD&ĐT quy mô lớn và chính xác được công bố công khai, nên bộ mô hình nghiên cứu còn hạn chế.

Ngoài ra, do quy mô tuyệt đối của chúng, hầu hết các MoE đều được đào tạo và triển khai trong các khung tùy chỉnh khác nhau, đòi hỏi phải tích hợp thủ công phức tạp để nghiên cứu thêm.

Tuy nhiên, các nhà nghiên cứu đã bao quát một số MoE lớn nhất và chính xác nhất, đặc biệt là SwitchTransformer.

Tài nguyên:

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)