>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Explorer LitGPT - Comment affiner et exécuter des réseaux neuronaux ouverts sans frameworks lourds

Si vous avez déjà essayé de vous plonger dans le code source de Hugging Face transformers pour corriger la logique d'attention ou voir comment une couche Llama spécifique est structurée, vous vous souvenez probablement de ce sentiment. Des dizaines d'abstractions, un héritage tordu, des mégaoctets de wrappers. Au final, un débogage simple se transforme en histoire detectivesque.

Les développeurs de Lightning AI ont adopté une approche différente. Ils ont pris plus de 20 architectures de modèles de langage populaires et les ont réécrites de zéro en PyTorch pur. Le projet s'appelle LitGPT. Pas de platrée d'abstractions ici. Chaque modèle tient dans des fichiers compréhensibles, faciles à lire et à modifier.

De quoi parle le projet

Parmi les réseaux pris en charge, on trouve Llama 3, Qwen 2.5, Phi 4, Gemma 2, DeepSeek R1 Distill et les MoE hybrides. L'outil fournit un pipeline complet : de l'affinage et du pré-entraînement au déploiement local en tant qu'API REST et à l'évaluation de la qualité sur des benchmarks comme MMLU ou TruthfulQA.

Tout fonctionne directement depuis la ligne de commande ou via une API Python minimaliste.

from litgpt import LLM

llm = LLM.load("microsoft/phi-2")
text = llm.generate("Fix the spelling: Every fall, the family goes to the mountains.")
print(text)

Pas de code répétitif avec des dataloaders et des tokenizers. Le code d'invocation prend littéralement trois lignes.

Avantages pratiques et fonctionnalités

Premièrement, du code open source sans wrappers de framework personnalisés. Si vous voulez comprendre comment Flash Attention v2 ou QLoRA fonctionnent réellement, le code de LitGPT sert d'excellent manuel. Chaque modèle est implémenté de la manière la plus transparente possible.

Deuxièmement, des exigences matérielles modestes. Prêt à l'emploi, il prend en charge la quantification 4 bits et 8 bits, l'intégration bitsandbytes, le FSDP (Fully Sharded Data Parallel) pour la distribution sur plusieurs GPU, ainsi que le déchargement sur CPU. Cela permet d'exécuter ou d'affiner des modèles même sur une seule carte graphique relativement abordable.

Troisièmement, des recettes d'entraînement flexibles prêtes à l'emploi au format YAML. Vous pouvez exécuter l'affinage avec LoRA ou QLoRA avec une seule ligne de commande.

Ligne de commande et cas d'utilisation

L'interface CLI de LitGPT couvre la plupart des tâches typiques d'un ingénieur ML. Par exemple, si vous avez un fichier de données JSON et souhaitez adapter un modèle à des documents d'entreprise ou à un ensemble de données spécifique, l'ensemble du processus tient en trois étapes.

Lancement de l'affinage :

litgpt finetune microsoft/phi-2 \
  --data JSON \
  --data.json_path my_custom_dataset.json \
  --data.val_split_fraction 0.1 \
  --out_dir out/custom-model

Une fois l'entraînement terminé, vous pouvez vérifier les réponses du modèle résultant directement dans le chat interactif du terminal :

litgpt chat out/custom-model/final

Et quand le modèle est prêt pour le déploiement, démarrer un serveur HTTP prend littéralement une seconde :

litgpt serve out/custom-model/final

Le résultat est un serveur web basé sur FastAPI avec un point de terminaison à /predict. Envoyez une requête POST avec un prompt et obtenez une réponse. Cela élimine le besoin de construire votre propre service avec Triton ou vLLM quand vous avez besoin d'un prototype rapide ou d'un outil interne pour l'équipe.

Configurations techniques

Quand les paramètres standard de la ligne de commande deviennent insuffisants, les fichiers de configuration YAML viennent à la rescousse. Le dossier config_hub du dépôt contient des recettes sélectionnées pour des modèles spécifiques. Ils configurent la quantification, la taille du micro-batch, les paramètres LoRA (rank, alpha, dropout), le taux d'apprentissage et le calendrier de l'optimiseur.

N'importe quelle valeur du fichier YAML peut être remplacée directement dans la CLI au lancement, ce qui est pratique pour un balayage rapide des hyperparamètres :

litgpt finetune \
  --config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml \
  --lora_r 4

Où l'outil a fait ses preuves

Le projet LitGPT est depuis longtemps sorti du cadre d'un simple utilitaire pour devenir une base pour la recherche réelle.

Par exemple, le modèle compact bien connu TinyLlama avec 1,1 milliard de paramètres a été entraîné en utilisant le code de LitGPT. Les auteurs du projet MicroLlama (un modèle de 300M de paramètres) ont également utilisé cette base de code. Des chercheurs de Microsoft ont utilisé LitGPT comme base pour le projet Samba, où ils ont combiné les State Space Models avec le mécanisme d'Attention.

De plus, LitGPT a servi de kit de démarrage officiel lors du NeurIPS 2023 LLM Efficiency Challenge, où les participants ont affiné des modèles en 24 heures sur un seul GPU.

À qui cela sera utile et vaut-il la peine d'essayer

LitGPT sera utile dans trois situations.

  1. Vous étudiez l'architecture des modèles de langage modernes et voulez du code PyTorch propre sans dépendances externes.
  2. Vous avez besoin de tester rapidement une hypothèse, d'exécuter un affinage QLoRA sur un ensemble de données et de servir le modèle via API sans écrire de code d'infrastructure.
  3. Vous cherchez un modèle de démarrage fonctionnel pour votre propre projet de recherche sur l'entraînement de LLM.

La licence Apache 2.0 supprime toute restriction pour une utilisation commerciale. Les développeurs maintiennent activement le dépôt, ajoutant de nouvelles architectures comme Gemma 3 et Qwen 2.5 Coder dès leur sortie.

Projets similaires