NeuroFlux

🚀 DĂ©marrage Rapide NeuroFlux

🌍 En Français

Bienvenue dans le guide de dĂ©marrage rapide de NeuroFlux ! Suivez ces Ă©tapes simples pour commencer Ă  utiliser notre framework d’IA microscopique.

📋 PrĂ©requis

📩 Installation

  1. Clonez le Repository
    git clone https://github.com/neuroflux/neuroflux.git
    cd neuroflux
    
  2. Créez un Environnement Virtuel
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Installez les Dépendances
    pip install -r requirements.txt
    

🧠 AccĂ©der aux ModĂšles NeuroFlux PrĂ©-OptimisĂ©s

NeuroFlux fournit une suite de modĂšles IA prĂ©-optimisĂ©s pour le dĂ©ploiement sur des appareils pĂ©riphĂ©riques (edge). Vous pouvez prĂ©parer ces modĂšles en utilisant l’utilitaire NeuroFluxDataset du module huggingface.

Assurez-vous d’abord d’avoir les bibliothĂšques nĂ©cessaires pour la conversion et l’optimisation des modĂšles :

pip install -r huggingface/requirements.txt
# Vous pourriez également avoir besoin d'installer des outils de conversion spécifiques comme onnx-tensorflow ou paddle2onnx
# pip install onnx onnx-tf paddle2onnx # Exemple

Ensuite, vous pouvez utiliser le script Python suivant pour générer les modÚles optimisés :

from huggingface.neuroflux import NeuroFluxDataset
import os

# Créez une instance pour tous les modÚles (ou un spécifique)
# Le 'name' dans NeuroFluxConfig déterminera quels modÚles sont traités.
# Pour cet exemple, supposons que vous ayez une configuration dans neuroflux.py
# qui traite un modĂšle comme 'mobilenet' ou 'efficientnet-lite'.

# Exemple : Traiter le type de modĂšle 'mobilenet'
print("Préparation du modÚle NeuroFlux MobileNet...")
# Assurez-vous que "mobilenet" est un nom de configuration valide dans NeuroFluxDataset.BUILDER_CONFIGS
dataset_builder = NeuroFluxDataset(name="mobilenet")

# Définir un répertoire de sortie pour le dataset
output_dir = "./neuroflux_optimized_models_fr" # Répertoire de sortie spécifique à la langue
os.makedirs(output_dir, exist_ok=True)

# Ceci va télécharger, convertir et optimiser les modÚles spécifiés par la configuration
# Les modÚles TFLite résultants et les métadonnées seront dans 'output_dir'
dataset_builder.download_and_prepare(download_dir=output_dir)

print(f"Les modÚles optimisés et les métadonnées sont disponibles dans : {output_dir}")
print("Vous pouvez trouver les fichiers de modÚle .tflite dans les sous-répertoires respectifs des modÚles.")

Cela inclut une variĂ©tĂ© de modĂšles (par exemple, pour la vision comme EfficientNet-Lite et NanoDet-Plus, des modĂšles NLP comme FastBERT, et plus encore). Ces modĂšles sont automatiquement convertis en TFLite et peuvent ĂȘtre optimisĂ©s pour l’exĂ©cution GPU et la quantification hybride afin d’amĂ©liorer les performances sur les appareils mobiles/pĂ©riphĂ©riques.

🚀 ExĂ©cuter l’InfĂ©rence avec un ModĂšle TFLite

Une fois que vous avez gĂ©nĂ©rĂ© un modĂšle TFLite (par exemple, mobilenet.tflite dans le rĂ©pertoire output_dir/mobilenet/), vous pouvez exĂ©cuter une infĂ©rence en utilisant TensorFlow Lite Interpreter. Assurez-vous d’avoir tensorflow et numpy installĂ©s (pip install tensorflow numpy).

import tensorflow as tf
import numpy as np
import os

# Chemin vers votre modÚle TFLite généré
# Exemple : './neuroflux_optimized_models_fr/mobilenet/mobilenet_optimized.tflite'
# Assurez-vous que ce chemin correspond à un modÚle que vous avez généré
model_path = "./neuroflux_optimized_models_fr/mobilenet/mobilenet_optimized.tflite" # Adaptez ce chemin

if not os.path.exists(model_path):
    print(f"ModÚle non trouvé à {model_path}. Veuillez d'abord générer les modÚles.")
