Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

SwiGLU

Découvrez SwiGLU, la fonction d'activation avancée utilisée dans les LLM et Ultralytics . Découvrez comment son mécanisme de commutation améliore l'entraînement et l'efficacité des réseaux neuronaux.

SwiGLU (Swish Gated Linear Unit) est une fonction d'activation avancée et un bloc architectural de réseau neuronal qui améliore le réseau Feed-Forward Network (FFN) traditionnel utilisé dans l'apprentissage automatique profond. En combinant les propriétés fluides et non monotones de la fonction d'activation Swish avec un mécanisme Gated Linear Unit (GLU), SwiGLU offre un routage dynamique et dépendant des données. En appliquant une projection linéaire à une entrée, en faisant passer une branche par une activation Swish et en la multipliant élément par élément avec une autre branche linéaire, le réseau gagne en puissance expressive. Cela permet aux architectures d'IA modernes de capturer des dépendances complexes et non linéaires de manière beaucoup plus efficace que les couches statiques standard utilisées dans les anciens modèles d'apprentissage profond.

Comment fonctionne SwiGLU ?

Contrairement aux réseaux feed-forward traditionnels qui se contentent de mapper une entrée vers une dimension supérieure, d'appliquer une non-linéarité de base, puis de la projeter à nouveau vers le bas, SwiGLU introduit un mécanisme de gating multiplicatif. L'entrée est divisée en deux projections paramétrées : une « porte » et une « valeur ». La branche de la porte est activée à l'aide de la fonction SiLU / Swish, qui préserve les petites valeurs négatives et garantit des dérivées lisses et non nulles presque partout. Cette porte activée est ensuite multipliée élément par élément avec la branche de valeur. Ce filtrage dynamique permet au réseau neuronal de contrôler intelligemment le flux d'informations, évitant ainsi les problèmes de « neurones morts » courants dans les architectures plus anciennes, tout en stabilisant le signal de gradient pendant le processus d'entraînement du modèle, un concept largement étudié dans les mécanismes d'attention.

Différencier SwiGLU des autres fonctions d'activation

Alors que les fonctions d'activation standard telles que ReLU utilisent un seuil fixe pour limiter les valeurs négatives à zéro, SwiGLU ajuste dynamiquement les activations en fonction des données d'entrée elles-mêmes. Comparé à GELU, qui pondère les entrées en fonction de leur probabilité dans le cadre d'une distribution gaussienne, SwiGLU exploite spécifiquement des couches linéaires paramétrées pour apprendre à contrôler les informations. En substance, SwiGLU n'est pas seulement un calcul mathématique élémentaire ; il fonctionne comme un composant structurel complet qui remplace souvent l'ensemble du mécanisme de la couche cachée à l'intérieur d'un bloc Transformer. Pour une comparaison approfondie des propriétés mathématiques, les chercheurs se réfèrent souvent à des guides complets sur les fonctions d'activation.

Applications concrètes

Grâce à son efficacité de calcul et à ses gains de performance significatifs, SwiGLU est devenu un composant fondamental des systèmes d'IA modernes.

Implémentation de SwiGLU dans PyTorch

Pour les développeurs qui créent des réseaux personnalisés ou adaptent des modèles de vision pour des appareils périphériques à l'aide du Plate-forme Ultralytics, en mettant en œuvre SwiGLU via le PyTorch est simple. (Sinon, les développeurs d'autres écosystèmes peuvent utiliser TensorFlow). L' Python concis suivant illustre un module SwiGLU de base utilisant la fonction intégrée PyTorch F.silu fonction :

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


class SwiGLU(nn.Module):
    def __init__(self, in_features, hidden_features):
        super().__init__()
        # SwiGLU requires two projections: one for the gate, one for the value
        self.gate_proj = nn.Linear(in_features, hidden_features)
        self.value_proj = nn.Linear(in_features, hidden_features)
        self.out_proj = nn.Linear(hidden_features, in_features)

    def forward(self, x):
        # Element-wise multiplication of the SiLU-activated gate and the linear value
        hidden = F.silu(self.gate_proj(x)) * self.value_proj(x)
        return self.out_proj(hidden)


# Example usage with a dummy input tensor
module = SwiGLU(in_features=512, hidden_features=1365)
output = module(torch.randn(1, 512))

Cette approche structurelle des blocs d'activation garantit que les architectures neuronales de pointe extraient des représentations plus riches à partir de données d'entraînement complexes, qu'elles soient appliquées au traitement du langage naturel (NLP) ou à l'analyse spatiale en temps réel. Pour mieux comprendre comment créer et accélérer des modèles efficaces, les développeurs se réfèrent souvent aux recherches fondamentales sur les variantes GLU originales sur arXiv, aux référentiels open source de Meta et à la documentation d'optimisationPyTorch afin de maximiser le débit matériel.

Boostez votre énergie avec Ultralytics YOLO

Bénéficiez d'une vision IA avancée pour vos projets. Trouvez la licence adaptée à vos objectifs dès aujourd'hui.

Explorer les options de licence