Cet exemple vous montre comment :
- Définir un jeu de données personnalisé pour les problèmes de régression. Nous implémentons le California Housing Dataset depuis HuggingFace hub. Le jeu de données est également disponible parmi les jeux de données de régression jouets dans sklearn datasets.
- Créer un pipeline de données depuis un jeu de données brut jusqu'à un DataLoader rapide par lots avec mise à l'échelle min-max des features.
- Définir un modèle de réseau de neurones simple pour la régression en utilisant les Modules Burn.
🦀 Il faut avoir Rust installé pour utiliser Burn. Allez-voir ici si ce n'est pas le cas.
🐍 Cet exemple utilise la bibliothèque
datasetsde HuggingFace pour télécharger les jeux de données. Assurez-vous d'avoir Python installé sur votre ordinateur.
🔥 Pour toute autre documentation, allez voir la documentation de Burn: le Burn Book
Installez et ouvrez le repertoire :
git clone https://github.com/cia-ulaval/tutoriel-burn.git
cd tutoriel-burnRegardez dans model.rs, la structure RegressionModel. Elle est composée de :
- 1 couche de neurones
- 1 couche d'activation
Les poids et biais de ces neurones sont entraînés avec l'entraînement décrit dans training.rs.
Utilisez le flag
--releasepour vraiment accélérer l'entraînement !
Exécuter avec ndarray, sur le CPU :
cargo run --features ndarray # Backend CPU NdArray - f32 - fil d'exécution uniqueExécuter sur n'importe quelle plateforme (GPU, CPU...) avec le backend wgpu :
cargo run --features wgpuExécuter sur un GPU NVIDIA avec le backend cuda :
Linux / macOS (bash) :
export TORCH_CUDA_VERSION=cu128
cargo run --features cudaWindows (PowerShell) :
$env:TORCH_CUDA_VERSION = "cu128"
cargo run --features cudaExecuter sur un GPU AMD avec le backend rocm :
echo "Utilisation du backend rocm"
cargo run --features rocm # Backend ROCMUtiliser tch backend (CUDA, Metal):
Linux / macOS (bash) :
export TORCH_CUDA_VERSION=cu128
cargo run --features tch-gpuWindows (PowerShell) :
$env:TORCH_CUDA_VERSION = "cu128"
cargo run --features tch-gpuEssayez de changer des propriétés du modèle dans model.rs. Que se passe-t-il si vous changez les choses suivantes ?
- Nombre de neurones dans la couche cachée
- Biais vs aucun biais
- La fonction d'activation (ReLU ? GeLU ? sigmoid ?)
Essayez d'ajouter une couche de neurones au réseau. Assurez-vous que tout compile encore !
Si vous êtes rendu ici, bravo ! Utiliser un nouveau language et une librarie complexe est une tâche compliquée.
Si vous avez le goût d'en faire plus, passez à l'étape 4...
Choisissez un défis parmi les suivants :
A — Dropout
Ajoutez une couche de Dropout entre deux couches de neurones. Consultez le Burn book pour un exemple. Observez : est-ce que la loss de validation s'améliore par rapport à la loss d'entraînement ?
B — Changer l'optimiseur
Dans training.rs, remplacez l'optimiseur actuel par Adam. Comparez la vitesse de convergence avec SGD. Lequel atteint une loss plus basse en 10 époques ?
Regardez ici pour un exemple.
C — Sauvegarder et recharger le modèle
Après l'entraînement, sauvegardez les poids avec le NamedMpkFileRecorder de Burn, puis rechargez-les dans un nouveau binaire pour faire des prédictions sans réentraîner. Regardez ici pour la documentation.