Optimisation Avancée d’Ollama sur HP ProLiant DL380 Gen9 avec Tesla P40
Un rapport détaillé du Labo SysOps.fr sur l’optimisation des LLM
Ce rapport exhaustif présente les résultats d’une série de tests d’optimisation méticuleux, menés par le **Labo SysOps.fr**, visant à maximiser les performances des Modèles de Langage de Grande Taille (LLM) Qwen exécutés via Ollama. Les expérimentations ont été réalisées sur un serveur HP ProLiant DL380 Gen9, une plateforme robuste typique des environnements de production.
1. Contexte du Test et Environnement Matériel
La compréhension de l’infrastructure sous-jacente est essentielle pour interpréter les résultats d’optimisation. Voici les spécifications détaillées du serveur utilisé :
Vue illustrative d’un serveur HP ProLiant DL380 Gen9.
1.1. Spécifications Détaillées du Serveur HP ProLiant DL380 Gen9
- Modèle du Serveur : HP ProLiant DL380 Gen9
- Identifiants :
- UUID : 35333438-3635-5A43-4A37-323730424737
- Numéro de Série : CZJ7270BG7
- ID Produit : 843556-425
- BIOS (System ROM) : P89 v2.42 (04/25/2017)
- Processeurs (CPU) : 2 x Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
- Architecture : 8 cœurs physiques / 16 threads logiques par CPU (total : 16 cœurs / 32 threads)
- Cache L1 : 512 KB par processeur
- Cache L2 : 2048 KB par processeur
- Cache L3 : 20480 KB par processeur
- Mémoire Vive (RAM) : 80 GB DDR4 (48 GB sur CPU1, 32 GB sur CPU2) cadencée à 2133 MHz (DIMMs de 2400 MHz, opérant à 2133 MHz)
- Cartes Graphiques (GPU) : 2 x NVIDIA Tesla P40
- VRAM par GPU : 24576 MiB (environ 24 GB)
- Version du pilote NVIDIA : 575.51.03
- Version CUDA : 12.9
- Alimentation : Système redondant (2 x 500 Watts), lecture de puissance actuelle : 210 Watts.
- iLO (Integrated Lights-Out) : Version 2.53 (03 mai 2017), IP : 10.12.75.10.
1.2. Logiciel d’Inférence
L’outil principal utilisé pour le déploiement et l’exécution des LLM est Ollama. Les tests ont été spécifiquement menés avec la **version 0.7.0 d’Ollama**, en se concentrant sur l’optimisation des modèles de la famille Qwen. Les configurations d’optimisation ont été appliquées en modifiant les variables d’environnement au sein du fichier de service /etc/systemd/system/ollama.service
.
2. Modèles de Langage (LLM) Testés
Afin d’évaluer l’impact des différents niveaux de quantification et de la taille du contexte, deux variantes du modèle Qwen 14 milliards de paramètres ont été sélectionnées :
Qwen3-q4_K_M64K:14b
:- Quantification : 4-bit (
q4_K
), offrant un bon compromis entre taille et performance. - Contexte : Conçu pour un contexte maximal de 64 000 tokens.
- Caractéristiques : Plus léger en taille de fichier, généralement plus rapide en inférence.
- Quantification : 4-bit (
Qwen3-Q8_0:14b
:- Quantification : 8-bit (
Q8_0
), offrant une meilleure fidélité et qualité de réponse. - Contexte : Testé avec des versions compilées pour des contextes de 40 000 et 64 000 tokens.
- Caractéristiques : Plus volumineux, potentiellement plus lent mais plus précis.
- Quantification : 8-bit (
3. Variables d’Environnement Ollama Explorées
Les variables d’environnement ajustées dans le fichier ollama.service
ont permis d’explorer divers leviers d’optimisation :
Environment="OLLAMA_HOST=0.0.0.0:11434"
: Définit l’adresse d’écoute du service Ollama.Environment="CUDA_VISIBLE_DEVICES=0,1"
: Spécifie l’utilisation des deux GPU (Tesla P40) pour l’inférence.Environment="OLLAMA_KEEP_ALIVE=-1"
: Maintient le modèle chargé en mémoire GPU indéfiniment après la première utilisation, réduisant les temps de chargement ultérieurs.OLLAMA_NUM_PARALLEL
: Ce paramètre gère le nombre d’opérations parallèles. Il a été testé avec une valeur de `2` et en étant non défini.OLLAMA_FLASH_ATTENTION
: Défini sur `1` pour activer l’optimisation Flash Attention, ou désactivé (commenté). Cette technique est cruciale pour l’efficacité des calculs d’attention sur de longs contextes.OLLAMA_KV_CACHE_TYPE
: Ce paramètre permet de quantifier le cache Key-Value (KV) du modèle, influençant la consommation de VRAM et potentiellement la vitesse. Les options testées incluent `Q8_0`, `q4_K_M`, ou l’absence de définition.
4. Résultats Détaillés des Configurations de Test
Le tableau suivant compile les métriques de performance obtenues pour chacune des huit configurations testées. Les valeurs clés sont mises en évidence pour une meilleure lisibilité.
Config | Modèle (Contexte) | OLLAMA_NUM_PARALLEL |
OLLAMA_FLASH_ATTENTION |
OLLAMA_KV_CACHE_TYPE |
VRAM (SIZE) | Total Duration | Prompt Eval Count | Prompt Eval Rate | Eval Count | Eval Rate |
---|---|---|---|---|---|---|---|---|---|---|
**1** | Qwen3-q4_K_M64K (64K) | 2 |
1 |
Q8_0 |
39 GB | 56.85s | 14 | 605.56 t/s | 575 | 10.13 t/s |
**2** | Qwen3-q4_K_M64K (64K) | (non défini) |
1 |
(non défini) |
39 GB | 27.89s | 14 | 75.39 t/s | 603 | 21.81 t/s |
**3** | Qwen3-q4_K_M64K (64K) | (non défini) |
1 |
Q8_0 |
19 GB | 26.65s | 14 | 79.47 t/s | 561 | 21.23 t/s |
**4** | Qwen3-q4_K_M64K (64K) | (non défini) |
1 |
q4_K_M |
39 GB | 24.95s | 14 | 68.84 t/s | 542 | 21.95 t/s |
**5** | Qwen3-q4_K_M64K (64K) | (non défini) |
(désactivé) |
Q8_0 |
39 GB | 24.41s | 14 | 62.20 t/s | 508 | 21.06 t/s |
**6** | Qwen3-Q8_0 (40K) | (non défini) |
1 |
Q8_0 |
22 GB | 39.57s | 14 | 77.76 t/s | 611 | 15.53 t/s |
**7** | Qwen3-Q8_0 (64K) | (non défini) |
1 |
Q8_0 |
46 GB | 54.23s | 816 | 20906.94 t/s | 791 | 14.63 t/s |
**8** | Qwen3-Q8_0 (64K) | (non défini) |
1 |
(non défini) |
46 GB | 43.42s | 87 | 4382.43 t/s | 683 | 15.76 t/s |
5.5. Visualisation des Performances Clés
Pour une meilleure compréhension visuelle, le graphique ci-dessous compare la durée totale d’inférence et la consommation de VRAM pour les configurations les plus pertinentes.
6. Stratégies d’Optimisation Recommandées par le Labo SysOps.fr
En synthèse, voici les configurations optimales, à appliquer dans le fichier /etc/systemd/system/ollama.service
, adaptées à différents scénarios d’utilisation sur votre serveur HP ProLiant DL380 Gen9 avec 2x Tesla P40 :
6.1. Priorité à l’Efficacité VRAM Maximale et à un Excellent Équilibre Vitesse/Qualité
Cette configuration est idéale pour maximiser l’utilisation de vos GPU Tesla P40, permettant potentiellement d’exécuter plusieurs modèles ou d’autres charges de travail si la VRAM est une contrainte.
Modèle : Qwen3-q4_K_M64K:14b
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="CUDA_VISIBLE_DEVICES=0,1"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=Q8_0"
# NE PAS définir OLLAMA_NUM_PARALLEL
- **Bénéfices :** Consommation de seulement **19 GB VRAM** (permettant potentiellement un modèle par GPU), un
eval rate
de **21.23 tokens/s** et une très bonne vitesse d’évaluation du prompt.
6.2. Priorité à la Vitesse Maximale de Génération (pour le modèle q4_K
)
Si la vitesse pure est la priorité pour le modèle 4-bit et que la VRAM de vos deux Tesla P40 peut être dédiée à un seul modèle (environ 39 GB), cette configuration est la plus performante.
Modèle : Qwen3-q4_K_M64K:14b
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="CUDA_VISIBLE_DEVICES=0,1"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q4_K_M"
# NE PAS définir OLLAMA_NUM_PARALLEL
- **Bénéfices :** Le
eval rate
le plus élevé de tous les tests à **21.95 tokens/s**. - **Compromis :** Nécessite 39 GB de VRAM, utilisant la quasi-totalité de la mémoire combinée des deux Tesla P40.
6.3. Priorité à la Qualité du Modèle 8-bit et au Traitement de Prompts Très Longs
Cette configuration est destinée aux cas d’usage où la fidélité des réponses du modèle 8-bit et la capacité à ingérer des prompts très longs sont des impératifs, même au prix d’une consommation de VRAM plus élevée et d’une vitesse de génération légèrement inférieure.
Modèle : Qwen3-Q8_0:14b
(contexte 64K)
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="CUDA_VISIBLE_DEVICES=0,1"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_FLASH_ATTENTION=1"
# NE PAS définir OLLAMA_KV_CACHE_TYPE pour ce modèle (important !)
# NE PAS définir OLLAMA_NUM_PARALLEL
- **Bénéfices :** Taux d’évaluation de prompt exceptionnel pour les longs prompts (20906.94 t/s), potentiellement meilleure qualité de réponse grâce à la quantification 8-bit. Un
eval rate
de 15.76 tokens/s. - **Compromis :** Consommation de **46 GB VRAM**, ce qui implique que ce modèle seul peut monopoliser les ressources de vos deux P40.
En conclusion, cette série de tests approfondis, réalisée par le **Labo SysOps.fr**, a permis d’acquérir une compréhension fine des interactions entre la configuration logicielle d’Ollama et les capacités de votre matériel. En choisissant la configuration appropriée en fonction de vos priorités (mémoire, vitesse de prompt, vitesse de génération), vous pouvez optimiser significativement les performances de vos applications LLM sur votre serveur HP ProLiant DL380 Gen9.