Files
MyMobileAgent/app/src/screens/LocalModelsScreen/modelConfig/paramInfo/loading.ts
Jonathan Atta da373199e0 Initial commit
2026-03-03 10:33:56 +01:00

166 lines
8.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { ParamInfoEntry } from './types';
export const loadingParamInfo: Record<string, ParamInfoEntry> = {
systemPrompt: {
title: 'Prompt Système',
description:
"Message de contexte envoyé au modèle avant toute conversation. Définit le rôle, le comportement et les contraintes de l'assistant.",
impact:
"Influence directement la personnalité et la pertinence des réponses. Un bon prompt système améliore considérablement la qualité globale.",
usage:
'Ex: "Tu es un expert Python, concis et précis." Sois explicite sur le ton, la langue, et les limites du modèle.',
},
n_ctx: {
title: 'Fenêtre Contextuelle (n_ctx)',
description:
"Nombre maximum de tokens que le modèle peut « voir » simultanément — historique + prompt + réponse inclus.",
impact:
"🧠 RAM : chaque doublement de n_ctx ~×2 la mémoire du KV cache. Trop grand → crash OOM. ⚡ Vitesse : légèrement plus lent à grands contextes.",
usage:
'5122 048 pour petits appareils. 4 0968 192 si la RAM le permet. Ne jamais dépasser le contexte max du modèle (visible dans ses infos).',
},
n_batch: {
title: 'Batch Size (n_batch)',
description:
`Nombre de tokens traités en parallèle lors de l'évaluation initiale du prompt (phase "prefill").`,
impact:
'⚡ Vitesse : plus grand = traitement du prompt plus rapide. 🧠 RAM : légèrement plus élevée. Impact nul sur la vitesse de génération token-by-token.',
usage:
'128512 est idéal sur mobile. Dépasse rarement n_ctx. Valeur par défaut : 512.',
},
n_ubatch: {
title: 'Micro-batch (n_ubatch)',
description:
'Sous-division interne de n_batch pour les opérations matricielles. Doit être ≤ n_batch.',
impact:
'🧠 Équilibre vitesse/mémoire des opérations GPU/CPU bas-niveau. Rarement nécessaire de modifier.',
usage:
'Laisser vide (= n_batch par défaut). Utile pour optimiser finement sur du matériel spécifique.',
},
n_threads: {
title: 'Threads CPU (n_threads)',
description: "Nombre de threads CPU alloués à l'inférence.",
impact:
`⚡ Plus de threads = plus rapide (jusqu'à un plateau). Trop de threads → contention et ralentissement. 🔋 Consommation CPU proportionnelle.`,
usage:
'Règle : moitié des cœurs physiques (ex : 8 cœurs → 4 threads). 0 = auto-détection. Tester 2, 4, 6 et mesurer.',
},
n_gpu_layers: {
title: 'Couches GPU (n_gpu_layers)',
description:
'(iOS uniquement) Nombre de couches Transformer offloadées sur le GPU / Neural Engine.',
impact:
'⚡ Chaque couche sur GPU accélère significativement la génération. 🔋 Légèrement plus de consommation batterie. 🧠 Réduit la RAM CPU utilisée.',
usage:
'Commencer par 1, monter progressivement. Valeur max = nb total de couches du modèle. 0 = CPU uniquement (Android toujours CPU).',
},
flash_attn: {
title: 'Flash Attention',
description:
"Algorithme d'attention optimisé qui calcule l'attention par blocs pour réduire drastiquement la mémoire du KV cache.",
impact:
'🧠 Réduit la VRAM KV de ~3050%. ⚡ Gain de vitesse notable sur longs contextes. Recommandé avec n_gpu_layers > 0.',
usage:
"Activer avec GPU. Sur CPU pur, gain/perte variable selon l'appareil — tester les deux.",
},
cache_type_k: {
title: 'Type KV Cache K',
description:
"Type de données des matrices K (Key) du cache d'attention. Contrôle la précision vs mémoire des clés.",
impact:
'🧠 f16 : qualité max, RAM max. q8_0 : 50% RAM, perte qualité négligeable. q4_0 : 75% RAM, légère dégradation possible.',
usage:
'f16 par défaut. Utiliser q8_0 si RAM insuffisante pour un grand contexte. q4_0 seulement pour RAM très contrainte.',
},
cache_type_v: {
title: 'Type KV Cache V',
description:
"Type de données des matrices V (Value) du cache d'attention. Le cache V est plus sensible à la quantification que K.",
impact:
'🧠 Même économies mémoire que cache_type_k mais impact qualité légèrement plus fort. Quantifier K avant V.',
usage:
'Garder f16 si possible. Passer à q8_0 uniquement si cache_type_k est déjà q8_0 et que la RAM reste insuffisante.',
},
use_mlock: {
title: 'Verrouillage RAM (use_mlock)',
description:
'Verrouille les pages mémoire du modèle en RAM physique pour empêcher le système de les swapper sur disque.',
impact:
'⚡ Élimine les pics de latence dus au swap. 🧠 Nécessite que le modèle tienne entièrement en RAM — crash si insuffisant.',
usage:
"Activer si le modèle tient en RAM. Désactiver sur appareils avec peu de RAM pour éviter les erreurs de chargement.",
},
use_mmap: {
title: 'Memory-Map (use_mmap)',
description:
"Mappe le fichier modèle en mémoire virtuelle sans le copier entièrement en RAM. Le système charge les pages à la demande.",
impact:
`⚡ Démarrage très rapide. 🧠 Le système peut swapper les pages non utilisées — des accès disque peuvent survenir pendant l'inférence.`,
usage:
'Activer (défaut). Désactiver uniquement si vous avez assez de RAM et voulez éviter tout accès disque pendant la génération.',
},
rope_freq_base: {
title: 'RoPE Base Frequency',
description:
"Fréquence de base des embeddings positionnels RoPE. Contrôle la plage de positions que le modèle peut distinguer.",
impact:
`📐 Augmenter étend la fenêtre contextuelle effective au-delà de la limite d'entraînement. Trop élevé → dégradation qualité.`,
usage:
'Laisser à 0 (auto). Pour étendre le contexte : new_base ≈ original_base × (new_ctx / train_ctx). Ex : 10 000 → 80 000 pour ×8 contexte.',
},
rope_freq_scale: {
title: 'RoPE Frequency Scale',
description:
"Facteur de scaling appliqué aux fréquences RoPE. Alternative/complément à rope_freq_base pour l'extension de contexte.",
impact:
'📐 < 1 compresse les fréquences, permettant un contexte plus long. Ex : 0.5 = contexte ×2. Trop bas → perte de cohérence sur longues distances.',
usage:
'Laisser à 0 (auto). Utiliser conjointement à rope_freq_base pour un contrôle précis. Rarement nécessaire si le modèle gère déjà un long contexte.',
},
ctx_shift: {
title: 'Context Shifting',
description:
"Lorsque le contexte est plein, décale automatiquement la fenêtre en supprimant les anciens tokens pour continuer à générer.",
impact:
'⚡ Conversations potentiellement infinies sans erreur. 📉 Les informations très anciennes sont progressivement perdues.',
usage:
'Activer pour des conversations longues (défaut recommandé). Désactiver si vous préférez une erreur explicite quand le contexte est saturé.',
},
kv_unified: {
title: 'KV Cache Unifié',
description:
`Utilise un buffer KV partagé pour toutes les séquences parallèles lors du calcul de l'attention.`,
impact:
'⚡ Améliore les performances quand n_parallel=1 et que les séquences partagent un long préfixe. Contre-productif avec n_parallel > 1 et préfixes différents.',
usage:
'Activer (défaut) pour un usage standard à séquence unique. Désactiver si n_parallel > 1 et séquences indépendantes.',
},
n_cpu_moe: {
title: 'Couches MoE sur CPU (n_cpu_moe)',
description:
'Nombre de couches MoE (Mixture of Experts) maintenues en RAM CPU plutôt que sur GPU. Pertinent pour Mixtral, Qwen-MoE, etc.',
impact:
`🧠 Réduit l'usage VRAM pour les modèles MoE. ⚡ Ralentit légèrement ces couches (transfert CPU↔GPU). 0 = tout sur GPU.`,
usage:
'Laisser à 0 sauf si vous utilisez un modèle MoE et que vous rencontrez des OOM GPU. Augmenter progressivement.',
},
cpu_mask: {
title: 'Masque CPU (cpu_mask)',
description:
"Spécifie quels cœurs CPU utiliser pour l'inférence via un masque d'affinité de cœurs.",
impact:
'⚡ Permet de dédier les cœurs haute-performance (Big cores) au modèle sur architectures big.LITTLE/DynamIQ (Snapdragon, Apple).',
usage:
'Format : "0-3" (cœurs 0 à 3) ou "0,2,4,6" (cœurs spécifiques). Vide = tous les cœurs disponibles (défaut).',
},
n_parallel: {
title: 'Séquences Parallèles (n_parallel)',
description:
'Nombre maximum de séquences traitées en parallèle dans le même contexte (slots parallèles).',
impact:
'🧠 RAM KV cache × n_parallel. Nécessaire pour le mode parallel.completion(). Inutile pour usage conversationnel standard.',
usage:
'Garder à 1 (défaut) pour usage standard. Augmenter uniquement si vous utilisez parallel.completion() pour des requêtes concurrentes.',
},
};