pipelet est un projet basé sur Rust conçu à des fins d'apprentissage, se concentrant sur l'implémentation d'un Grand Modèle de Langage (LLM) de style GPT-2 à partir de zéro. Il utilise le framework d'apprentissage profond burn.
Le projet est organisé comme un espace de travail Cargo avec les crates suivantes :
crates/pipelet: La bibliothèque principale contenant l'implémentation du modèle GPT-2.- Implémente l'architecture Transformer : Embeddings, Attention Multi-Têtes, Réseaux Feed-Forward, Normalisation de Couche.
- Utilise
burnpour les opérations sur les tenseurs et les définitions de modules.
crates/tokenizer: Gère la génération de vocabulaire et la tokenisation de texte.- Inclut la logique pour entraîner un tokenizer sur un corpus.
- Supporte la persistance des modèles de tokenizer.
crates/forge: Un outil en ligne de commande (CLI) pour gérer le pipeline d'entraînement et d'autres tâches utilitaires.- Commandes pour entraîner le tokenizer, télécharger/uploader des artefacts, et exécuter des pipelines.
- Tokenizer :
- Entraînement d'un tokenizer sur un corpus personnalisé.
- Encodage et décodage de texte.
- Inférence :
- Implémentation de base de l'architecture du modèle GPT-2 (Passe avant / Forward pass).
- Boucle de génération de texte (échantillonnage, température, etc.).
- Entraînement :
- Implémentation de la boucle d'entraînement (Calcul de la perte, Rétropropagation).
- Chargement et mise en lots (batching) des données.
- Checkpointing (sauvegarde des points de contrôle).
- Rust (dernière version stable)
- Cargo
cargo buildLa crate forge fournit un point d'entrée CLI.
# Exemple : Entraîner un tokenizer
cargo run -p forge -- train-tokenizer --helpCe projet est strictement à des fins éducatives pour comprendre le fonctionnement interne des LLM et du framework burn. Il n'est pas destiné à une utilisation en production.