Mes Aventures AI et Kali : Tests LLM et Débogage Proxmox
Aperçu de la Session
Cette session a combiné deux défis fascinants de l'homelab : tester le déploiement local de LLM (Large Language Model) sur du matériel limité, et déboguer une VM Kali Linux tenace qui refusait de démarrer sur Proxmox. Les deux problèmes ont fourni de précieuses leçons sur la gestion des ressources et le dépannage de la virtualisation.
Partie 1 : Tests LLM Locaux sur Matériel Grand Public
L'Objectif
Exécuter des LLM open-source localement sur un ThinkPad E14 Gen 2 pour : - Une assistance IA préservant la confidentialité - L'accès hors ligne aux capacités d'IA - L'apprentissage de la quantification et de l'optimisation des LLM - L'assistance à la complétion de code et au développement
Contraintes Matérielles
Spécifications du ThinkPad E14 Gen 2 : - CPU: Intel i5-1135G7 (4 cœurs, 8 fils d'exécution) - RAM: 16 GB DDR4 - Stockage: 256 GB SSD - GPU: Intel Iris Xe (intégrée, support Vulkan) - Limitations: Pas de GPU dédié, RAM limitée
Évaluation des Modèles LLM
Tentative 1 : GPT-OSS-20B
Spécifications du Modèle : - Taille: 21 milliards de paramètres - Quantification: 4-bit (Q4) - Taille du Fichier: ~12 GB - Licence: Apache 2.0 (utilisation commerciale autorisée)
Évaluation de la Compatibilité :
Exigences du Modèle:
├── VRAM: ~8 GB (GPU)
├── System RAM: ~16 GB minimum
├── Storage: 12 GB for model
└── Performance: Dedicated GPU recommended
Ressources Disponibles:
├── VRAM: ~2 GB (partagée avec le système)
├── System RAM: 16 GB (mais l'OS nécessite ~4 GB)
├── Storage: 256 GB (adéquat)
└── GPU: Integrated Iris Xe
Résultat: ❌ Incompatible
Raisons: 1. RAM Insuffisante: Le modèle consommerait ~12 GB, ne laissant que 4 GB pour l'OS 2. Pas de GPU Dédié: Iris Xe ne peut pas gérer efficacement un modèle de 20B de paramètres 3. Performance: Expérience de ralentissements extrêmes (10+ secondes par jeton) 4. Risque de Plantage du Système: Erreurs de mémoire saturée probables
Tentative 2 : Mistral 7B (Q4)
Options de Modèle Découvertes : 1. mistral-7b-ielts-evaluator-q4 (spécialisé pour l'évaluation IELTS) 2. Mistral-7B-Instruct-v0.1-Q4_K_M (usage général) ✓ Recommandé
Spécifications du Modèle : - Taille: 7 milliards de paramètres - Quantification: Q4_K_M (4-bit avec précision mixte) - Taille du Fichier: ~4.3 GB - Performance: Optimisé pour l'inférence CPU
Évaluation de la Compatibilité :
Exigences du Modèle:
├── RAM: ~6 GB (model + overhead)
├── Storage: 4.3 GB
├── CPU: Multi-core (4+ cores recommended)
└── Acceleration: AVX2, Vulkan optional
Ressources Disponibles:
├── RAM: 16 GB ✓
├── Storage: 256 GB ✓
├── CPU: i5-1135G7 (4 cores) ✓
└── Acceleration: AVX2 ✓, Vulkan ✓
Résultat: ✅ Compatible
Performance Attendue : - Jetons par seconde : 2-5 (CPU) - Temps de réponse : 10-30 secondes pour une requête typique - Utilisation de la mémoire : ~6 GB pendant l'inférence
Déploiement LLM avec LM Studio
Installation
# Download LM Studio
wget https://lmstudio.ai/download/linux/latest -O lmstudio.AppImage
# Make executable
chmod +x lmstudio.AppImage
# Run
./lmstudio.AppImageConfiguration pour les Systèmes à Faibles Ressources
Paramètres → Inférence : - Longueur du Contexte: 2048 (réduire par rapport à 4096 pour une inférence plus rapide) - Déchargement GPU (GPU Offload): 0 couches (CPU uniquement sur GPU intégré) - Fils d'exécution: 6 (laisser 2 cœurs pour le système) - Taille du Lot (Batch Size): 8 (plus faible = plus lent mais plus stable) - Utiliser mlock: ✓ (maintenir le modèle en RAM, empêcher l'échange)
Paramètres → Modèle : - Temperature: 0.7 - Top P: 0.9 - Repeat Penalty: 1.1
Options LLM Alternatives pour Matériel Restreint
TinyLlama 1.1B (Ultra-Léger)
Spécifications : - Taille: 1.1 milliard de paramètres - Taille du Fichier: ~700 MB (Q4) - Utilisation de la RAM: ~2 GB - Performance: 10-20 jetons/sec sur CPU
Cas d'Utilisation : - Complétion de code - Chat simple - Prototypage rapide
Installation :
# In LM Studio, search for:
TinyLlama-1.1B-Chat-v1.0-Q4_K_MPhi-2 (2.7B) - Microsoft
Spécifications : - Taille: 2.7 milliards de paramètres - Taille du Fichier: ~1.6 GB (Q4) - Utilisation de la RAM: ~3 GB - Performance: 5-10 jetons/sec
Avantages : - Entraîné sur des données de code et de raisonnement de haute qualité - Excellent pour les tâches de programmation - Architecture efficace
Installation :
# In LM Studio:
microsoft/phi-2-Q4_K_MTechniques d'Optimisation des Performances
1. Utiliser la Quantification
# Niveaux de Quantification (du plus au moins compressé):
Q2_K # 2-bit: Le plus rapide, qualité la plus faible
Q4_K_M # 4-bit: Équilibré (recommandé)
Q5_K_M # 5-bit: Meilleure qualité, plus lent
Q8_0 # 8-bit: Meilleure qualité, le plus lent2. Optimiser l'Inférence CPU
# Activer l'accélération AVX2
export OMP_NUM_THREADS=6
# Utiliser llama.cpp avec des optimisations
./main -m model.gguf \
-t 6 \
--mlock \
-ngl 0 \
--ctx-size 20483. Surveiller l'Utilisation des Ressources
# Installer des outils de surveillance
sudo apt install htop nvtop
# Surveiller pendant l'inférence
htop # CPU et RAM
watch -n 1 free -h # Utilisation de la mémoirePartie 2 : Débogage de VM Proxmox - Échec de Démarrage de Kali Linux
L'Erreur
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Analyse du Problème
Cette erreur cryptique indique que le noyau ne parvient pas à trouver ou à monter le système de fichiers racine. Causes courantes dans les environnements virtualisés :
- Mauvaise Configuration de GRUB: Mauvais paramètre
root= - Partition EFI Manquante: Démarrage UEFI sans disque EFI
- Contrôleur de Disque Incompatible: Mauvais type de contrôleur SCSI
- Initramfs Corrompu: Pilotes manquants dans le ramdisk initial
Processus de Débogage
Étape 1 : Vérifier le Type de BIOS
Configuration Initiale : - BIOS: SeaBIOS (BIOS hérité) - Type de Machine: i440fx - Disque: SCSI avec iothread activé
Avertissement Rencontré :
WARN: iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
Problème: Le type de contrôleur SCSI ne prend pas en charge iothread, mais l'avertissement a été ignoré lors de la création de la VM.
Étape 2 : Essayer le Démarrage OVMF (UEFI)
Modifications Apportées : 1. BIOS: SeaBIOS → OVMF (UEFI) 2. Ajout du Disque EFI via Matériel → Ajouter → Disque EFI 3. Type de Machine: i440fx → q35 (jeu de puces moderne)
Résultat: ❌ N'a toujours pas réussi à démarrer
Analyse: OVMF nécessite une disposition de partition spécifique et un chargeur de démarrage EFI installé pendant l'installation de l'OS. Changer le type de BIOS après l'installation ne fonctionne pas.
Étape 3 : Corriger le Contrôleur SCSI
Cause Profonde Identifiée :
L'avertissement concernant iothread était critique : - iothread nécessite le contrôleur VirtIO SCSI Single - La VM utilisait le contrôleur SCSI standard - Le noyau ne pouvait pas communiquer correctement avec le disque
Résolution :
Arrêter la VM
Supprimer le disque existant
Ajouter le disque avec la configuration correcte :
- Bus/Périphérique: SCSI
- Stockage: local-lvm
- Contrôleur SCSI: VirtIO SCSI Single
- iothread: ✓
Mettre à Jour la Configuration de la VM :
# Modifier la configuration de la VM nano /etc/pve/qemu-server/101.conf # S'assurer que le contrôleur est correctement défini: scsihw: virtio-scsi-single # Vérifier que le disque utilise le contrôleur correct: scsi0: local-lvm:vm-101-disk-0,iothread=1Redémarrer la VM
Résultat: ✅ Démarrage Réussi !
Configuration Finale Fonctionnelle
# /etc/pve/qemu-server/101.conf
agent: 1
bios: seabios
boot: order=scsi0;ide2
cores: 4
cpu: host
ide2: local:iso/kali-linux-2024.4-installer-amd64.iso,media=cdrom
machine: i440fx
memory: 8192
name: kali-pentest
net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr1,firewall=0
numa: 0
ostype: l26
scsi0: local-lvm:vm-101-disk-0,iothread=1,size=80G
scsihw: virtio-scsi-single
smbios1: uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
sockets: 1
vmgenid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXLeçons Clés du Débogage
- Lire Attentivement les Avertissements: L'avertissement iothread était l'indice critique
- Le Type de BIOS est Important: Impossible de basculer entre SeaBIOS et OVMF après l'installation
- Compatibilité du Contrôleur: VirtIO SCSI Single est requis pour les fonctionnalités avancées
- Type de Machine: q35 pour le matériel moderne, i440fx pour la compatibilité
Recommandations pour des Configurations Similaires
Pour les Tests LLM sur Matériel Limité :
Modèles Recommandés (par cas d'utilisation) :
Tâches Légères (2-4 GB de RAM disponibles):
├── TinyLlama 1.1B (~700 MB, rapide)
└── Phi-2 2.7B (~1.6 GB, bon pour le code)
Tâches Moyennes (6-8 GB de RAM disponibles):
├── Mistral 7B Q4 (~4.3 GB, équilibré)
├── Llama 2 7B Q4 (~3.8 GB, usage général)
└── CodeLlama 7B Q4 (~4.3 GB, axé sur le codage)
Tâches Lourdes (12+ GB de RAM disponibles):
└── Mettre à niveau le matériel ou utiliser des services cloud
Liste de Contrôle d'Optimisation : - [ ] Utiliser la
quantification Q4 pour le meilleur équilibre taille/qualité - [ ] Activer
l'accélération CPU AVX2 - [ ] Définir la longueur du contexte à 2048 pour
une inférence plus rapide - [ ] Utiliser 75 % des fils d'exécution CPU
disponibles - [ ] Surveiller l'utilisation de la RAM avec htop -
[ ] Envisager un SSD externe si le stockage est limité
Pour la Configuration de VM Proxmox :
Meilleures Pratiques :
SeaBIOS (Démarrage Hérité):
├── Machine: i440fx
├── SCSI Controller: VirtIO SCSI Single
├── Disk: SCSI with iothread=1
└── Utiliser pour: Linux, OS plus anciens
OVMF (Démarrage UEFI):
├── Machine: q35
├── Ajouter un Disque EFI lors de la création de la VM
├── SCSI Controller: VirtIO SCSI Single
└── Utiliser pour: OS modernes, Windows, démarrage sécurisé
Flux de Travail de Dépannage :
- Vérifier les Avertissements Proxmox: Ne pas ignorer le texte jaune dans les journaux
- Vérifier la Compatibilité du Contrôleur: Faire correspondre le contrôleur aux fonctionnalités
- Tester l'Ordre de Démarrage: S'assurer que le disque est en premier dans la séquence de démarrage
- Vérifier la Configuration GRUB: Vérifier le paramètre root= dans la console VM
- Utiliser des Captures Instantanées (Snapshots): Avant d'apporter des modifications majeures à la configuration
Outils et Ressources
Outils LLM :
- LM Studio: GUI conviviale pour la gestion des modèles
- llama.cpp: Moteur d'inférence en ligne de commande
- Ollama: Déploiement LLM basé sur Docker
- Jan AI: Alternative légère à LM Studio
Débogage Proxmox :
- Journaux Système:
/var/log/pve/tasks/ - Journaux VM:
/var/log/qemu-server/ - Configuration:
/etc/pve/qemu-server/
Conclusion
Cette session a démontré deux compétences essentielles de l'homelab :
- Évaluation des Ressources: Comprendre les limitations matérielles et choisir des solutions appropriées (modèles 7B vs modèles 20B)
- Débogage Systématique: Suivre les messages d'erreur et les avertissements pour identifier les causes profondes (iothread + compatibilité du contrôleur)
Les deux défis ont renforcé l'importance de : - Lire la documentation en profondeur - Surveiller les contraintes de ressources - Tester progressivement - Documenter les configurations
La VM Kali fonctionnelle et la configuration LLM opérationnelle fournissent une base solide pour la future recherche en sécurité et le travail de développement assisté par IA.
Prochaines étapes : Intégrer Mistral 7B aux flux de travail de codage et déployer des VM vulnérables pour la pratique du pentesting Kali.