Il s'agit d'une tentative de faire une implémentation open source des LFM, ce n'est évidemment pas le référentiel officiel car il est fermé. Je relie ci-dessous les articles que j'utilise comme référence. Découvrez-en plus sur le modèle à partir de l'article original
$ pip3 install -U lfm-torch
import torch
from lfm_torch . model import LFModel
from loguru import logger
# Instantiate and test the model
if __name__ == "__main__" :
batch_size , seq_length , embedding_dim = 32 , 128 , 512
token_dim , channel_dim , expert_dim , adapt_dim , num_experts = (
embedding_dim ,
embedding_dim ,
embedding_dim ,
128 ,
4 ,
)
model = LFModel (
token_dim , channel_dim , expert_dim , adapt_dim , num_experts
)
input_tensor = torch . randn (
batch_size , seq_length , embedding_dim
) # 3D text tensor
output = model ( input_tensor )
logger . info ( "Model forward pass complete." )
Une nouvelle architecture neuronale combinant des réseaux de neurones liquides, des mécanismes d'attention des transformateurs et un mélange d'experts (MoE) pour un traitement adaptatif amélioré et des mises à jour d'état dynamiques. Très expérimental et précoce ! Nous travaillons ici sur un script de formation. Il a toujours besoin d'un véritable tokenizer comme le tokenizer de Lama, mais il y arrive. Si vous pouvez m'aider, faites-le-moi savoir.
organigramme TB
sous-graphe "Transformateur Liquide"
Entrée["Séquence d'entrée"] --> TL["Couche de transformateur"]
sous-graphe "Couche de transformateur"
direction TB
MHA["Attention multi-têtes"] --> LC["Cellule liquide"]
LC --> MOE["Mélange d'Experts"]
MOE --> LN["Norme de couche + Résiduel"]
fin
sous-graphique « Détails de la cellule liquide »
direction LR
HS["État caché"] --> WH["W_h Linéaire"]
Entrée2["Entrée"] --> WI["W_in Linéaire"]
WH --> Ajouter((+))
WI --> Ajouter
Ajouter --> Agir["Activation"]
Acte --> LN2["LayerNorm"]
LN2 --> DO["Abandon"]
fin
sous-graphique « Détails du MoE »
direction TB
Entrée3["Entrée"] --> Porte["Réseau de porte"]
Entrée3 --> E1["Expert 1"]
Entrée3 --> E2["Expert 2"]
Entrée3 --> E3["Expert N"]
Portail -> Peigne["Combinaison pondérée"]
E1 -> Peigne
E2 --> Peigne
E3 --> Peigne
fin
TL --> Sortie["Séquence de sortie"]
fin
import torch
from loguru import logger
from lfm_torch . liquid_t_moe import LiquidTransformer
# Example usage
if __name__ == "__main__" :
seq_len , batch_size , embed_size = 10 , 2 , 64
num_heads , num_experts , expert_size , num_layers = 8 , 4 , 64 , 6
# Create the model
model = LiquidTransformer ( embed_size , num_heads , num_experts , expert_size , num_layers )
# Example input tensor
x = torch . randn ( seq_len , batch_size , embed_size )
# Forward pass
output = model ( x )
logger . info ( f"Model output shape: { output . shape } " )
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.