Bienvenue dans le guide de dĂ©marrage rapide de NeuroFlux ! Suivez ces Ă©tapes simples pour commencer Ă utiliser notre framework dâIA microscopique.
git clone https://github.com/neuroflux/neuroflux.git
cd neuroflux
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
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.
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 !")
Bien que NeuroFluxDataset
gĂ©nĂšre principalement des modĂšles TFLite optimisĂ©s, dâautres options existent :
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
from models.tinybert.model import TinyBERT
# Créer un modÚle
model = TinyBERT()
# Optimiser
model.optimize()
python wasm/tinybert_compile.py
from src.pheromones.digital_pheromones import PheromoneDatabase
# Initialiser la base
db = PheromoneDatabase()
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)
Pour exécuter les tests :
pytest tests/ -v
La documentation complĂšte est disponible sur GitHub Pages :
https://neuroflux.github.io/neuroflux/
Voir CONTRIBUTING.md pour savoir comment contribuer.
Ce projet est sous licence Apache 2.0. Voir LICENSE pour plus de détails.
git clone https://github.com/neuroflux/neuroflux.git
cd neuroflux
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
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.
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!")
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.
neuroflux/
âââ src/ # Source code
â âââ models/ # Nano-models
â âââ engines/ # Orchestration engines
â âââ pheromones/ # Pheromone system
âââ wasm/ # WebAssembly compilation
âââ docs/ # Documentation
âââ tests/ # Tests
from models.tinybert.model import TinyBERT
# Create a model
model = TinyBERT()
# Optimize
model.optimize()
python wasm/tinybert_compile.py
from src.pheromones.digital_pheromones import PheromoneDatabase
# Initialize the database
db = PheromoneDatabase()
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)
To run the tests:
pytest tests/ -v
The complete documentation is available on GitHub Pages:
https://neuroflux.github.io/neuroflux/
See CONTRIBUTING.md to learn how to contribute.
This project is under Apache 2.0 license. See LICENSE for details.