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.AppImage

Configuration 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_M

Phi-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_M

Techniques 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 lent

2. 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 2048

3. 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émoire

Partie 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 :

  1. Mauvaise Configuration de GRUB: Mauvais paramètre root=
  2. Partition EFI Manquante: Démarrage UEFI sans disque EFI
  3. Contrôleur de Disque Incompatible: Mauvais type de contrôleur SCSI
  4. 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 :

  1. Arrêter la VM

  2. Supprimer le disque existant

  3. Ajouter le disque avec la configuration correcte :

    • Bus/Périphérique: SCSI
    • Stockage: local-lvm
    • Contrôleur SCSI: VirtIO SCSI Single
    • iothread: ✓
  4. 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=1
  5. Redé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-XXXXXXXXXXXX

Leçons Clés du Débogage

  1. Lire Attentivement les Avertissements: L'avertissement iothread était l'indice critique
  2. Le Type de BIOS est Important: Impossible de basculer entre SeaBIOS et OVMF après l'installation
  3. Compatibilité du Contrôleur: VirtIO SCSI Single est requis pour les fonctionnalités avancées
  4. 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 :

  1. Vérifier les Avertissements Proxmox: Ne pas ignorer le texte jaune dans les journaux
  2. Vérifier la Compatibilité du Contrôleur: Faire correspondre le contrôleur aux fonctionnalités
  3. Tester l'Ordre de Démarrage: S'assurer que le disque est en premier dans la séquence de démarrage
  4. Vérifier la Configuration GRUB: Vérifier le paramètre root= dans la console VM
  5. 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 :

  1. Évaluation des Ressources: Comprendre les limitations matérielles et choisir des solutions appropriées (modèles 7B vs modèles 20B)
  2. 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.