else:
    # Charger le modĂšle TFLite et allouer les tenseurs.
    interpreteur = tf.lite.Interpreter(model_path=model_path)
    interpreteur.allocate_tensors()

    # Obtenir les tenseurs d'entrée et de sortie.
    details_entree = interpreteur.get_input_details()
    details_sortie = interpreteur.get_output_details()

    # Préparer des données d'entrée factices
    # Cet exemple suppose une entrée image 1x224x224x3 pour un modÚle comme MobileNet
    # Ajustez la forme (shape) et le type de données (dtype) selon les exigences de votre modÚle
    forme_entree = details_entree[0]['shape']
    donnees_entree = np.array(np.random.random_sample(forme_entree), dtype=details_entree[0]['dtype'])
    interpreteur.set_tensor(details_entree[0]['index'], donnees_entree)

    # Exécuter l'inférence
    interpreteur.invoke()

    # Obtenir les données de sortie
    donnees_sortie = interpreteur.get_tensor(details_sortie[0]['index'])
    print("Données de sortie:", donnees_sortie)
    print("Inférence TFLite réussie !")

💡 Autres Solutions d’InfĂ©rence

Bien que NeuroFluxDataset gĂ©nĂšre principalement des modĂšles TFLite optimisĂ©s, d’autres options existent :

đŸ—ïž Structure du Projet

neuroflux/
├── src/                  # Code source
│   ├── models/           # Nano-modùles
│   ├── engines/          # Moteurs d'orchestration
│   └── pheromones/      # SystĂšme de phĂ©romones
├── wasm/                 # Compilation WebAssembly
├── docs/                # Documentation
└── tests/               # Tests

🚀 Premier Modùle

  1. Créez un ModÚle TinyBERT
    from models.tinybert.model import TinyBERT
       
    # Créer un modÚle
    model = TinyBERT()
       
    # Optimiser
    model.optimize()
    
  2. Compilez en WebAssembly
    python wasm/tinybert_compile.py
    

đŸ€– Essaim de PhĂ©romones

  1. Initialisez la Base de Données
    from src.pheromones.digital_pheromones import PheromoneDatabase
       
    # Initialiser la base
    db = PheromoneDatabase()
    
  2. Créez une Phéromone
    from src.pheromones.digital_pheromones import DigitalPheromone
       
    # Créer une phéromone
    pheromone = DigitalPheromone(
        agent_id="agent_1",
        signal_type="knowledge",
        data={"topic": "AI", "confidence": 0.9},
        ttl=3600  # 1 heure
    )
       
    # Ajouter Ă  la base
    db.add_pheromone(pheromone)
    

đŸ§Ș Tests

Pour exécuter les tests :

pytest tests/ -v

📚 Documentation

La documentation complĂšte est disponible sur GitHub Pages :

https://neuroflux.github.io/neuroflux/

đŸ€ Contribuer

Voir CONTRIBUTING.md pour savoir comment contribuer.

📝 Licence

Ce projet est sous licence Apache 2.0. Voir LICENSE pour plus de détails.

🌐 In English

🚀 Quick Start NeuroFlux

📋 Prerequisites

📩 Installation

  1. Clone the Repository
    git clone https://github.com/neuroflux/neuroflux.git
    cd neuroflux
    
  2. Create a Virtual Environment
    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Install Dependencies
    pip install -r requirements.txt
    

🧠 Accessing Pre-Optimized NeuroFlux Models

NeuroFlux provides a suite of AI models pre-optimized for edge deployment. You can prepare these models using the NeuroFluxDataset utility from the huggingface module.

First, ensure you have the necessary libraries for model conversion and optimization:

pip install -r huggingface/requirements.txt
# You might also need to install specific conversion tools like onnx-tensorflow or paddle2onnx
# pip install onnx onnx-tf paddle2onnx # Example

Then, you can use the following Python script to generate the optimized models:

from huggingface.neuroflux import NeuroFluxDataset
import os

# Create an instance for all models (or a specific one)
# The 'name' in NeuroFluxConfig will determine which models are processed.
# For this example, let's assume you have a config in neuroflux.py
# that processes a model like 'mobilenet' or 'efficientnet-lite'.

