- vừa được xem lúc

[Paper Explain] Mixtral of Experts: Lắm thầy thì model khỏe

0 0 1

Người đăng: Nguyen Mai

Theo Viblo Asia

Mở đầu

Với những người sử dụng Large Language Model (LLM), hẳn cái tên Mixtral 8x7B đã không còn xa lạ gì nữa. Nhưng có ai thắc mắc tại sao lại là "8x7B" chứ không phải là 56B hay 7B như các model khác? Bài viết này sẽ giải đáp về cái tên của Mixtral 8x7B, cũng như là kĩ thuật mà mà Mixtral 8x7B đã sử dụng: Mixture of Experts (MoE).

Nhìn lại một chút về Transformer

Chắc hẳn bây giờ ai cũng đã biết về Transformer. Và nhắc đến Transformer thì mọi người hay nghĩ tới Self-Attention, thành phần chính của Transformer. Tuy nhiên, model Transformer thì được tạo thành từ việc xếp chồng các Transformer Block (Hình 1) lên nhau, và ta có thể thấy, ngoài Self-Attention thì còn một thành nữa cũng quan trọng không kém: Feed Forward Network (FFN)

Hình 1. Một Transformer Block

Và cách làm việc của FFN được thể hiện ở Hình 2. FFN sẽ nhận một sequence xx có độ dài dim\text{dim}, biến đổi thành độ dài hidden_dim\text{hidden\_dim}, rồi trở lại độ dài dim\text{dim}

Hình 2. Một FFN

Khi scale một LLM lên, ví dụ từ 7B \rightarrow 70B, ngoài việc tăng số lượng Transformer Block lên, thì ta còn tăng cả dim\text{dim}hidden_dim\text{hidden\_dim}. Và khi chúng tăng lên, thì số lượng parameters ở FFN sẽ trở nên cực kì lớn. Thế nên, việc giảm số lượng parameters ở FFN là điều cần thiết.

Hơn nữa, mọi token trong một sequence sẽ đều đi qua một FFN cố định, tức là mỗi token đều được đối xử như nhau. Vậy nên thay vì có một FFN, ta sẽ có nhiều FFN, và làm nó như kiểu Multi-head FFN?

Mixture of Experts

Khái quát

Mixture of Expert (MoE) là câu trả lời cho cả 2 vấn đề vừa nêu ra ở phần trên.

Để giảm số lượng parameters ở FFN, ta sẽ sử dụng một khái niệm mới: sparsity. Trong trường hợp này có nghĩa là, với một input được đưa vào, ta không phải sử dụng toàn bộ parameters của model để thực hiện inference, mà ta sẽ chỉ sử dụng một phần parameters của model. Nhìn vào Hình 3, ta có 4 FFN, tuy nhiên, ta sẽ chỉ thực hiện inference với một FFN được chọn.

Tăng số lượng FFN lên để làm nhiều heads, lúc này mỗi FFN sẽ được gọi là một expert. Đi kèm theo đó sẽ là một router để xác định xem là token này nên được đưa vào expert nào. Kiến trúc của một MoELayer được thể hiện ở Hình 3.

Hình 3. Ví dụ về một MoeLayer trong Switch Transformer

Cụ thể

Ý tưởng của MoE chỉ đơn giản tóm gọn lại ở phần trên, phần này sẽ trình bày chi tiết hơn một chút về mặt toán học của MoE, mọi người hoàn toàn có thể bỏ qua phần này nếu muốn. Và ở đây, mình sẽ giải thích về MoE được sử dụng ở trong Mixtral 8x7B.

Mixtral là một model Transformer với 32k context length, tuy nhiên, FFN Layer được thay thế bởi MoELayer. Kiến trúc model của Mixtral ở dưới Bảng 1.

Bảng 1. Thông số về kiến trúc của Mixtral

Output của MoELayer khi nhận một input xx sẽ là tổng trọng số (weighted sum) các output của các experts, với việc trọng số sẽ được quyết định bởi một Gating Network. Với nn experts {E0,Ei,...,En1}\{E_0, E_i, ..., E_{n-1} \}, output của expert layer được tính như sau:

i=0n1G(x)i.Ei(x)\sum_{i=0}^{n-1} G(x)_i . E_i(x)

G(x)iG(x)_i là output của Gating Network cho expert thứ ii, và Ei(x)E_i(x) là output của expert thứ ii

Nếu vector output của Gating Network là sparse (tức là chỉ có 1 số thành phần khác 0), ta sẽ có thể bỏ qua được việc tính toán các experts mà có Gating score là 0. Có nhiều cách để tạo G(x)G(x), tuy nhiên Mixtral chọn cách đơn giản là sử dụng softmax lên top-k output logits từ một FC layer, cụ thể:

G(x)=Softmax(TopK(x.Wg))G(x) = \text{Softmax}(\text{TopK}(x . W_g))

Với TopK(li)=li\text{TopK}(l_i) = l_i nếu lil_i nằm trong KK giá trị lớn nhất của vector logit lRnl \in \R^n, và TopK(li)=\text{TopK}(l_i) = -\infty nếu ngược lại. Ở đây KK là một hyper-parameters để kiểm soát số lượng experts sử dụng cho một token trong sequence. Nếu ta tăng số lượng nn, tức là tăng số lượng experts, mà vẫn giữ nguyên số lượng KK, tức là giữ nguyên số lượng experts dùng cho một token, thì ta sẽ tăng số lượng parameters tổng của model, tuy nhiên số lượng parameters dùng cho tính toán thì không đổi. Và như Bảng 1, Mixtral chỉ sử dụng K=2K=2 experts cho từng token và sử dụng n=8n=8 experts. Số lượng parameters tổng của Mixtral 8x7B không phải là 56B, mà lại là 47B (vì chỉ MoE các FFN thôi), và số lượng parameters sử dụng trong lúc inference chỉ có 13B thôi.

Expert Parallelism

❗️ Phần này chỉ dành cho các máy có nhiều hơn 1 GPU

Áp dụng kĩ thuật model parallelism lên các expert, ta sẽ chia các expert vào các GPU khác nhau. Trong quá trình tính toán expert, output của Gating Network sẽ chia token cho expert ở GPU thì token đó sẽ được đưa từ GPU ban đầu sang GPU có chứ expert đó, sau khi tính toán xong thì token đó lại được trả về GPU ban đầu

Tổng kết

Phía trên là cách hoạt động của Mixture of Expert (MoE) cũng như là Mixtral 8x7B

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tấn công và phòng thủ bậc nhất cực mạnh cho các mô hình học máy

tấn công bậc nhất cực mạnh = universal first-order adversary. Update: Bleeding edge của CleverHans đã lên từ 3.1.0 đến 4.

0 0 29

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 204

- vừa được xem lúc

Trích xuất thông tin bảng biểu cực đơn giản với OpenCV

Trong thời điểm nhà nước đang thúc đẩy mạnh mẽ quá trình chuyển đổi số như hiện nay, Document Understanding nói chung cũng như Table Extraction nói riêng đang trở thành một trong những lĩnh vực được quan tâm phát triển và chú trọng hàng đầu. Vậy Table Extraction là gì? Document Understanding là cái

0 0 216

- vừa được xem lúc

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 137

- vừa được xem lúc

[B5'] Smooth Adversarial Training

Đây là một bài trong series Báo khoa học trong vòng 5 phút. Được viết bởi Xie et. al, John Hopkins University, trong khi đang intern tại Google. Hiện vẫn là preprint do bị reject tại ICLR 2021.

0 0 33

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 124