Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

SwiGLU Activation

ia

Définition

SwiGLU (Swish-Gated Linear Unit) est une fonction d'activation pour les couches Feed-Forward Network des Transformers, proposée par Noam Shazeer (Google, 2020) dans le paper "GLU Variants Improve Transformer". C'est aujourd'hui l'activation de référence pour la grande majorité des LLMs open-source haute performance : LLaMA 2/3, Mistral, Mixtral, Qwen, Gemma, Phi et de nombreux autres l'utilisent. SwiGLU est une variante de l'architecture GLU (Gated Linear Unit) qui utilise la fonction Swish (aussi appelée SiLU) comme gate. La formule est : SwiGLU(x, W₁, W₂, W₃) = (Swish(xW₁) ⊗ xW₂) × W₃, où ⊗ représente la multiplication élément-par-élément. Concrètement, le FFN utilise deux projections parallèles (une "gate" et une "value"), les multiplie après activation, puis projette le résultat. L'avantage empirique de SwiGLU sur ReLU et GELU est bien documenté : à paramètres équivalents, SwiGLU améliore la perplexité et les benchmarks de ~1-2 points. L'intuition est que le gating permet au réseau de modérer dynamiquement le flux d'information selon le contenu, offrant une expressivité supérieure à une simple activation scalaire. Note technique : pour conserver le même nombre de paramètres qu'un FFN standard avec dimension 4×d_model, le FFN SwiGLU utilise une dimension intermédiaire de (8/3)×d_model ≈ 2.67×d_model, compensant les deux projections parallèles supplémentaires. Ce point est important lors du calcul des paramètres d'un modèle pour le provisioning GPU. Pour les équipes fine-tuning PEFT (LoRA, QLoRA), les couches FFN SwiGLU sont souvent des cibles d'adaptation efficaces, notamment les projections gate_proj et up_proj qui constituent la "gate" et la "value" respectivement.

Formule et implémentation

import torch
import torch.nn as nn
import torch.nn.functional as F

class SwiGLU(nn.Module):
    def __init__(self, d_model, d_ff):
        super().__init__()
        # Note: d_ff = int(8/3 * d_model) pour iso-paramètres
        self.gate_proj = nn.Linear(d_model, d_ff, bias=False)
        self.up_proj   = nn.Linear(d_model, d_ff, bias=False)
        self.down_proj = nn.Linear(d_ff, d_model, bias=False)

    def forward(self, x):
        # SwiGLU: SiLU(gate) * value
        return self.down_proj(F.silu(self.gate_proj(x)) * self.up_proj(x))

Comparaison empirique des activations

Benchmark sur GPT-3 style modèle (6.7B params, pile dataset) :

  • ReLU : perplexité 6.42
  • GELU : perplexité 6.38
  • SwiGLU : perplexité 6.21 (meilleur)
  • GeGLU : perplexité 6.25

Impact sur le fine-tuning LoRA

Dans les modèles LLaMA/Mistral, LoRA peut être appliqué sur gate_proj, up_proj et down_proj. Les papiers récents (QLoRA, DoRA) montrent que cibler aussi les couches FFN (pas seulement attention) améliore les performances du fine-tuning sur des tâches nécessitant de la connaissance factuelle.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis