MoE layer

forkortelse for Mixture of Experts layer

Et MoE-lag er et neurale netværkslag der består af flere ekspertnetværk og en gate-mekanisme, som dynamisk vælger en sparsom aktivering af eksperter for hvert input.

Kort fortalt

MoE-lag gør en model større uden at øge beregningsomkostningerne proportionelt, ved kun at aktivere en lille del af netværket for hvert input.

Kategori
arkitektur
Niveau
øvet

Betydninger

1
  1. 1

    Et lag i et neuralt netværk der anvender en blanding af eksperter (sub-netværk) og en port-mekanisme til at dirigere input til en sparsomt aktiveret delmængde af eksperterne, hvilket muliggør skalerbarhed.

    • Mixtral 8x7B-modellen anvender MoE-lag med otte eksperter, hvor kun to aktiveres per token.forskning, 2024
    • Switch Transformer introducerede en forenklet MoE-arkitektur hvor gate-mekanismen vælger én enkelt ekspert per input.Switch Transformer, 2021

Hvornår bruges det

MoE-lag bruges primært i store sprogmodeller for at skalere parametertallet uden tilsvarende stigning i inferensomkostninger. De er centrale i arkitekturer som Mixtral 8x7B og Switch Transformer.

Formel

y = sum_{i=1}^n G(x)_i * E_i(x), where G(x) = softmax(W_g · x) and typically only top-k experts are selected (others set to zero).

Kodeeksempel

class MoELayer(nn.Module):
    def __init__(self, d_model, num_experts, top_k):
        super().__init__()
        self.gate = nn.Linear(d_model, num_experts)
        self.experts = nn.ModuleList([nn.Linear(d_model, d_model) for _ in range(num_experts)])
        self.top_k = top_k

    def forward(self, x):
        gate_scores = F.softmax(self.gate(x), dim=-1)
        values, indices = torch.topk(gate_scores, self.top_k, dim=-1)
        values = values / (values.sum(dim=-1, keepdim=True) + 1e-8)
        out = torch.zeros_like(x)
        for i, expert in enumerate(self.experts):
            mask = (indices == i).any(dim=-1, keepdim=True).float()
            out += values[..., i].unsqueeze(-1) * expert(x) * mask
        return out

Forenklet implementation af et MoE-lag i PyTorch. Gate-mekanismen vælger top-k eksperter, og outputtet vægtes med de normaliserede gate-scores.

Oprindelse

MoE står for 'Mixture of Experts', en idé der stammer fra statistisk modellering i 1990'erne.

Afledte ord

2

Kilder

3
  • Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer
  • Switch Transformer: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity
  • Mixtral of Experts