ai-074Đọc toàn bộ đề miễn phí

Bộ Định Tuyến Chuyên Gia Top-K (MoE Router) Mixtral 8x7B

H(x) = x Wg (Wg ∈ Rdmodel × E)

AINâng cao45 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

llmmoemixture-of-expertsmixtralroutingpytorch

Kiến thức tiên quyết: softmax-cross-entropy-from-scratch.

Nội dung đề bài

Mục tiêu kiến thức

  • Trong mô hình Thưa (Sparse Mixture-of-Experts như Mixtral 8x7B hay DeepSeek-V2/V3), thay vì dùng một tầng FFN chung, mô hình có E mạng chuyên gia (experts).
  • Với mỗi token x, một bộ định tuyến (Router / Gate) tính toán điểm tương thích:

H(x) = x Wg (Wg ∈ Rdmodel × E)

  • Bộ định tuyến chọn ra K chuyên gia có điểm số cao nhất (ví dụ Mixtral chọn K = 2 trong tổng số E = 8 chuyên gia).
  • Trọng số định tuyến sau khi chọn top-k được chuẩn hóa lại bằng Softmax:

pi = Softmax(TopK(H(x)))i

  • Token chỉ được gửi đến K chuyên gia này, giảm 75% chi phí tính toán FLOPs tại mỗi bước suy luận!

Yêu cầu

Xây dựng lớp MoETopKRouter(torch.nn.Module):

class MoETopKRouter(nn.Module):
    def __init__(self, d_model: int, num_experts: int, top_k: int = 2):
        pass

    def forward(self, x: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
        # Returns: (topk_weights, topk_indices, router_logits)
        pass
  • Đầu vào: x shape (B, S, d_model).
  • Đầu ra:
  • topk_weights: Tensor shape (B, S, top_k) chứa trọng số đã chuẩn hóa Softmax (∑top_k p = 1.0).
  • topk_indices: Tensor shape (B, S, top_k) chứa chỉ số của K chuyên gia được chọn.
  • router_logits: Tensor shape (B, S, num_experts) chứa logits thô x Wg.

Input

  • Lớp MoETopKRouter(d_model, num_experts, top_k): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.

Output

  • Các phương thức của MoETopKRouter: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.

Ràng buộc

  • Thời gian chạy tối đa: 3000ms.
  • Giới hạn bộ nhớ: 512MB.
  • Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.

Ví dụ 1

Input

B, S, D = (2, 4, 16)
E, K = (8, 2)
router = MoETopKRouter(d_model=D, num_experts=E, top_k=K)
x = torch.randn(B, S, D)
weights, indices, logits = router(x)
weight_sums = weights.sum(dim=-1)

Output

[[1., 1., 1., 1.],
 [1., 1., 1., 1.]]

Giải thích

Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.