Le Deep Learning à la maison

comment ajouter des documents dans un cerveau électronique

fred

Deep Learning à la maison.

Cet article résulte d'un échange avec différents LLM.

Il vous permettra de prendre la mesure de ce qui vous sépare de pouvoir vous-même utiliser l'apprentissage profond sur vos propres documents 

Odoo • Texte et Image

Pour pratiquer le "deep learning" à la maison il faudra être équipé avec un PC puissent avec plein de cœurs, pleins de RAM (12 ♥ et 64 Go pour Sagittarius) avec sa RTX 3090 et 24 Go de VRAM, les configurations avec moins de mémoire auront du mal à réaliser cette phase de nourrissage du LLM... Par contre les modèles qui en résultent peuvent fonctionner sur des GPU avec 8Go de VRAM, ou des NPU.

Cet article décrit comment réaliser l'apprentissage.
Cela consiste à créer une base de données vectorielle et la "remplir" des résultats produits par les "transformers" qui auront mouliné les documents que vous fournissez.

C'est parti. Quelques conseils, bases et exemples avant de démarrer.

Environnement de base

  1. Système d’exploitation : Ubuntu 22.04 LTS (ou une autre distribution Linux stable)
  2. Python : Version 3.10 ou supérieure
  3. CUDA Toolkit : Version compatible avec votre driver NVIDIA (généralement la dernière stable)
  4. Anaconda ou Miniconda pour la gestion des environnements virtuels

Outils et frameworks principaux

  1. PyTorch : Framework de deep learning principal
  2. Torchtune : Pour le fine-tuning des LLM
  3. Hugging Face Transformers : Bibliothèque pour accéder et utiliser des modèles pré-entraînés
  4. FAISS : Pour la création et la gestion de bases de données vectorielles
  5. Sentence Transformers : Pour générer des embeddings de haute qLeualité

Création de bases de données vectorielles (embeddings)

  1. Préparation des données :

    • Utilisez des bibliothèques comme Pillow pour le traitement d’images
    • PyPDF2 ou pdfminer pour l’extraction de texte des PDF
    • BeautifulSoup pour le scraping web si nécessaire
  2. Génération d’embeddings :

    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer('all-MiniLM-L6-v2')
    embeddings = model.encode(texts)
    
  3. Création de la base de données vectorielle :

    import faiss
    dimension = embeddings.shape[1]
    index = faiss.IndexFlatL2(dimension)
    index.add(embeddings)
    faiss.write_index(index, "my_faiss_index.idx")
    

Fine-tuning avec Torchtune

  1. Installation :

    pip install torchtune
    
  2. Téléchargement du modèle :

    tune download llama2-7b
    
  3. Configuration du fine-tuning :
    Créez un fichier YAML pour configurer le fine-tuning, par exemple :

    model:
      name: llama3.2
      pretrained_model_name_or_path: meta-llama/Llama3.2
    
    dataset:
      train_file: path/to/your/train.json
      validation_file: path/to/your/validation.json
    
    training:
      num_train_epochs: 3
      per_device_train_batch_size: 4
      learning_rate: 2e-5
      weight_decay: 0.01
    
  4. Lancement du fine-tuning :

    tune run --recipe lora --config your_config.yaml
    

Outils complémentaires utiles

  1. MLflow : Pour le suivi des expériences et la gestion des modèles
  2. Weights & Biases : Alternative à MLflow pour le suivi des expériences
  3. DVC (Data Version Control) : Pour la gestion des versions de vos datasets
  4. Gradio : Pour créer rapidement des interfaces web pour vos modèles
  5. Optuna : Pour l’optimisation automatique des hyperparamètres

Workflow général

  1. Préparez vos données (images, documents) et créez des embeddings avec Sentence Transformers.
  2. Stockez ces embeddings dans une base de données FAISS pour une récupération rapide.
  3. Utilisez Torchtune pour fine-tuner Llama 3.2 sur vos données spécifiques.
  4. Évaluez les performances de votre modèle fine-tuné avec les outils d’évaluation intégrés de Torchtune.
  5. Utilisez MLflow ou Weights & Biases pour suivre vos expériences et comparer les différentes versions de vos modèles.
  6. Déployez votre modèle final avec Gradio pour une interface utilisateur rapide, ou intégrez-le dans une application plus complexe selon vos besoins.

En suivant cette approche, vous pourrez créer des modèles personnalisés basés sur Llama 3.2, adaptés à vos données spécifiques, tout en tirant parti de la puissance de votre RTX 3090 pour accélérer l’entraînement et l’inférence[1][2].

Citations:
[1] https://korben.info/pytorch-devoile-torchtune-pour-dompter-les-llm.html
[2] https://pytorch.org/blog/torchtune-fine-tune-llms/
[3] https://inside-machinelearning.com/tutoriel-simple-detection-dobjet-sur-image-en-pytorch-partie-2/

Odoo • Image et Texte

On écrit le programme ensemble

 

 1. créer des bases de données vectorielle "embeddings" sur divers thématiques à charger avec le modèle original.

2. Fabriquer un nouveau modèle avec pythorch et torchtune et autres outils utiles

Ce programme améliore les solutions précédentes de plusieurs manières :

  • Simplicité d’utilisation : L’utilisateur n’a qu’à spécifier le répertoire d’entrée et le répertoire de sortie.
  • Détection automatique du type de fichier : Le programme détecte automatiquement le type de fichier et applique le traitement approprié.
  • Analyse améliorée des images : Utilise à la fois l’OCR et un modèle de génération de légendes pour extraire plus d’informations des images.
  • Analyse sémantique : Utilise Ollama pour analyser et résumer le contenu extrait, ajoutant une couche d’interprétation sémantique.
  • Embeddings enrichis : Combine le texte original et l’analyse pour créer des embeddings plus riches et informatifs.
  • Stockage efficace : Utilise FAISS pour un stockage et une recherche efficaces des embeddings.
  • Flexibilité : Prend en charge plusieurs types de fichiers (PDF, images, HTML, markdown, texte).
  • Performance : Utilise le GPU si disponible pour accélérer le traitement.


allez c'est parti.... On fabrique veXtorize.py

ça se passe dans le "dépot à code" https://github.com/papiche/UPassport/