# Example: Process the 'mobilenet' model type
print("Preparing NeuroFlux MobileNet model...")
# Ensure "mobilenet" is a valid config name from NeuroFluxDataset.BUILDER_CONFIGS
dataset_builder = NeuroFluxDataset(name="mobilenet")

# Define an output directory for the dataset
output_dir = "./neuroflux_optimized_models_en" # Language-specific output directory
os.makedirs(output_dir, exist_ok=True)

# This will download, convert, and optimize the models specified by the config
# The resulting TFLite models and metadata will be in 'output_dir'
dataset_builder.download_and_prepare(download_dir=output_dir)

print(f"Optimized models and metadata are available in: {output_dir}")
print("You can find .tflite model files in the respective model subdirectories.")

This includes a variety of models (e.g., for vision like EfficientNet-Lite and NanoDet-Plus, NLP models like FastBERT, and more). These models are automatically converted to TFLite and can be optimized for GPU execution and hybrid quantization for enhanced performance on mobile/edge devices.

🚀 Running Inference with a TFLite Model

Once you have a TFLite model generated (e.g., mobilenet_optimized.tflite in the output_dir/mobilenet/ directory), you can run inference using the TensorFlow Lite Interpreter. Ensure you have tensorflow and numpy installed (pip install tensorflow numpy).

import tensorflow as tf
import numpy as np
import os

# Path to your generated TFLite model
# Example: './neuroflux_optimized_models_en/mobilenet/mobilenet_optimized.tflite'
# Ensure this path matches a model you have generated
model_path = "./neuroflux_optimized_models_en/mobilenet/mobilenet_optimized.tflite" # Adjust this path

if not os.path.exists(model_path):
    print(f"Model not found at {model_path}. Please generate models first.")
else:
    # Load the TFLite model and allocate tensors.
    interpreter = tf.lite.Interpreter(model_path=model_path)
    interpreter.allocate_tensors()

    # Get input and output tensors.
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()

    # Prepare dummy input data
    # This example assumes a 1x224x224x3 image input for a model like MobileNet
    # Adjust the shape and dtype according to your model's input requirements
    input_shape = input_details[0]['shape']
    input_data = np.array(np.random.random_sample(input_shape), dtype=input_details[0]['dtype'])
    interpreter.set_tensor(input_details[0]['index'], input_data)

    # Run inference
    interpreter.invoke()

    # Get output data
    output_data = interpreter.get_tensor(output_details[0]['index'])
    print("Output data:", output_data)
    print("TFLite Inference successful!")

💡 Other Inference Solutions

The NeuroFluxDataset primarily generates optimized TFLite models. For models originally in ONNX format, or those convertible to ONNX, you can also use ONNX Runtime Mobile. For even more specialized deployments, MNN and NCNN are powerful inference engines; you can explore their tools to convert models to their respective formats.

đŸ—ïž Project Structure

neuroflux/
├── src/                  # Source code
│   ├── models/           # Nano-models
│   ├── engines/          # Orchestration engines
│   └── pheromones/      # Pheromone system
├── wasm/                 # WebAssembly compilation
├── docs/                # Documentation
└── tests/               # Tests

🚀 First Model

  1. Create a TinyBERT Model
    from models.tinybert.model import TinyBERT
       
    # Create a model
    model = TinyBERT()
       
    # Optimize
    model.optimize()
    
  2. Compile to WebAssembly
    python wasm/tinybert_compile.py
    

đŸ€– Pheromone Swarm

  1. Initialize the Database
    from src.pheromones.digital_pheromones import PheromoneDatabase
       
    # Initialize the database
    db = PheromoneDatabase()
    
  2. Create a Pheromone
    from src.pheromones.digital_pheromones import DigitalPheromone
       
    # Create a pheromone
    pheromone = DigitalPheromone(
        agent_id="agent_1",
        signal_type="knowledge",
        data={"topic": "AI", "confidence": 0.9},
        ttl=3600  # 1 hour
    )
       
    # Add to database
    db.add_pheromone(pheromone)
    

đŸ§Ș Tests

To run the tests:

pytest tests/ -v

📚 Documentation

The complete documentation is available on GitHub Pages:

https://neuroflux.github.io/neuroflux/

đŸ€ Contributing

See CONTRIBUTING.md to learn how to contribute.

📝 License

This project is under Apache 2.0 license. See LICENSE for details.