AI Dictionary of Terms

Mixture of Experts (MoE)

A neural network architecture that uses multiple specialized “expert” sub-networks, with a gating mechanism that routes each input to only the most relevant experts, enabling massive model capacity while keeping computational costs low by activating only a fraction of parameters per input.

The Simple Version

Imagine a hospital with many specialists: cardiologists, neurologists, orthopedic surgeons, etc. When a patient arrives, they don’t see all the doctors — a triage nurse (the “gate”) routes them to the right specialist based on their symptoms. Only the relevant experts work on that case.

Mixture of Experts works the same way. The model has many “expert” sub-networks, each specializing in different types of inputs. A gating mechanism decides which experts to activate for each input. This means you can have a huge model (many experts) but only use a small part of it for each input, keeping computation fast and cheap.

For example, Mixtral 8x7B has 8 expert networks but only uses 2 per input. It has the knowledge capacity of a 47B parameter model but the speed of a 13B model.

Detailed Explanation

MoE architectures address the scaling challenge: how do you make models bigger (more knowledge) without making them proportionally slower and more expensive?

Core Components:

1. Expert Networks:

2. Gating Network (Router):

3. Sparse Activation:

MoE Variants:

1. Sparse MoE (Standard):

2. Dense MoE:

3. Hierarchical MoE:

4. Expert Choice MoE:

Key Benefits:

Challenges:

Key Characteristics

Business Context

MoE is becoming the standard architecture for frontier LLMs:

Why MoE Matters:

Enterprise Implications:

Popular MoE Models:

Cost Comparison:

Real-World Analogy

A consulting firm with many specialists. For each client project, the firm doesn’t assign all consultants — just the 2-3 most relevant experts. The firm has deep expertise across many domains (high capacity) but only pays the relevant experts for each project (low cost). This is MoE in action.

Code Example

# Conceptual MoE layer in PyTorch
import torch
import torch.nn as nn
import torch.nn.functional as F

class MoELayer(nn.Module):
    def __init__(self, dim, num_experts=8, top_k=2):
        super().__init__()
        self.num_experts = num_experts
        self.top_k = top_k
        
        # Create expert networks
        self.experts = nn.ModuleList([
            nn.Sequential(
                nn.Linear(dim, dim * 4),
                nn.GELU(),
                nn.Linear(dim * 4, dim)
            )
            for _ in range(num_experts)
        ])
        
        # Gating network
        self.gate = nn.Linear(dim, num_experts)
    
    def forward(self, x):
        # x shape: [batch, seq_len, dim]
        batch_size, seq_len, dim = x.shape
        
        # Compute gating scores
        gate_scores = self.gate(x)  # [batch, seq_len, num_experts]
        gate_probs = F.softmax(gate_scores, dim=-1)
        
        # Select top-K experts
        top_k_probs, top_k_indices = torch.topk(gate_probs, self.top_k, dim=-1)
        
        # Normalize probabilities
        top_k_probs = top_k_probs / top_k_probs.sum(dim=-1, keepdim=True)
        
        # Process through selected experts
        output = torch.zeros_like(x)
        
        for i in range(self.top_k):
            expert_idx = top_k_indices[:, :, i]
            expert_prob = top_k_probs[:, :, i:i+1]
            
            # Route to appropriate expert
            for b in range(batch_size):
                for s in range(seq_len):
                    expert = self.experts[expert_idx[b, s]]
                    expert_output = expert(x[b:b+1, s:s+1])
                    output[b:b+1, s:s+1] += expert_prob[b, s] * expert_output
        
        return output

# Usage
moe_layer = MoELayer(dim=512, num_experts=8, top_k=2)
x = torch.randn(2, 10, 512)  # [batch=2, seq=10, dim=512]
output = moe_layer(x)
print(f"Input shape: {x.shape}, Output shape: {output.shape}")

Common Misconceptions

Sources & Further Reading