Ceci est une ancienne révision du document !
Table des matières
AI Language Model
Les modèles d’intelligence artificielle (IA), des simples algorithmes de régression jusqu’aux réseaux neuronaux complexes utilisés dans l’apprentissage profond, fonctionnent grâce à une logique mathématique. Toutes les données utilisées par un modèle d’intelligence artificielle, y compris les données non structurées comme le texte, l’audio ou les images, doivent être exprimées sous forme numérique. Le plongement vectoriel, ou représentation vectorielle, est une méthode qui permet de convertir un point de données non structuré en un tableau de nombres, tout en conservant la signification originale des données.
Autres pages:
- AI NLP (Natural Language Processing / traitement automatique du langage naturel)
Glossaire
- LLM/SLM Large Language Model / Small Language Model
- LoRA (Low-Rank Adaptation): une méthode permet de “spécialiser” un peu un modèle est ajoutant des couches légères (qlqs Mo) et adaptables à un modèle pré-entraîné, au lieu de modifier tous ses poids ; 0,1% à 1% des paramètres du modèle sont entraînés. Le modèle de base reste inchangé, LoRA peut être désactivé.
- Axolotl A Free and Open Source LLM Fine-tuning Framework
- techniques pour améliorer la gestion des longs textes
- YaRN (Yet Another Recurrent Network): une technique pour améliorer la gestion des textes longs par les LLMs sans nécessiter de réentraînement complet ou de modifications lourdes, seules quelques couches sont ajustées. Vise à étendre la fenêtre de contexte (context window) des LLMs, passer de 4k à 128k tokens. Autres techniques: ALiBi, NTK-aware scaling.
- RoPE (Rotary Position Embedding): technique pour intégrer des informations de position dans les séquences de tokens, tout en permettant une meilleure généralisation à des longueurs de texte variables. Contrairement aux méthodes comme les embeddings de position absolus (BERT), RoPE utilise une représentation relative et rotative des positions qui améliore la capacité des modèles à comprendre les relations entre les tokens, même sur de longues distances.
- RoPE + YaRN : RoPEE Fournit la base mathématique pour comprendre les positions relatives et YaRN étend cette base pour permettre des fenêtres de contexte encore plus grandes
- ALiBi … technique plus ancienne que les 2 précédentes …
- GGUF (GPT-Generated Unified Format): format binaire optimisé pour l’inférence (exécution de modèles), développé par la communauté open-source, notamment par ggerganov le créateur de Llama.cpp. Remplace l’ancien format GGML.
- afficher les metadata du fichier: gpustack/gguf-parser-go
- Autres formats: PyTorch, ONNX, TensorRT, GGML (déprécié)
- MoE (Mixture of Experts): architecture de modèle où plusieurs “experts” (sous-réseaux spécialisés) sont activés de manière conditionnelle pour traiter différentes parties des données.
- Le modèle est composé de plusieurs sous-réseaux appelés “experts”.
- Un générateur de sélection (router) détermine quels experts utiliser pour chaque entrée.
- permet de réduire le coût de calcul en ne passant les données que par un sous-ensemble des experts.
- MCP Model Context Protocol, voir MCP Server
Classification de modèles ouverts: Foundation models by Ibm
Comment faire pour qu'un appel à un LLM ait un résultat reproductible d'une fois sur l'autre ?
Sur les perfs
Estimations
Devstral avec llama.cpp sur RTX 3060 12 Go.
by ChatGPT :
| Modèle | Contexte (seq_len) | Batch_size recommandé | Remarques |
| —————– | —————— | ——————— | —————————————- |
| Devstral Small 7B | 1024 | 4 | Très sûr, VRAM ample |
| Devstral Small 7B | 2048 | 2‑3 | Bon compromis vitesse/VRAM |
| Devstral Small 7B | 4096 | 1‑2 | VRAM presque saturée |
| Devstral 13B | 1024 | 2 | VRAM limitée |
| Devstral 13B | 2048 | 1‑2 | Optimal, attention VRAM |
| Devstral 13B | 4096 | 1 | VRAM saturée, offload CPU conseillé |
| Devstral 13B | 8192 | 1 | Possible mais contexte long → risque OOM |
by LeChat:
| contexte (tokens) | modèle (paramètres) | VRAM estimée (Go) | Batch size optimal | Latence estimée (tok/s) | Notes |
| 512 | 7B | ~5.5 | 8 | 15-25 | Idéal pour des tâches courtes et rapides. |
| 1024 | 7B | ~6.0 | 4 | 10-20 | Bon compromis pour des prompts moyens. |
| 2048 | 7B | ~7.0 | 2 | 5-15 | Nécessite une gestion fine de la VRAM. |
| 4096 | 7B | ~8.5 | 1 | 3-10 | Proche de la limite VRAM, risque de ralentissement. |
| 512 | 13B | ~9.0 | 4 | 8-15 | Modèle plus gros, latence accrue. |
| 1024 | 13B | ~10.0 | 2 | 4-10 | VRAM presque saturée, batch_size réduit. |
| 2048 | 13B | ~11.5 | 1 | 2-8 | Risque élevé de dépassement VRAM, latence importante. |
Online services
launch a opencode server :
opencode serve --port=30781 --print-logs --log-level DEBUG
Then prompt : “Explain async/await in JavaScript”
with:
time opencode run -m <ProviderId/ModelId> --attach=http://127.0.0.1:30781 --agent=plan "Explain async/await in JavaScript"
👾 Attention, les résultats peuvent être très différents:
- d'une simple phrase de définition à un exemple de code
- mais je n'ai pas modifier la taille du
context, ce qui a une grande importance sur la taille/qualité de la réponse …
- aussi, le
system message promptest sélectionné par opencode …
- ovhcloud/Qwen3-Coder-30B-A3B-Instruct = 2,008s / 3,100s
- ovhcloud/gpt-oss-20b = 14,219s / 21,714s
- ovhcloud/Mistral-Nemo-Instruct-2407 = abandon après 7 minutes d'attente …
- ovhcloud/DeepSeek-R1-Distill-Llama-70B = 22,301s / 29,187s
- opencode/big-pickle = 2,858s / 3,479s
- mistral-codestral/codestral-latest = 2,320s / 3,427s
Cartes IA
Hailo
- packaging in a box with a Raspberry by SeedStudio, 26 TOPS, 15 GB RAM - $289
Axelera
seeedstudio
- reComputer Mini J4012 is a tiny AI computer powered by NVIDIA® Jetson Orin™ NX 16GB module,delivering up to 100 TOPS AI performance - $900
Ollama & Nvidia Jetpack
- pour plus de performance utiliser NanoLLM - Optimized LLM Inference
- Ollama uses llama.cpp for inference, which various API benchmarks and comparisons are provided for on the Llava page. It gets roughly half of peak performance versus the faster APIs like NanoLLM , but is generally considered fast enough for text chat.
Nvidia
- A10
| A 10 | A 30 | A 40 | A 100 SXM4 | A 800 | H 100 SMX5 | |
|---|---|---|---|---|---|---|
| Prix eBay | $2,330 | $3,999 | $9,950 | $4,000 | $20,000 | $20,000 |
| Architecture | Ampere | Ampere | Ampere | Ampere | Ampere | Hopper |
| Code name | GA102 | GA100 | GA102 | GA100 | GA100 | GH100 |
| Launch date | 2021-04 | 2021-04 | 2020-10 | 2020-05 | 2022-11 | 2022-03 |
| Maximum RAM | 24 GB | 24 GB | 48 GB | 40 GB | 40 GB | 96 GB |
| Memory type | GDDR6 | HBM2e | GDDR6 | HBM2e | HBM2e | HBM3 |
| Memory bandwidth | 600.2 GB/s | 933.1 GB/s | 695.8 GB/s | 1555 GB/s | 1.56 TB/s | 1,681 GB/s |
| Memory bus width | 384 bit | 3072 bit | 384 bit | 5120 bit | 5120 bit | 5120 bit |
| Memory clock speed | 1563 MHz | 1215 MHz | 1812 MHz | 1215 MHz | 1215 MHz | 1313 MHz |
| Core clock speed | 885 MHz | 930 MHz | 1305 MHz | 1095 MHz | 765 MHz | 1837 MHz |
| Boost clock speed | 1695 MHz | 1440 MHz | 1740 MHz | 1410 MHz | 1410 MHz | 1665 MHz |
| Peak Half Precision (FP16) | 31.24 TFLOPS (1:1) | 10.32 TFLOPS (1:1) | 37.42 TFLOPS (1:1) | 77.97 TFLOPS (4:1) | ||
| Pipelines | 9216 | 3584 | 10752 | 6912 | 6912 | 16896 |
| Thermal Design Power | 150 Watt | 165 Watt | 300 Watt | 400 Watt | 250 Watt | 700 Watt |
| OpenCL | 3.0 | 3.0 | 3.0 | 3.0 |
- NVIDIA DGX Spark ($4,000) : GB10 Grace Blackwel, 1 FP4 PFLOPS, 128GB, ConnectX-7 Smart NIC, 4TB NVME.M2 with self-encryption
Cartes graphiques
Nvidia
- RTX 3060
- CUDA GPU Compute Capability: 8.6
- RTX 5060 TI 16 Go 475€ TTC chipset.fr
- CUDA GPU Compute Capability: 12.0
- pny-rtx-5060ti-16go-overclocked 445€ TTC grosbill.com
Tips: Reset nvidia et CUDA:
# éteindre la carte # débrancher THB $ sudo rmmod nvidia_uvm nvidia
Adaptateur GPU externe
En anglais “GPU enclosures”. Nécessite un port Thunderbolt 3, 4 ou à venir 5.
egpu docks
Accelerating Machine Learning on a Linux Laptop with an External GPU by NVidia (Setting up Ubuntu to use NVIDIA eGPU)
Models servers
llama.cpp
https://github.com/ggml-org/llama.cpp
Lancer le serveur avec un modèle en local:
./bin/llama-server -m devstralQ5_K_M.gguf --port 8012 --jinja --ctx-size 20000 ~/Code/bronx/AI_Coding/llama.cpp/build/bin/llama-server --port 8012 --chatml -m ~/Data/AI_Models/Qwen2.5-coder-7b-instruct-q8_0.gguf --ctx-size 48000
Quid des chat formats ? Est-ce lié au modèle ?
--jinja--chatml
$ llama-server --help
...
--chat-template JINJA_TEMPLATE set custom jinja chat template (default: template taken from model's
metadata)
if suffix/prefix are specified, template will be disabled
only commonly used templates are accepted (unless --jinja is set
before this flag):
list of built-in templates:
bailing, bailing-think, bailing2, chatglm3, chatglm4, chatml,
command-r, deepseek, deepseek2, deepseek3, exaone3, exaone4, falcon3,
gemma, gigachat, glmedge, gpt-oss, granite, grok-2, hunyuan-dense,
hunyuan-moe, kimi-k2, llama2, llama2-sys, llama2-sys-bos,
llama2-sys-strip, llama3, llama4, megrez, minicpm, mistral-v1,
mistral-v3, mistral-v3-tekken, mistral-v7, mistral-v7-tekken, monarch,
openchat, orion, pangu-embedded, phi3, phi4, rwkv-world, seed_oss,
smolvlm, vicuna, vicuna-orca, yandex, zephyr
(env: LLAMA_ARG_CHAT_TEMPLATE)
...
Modèles:
- Les models au format GGUF, en fichier ou url sur Hugging Face, ModelScope
$ ./bin/llama-server --jinja -m ./Qwen3-Coder-30B-A3B-Instruct-Q5_K_S.gguf llama_context: n_ctx_seq (4096) < n_ctx_train (262144) -- the full capacity of the model will not be utilized
Élargir la “context window” :
- Tous les modèles ne supportent pas YaRN (vérifie la documentation).
- YaRN améliore la gestion des longs textes, mais ne résout pas les problèmes de compréhension profonde
--rope-scaling {none,linear,yarn}RoPE frequency scaling method, defaults to linear unless specified by the model--rope-scale NRoPE context scaling factor, expands context by a factor of N--yarn-orig-ctx NYaRN: original context size of model (default: 0 = model training context size)
Compilation pour GPU
Il faut le compiler avec CUDA. Avec une version >= 11.7 pour compatibilité syntaxe.
J'ai installé CUDA le dépot Nvidia Cuda et cuda toolkit 13
$ sudo cat /etc/apt/sources.list.d/cuda-ubuntu2404-x86_64.list deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /
en option ou @ spécifier pour le cmake build :
export PATH=$PATH:/usr/local/cuda-<version>/bin/
Ensuite une longue compilation :
# DCMAKE_CUDA_ARCHITECTURES :
# CUDA GPU Compute Capability https://developer.nvidia.com/cuda-gpus
# RTX 3060 : 86
# RTX 5060 : 120
$ export CUDA_VERSION=12.9 && cmake -B build -DGGML_CUDA=ON \
-DCMAKE_CUDA_ARCHITECTURES="86;120" \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda-${CUDA_VERSION}/bin/nvcc \
-DCMAKE_INSTALL_RPATH="/usr/local/cuda-${CUDA_VERSION}/lib64;\$ORIGIN"
-- ccache found, compilation results will be cached. Disable with GGML_CCACHE=OFF.
-- CMAKE_SYSTEM_PROCESSOR: x86_64
-- GGML_SYSTEM_ARCH: x86
-- Including CPU backend
-- x86 detected
-- Adding CPU backend variant ggml-cpu: -march=native
-- CUDA Toolkit found
-- Using CUDA architectures: 86;120
-- CUDA host compiler is GNU 13.3.0
-- Including CUDA backend
-- ggml version: 0.9.4
-- ggml commit: 6016d0bd4
-- Configuring done (0.5s)
-- Generating done (0.2s)
-- Build files have been written to: /home/cyrille/Code/bronx/AI_Coding/llama.cpp/build
$ time cmake --build build --config Release -j 10
# host: i7-1360P + SSD
...
real 44m35,149s
user 42m38,100s
sys 1m51,594s
...
# Avec `-j 10` (concurent tasks)
real 11m6,449s
user 104m56,615s
sys 3m45,431s
ollama
- https://ollama.com - https://github.com/ollama/ollama
Chat & build with open models.
Interface utilisateur pour gérer et exécuter des modèles localement, utilise Llama.cpp sous le capot.
Sur linux install un service systemd
koboldcpp
vLLM
vLLM est une bibliothèque open-source optimisée pour servir efficacement des LLMs en production, à la différence de llama.cpp qui est pour le développement ou usage solo sur du matériel standard (RTX ou CPU).
NanoLLM
LiteLLM
Tabby ML
Est à la fois le serveur de model et l'assistant de code.
https://tabby.tabbyml.com/docs/quick-start/installation/linux/
Fourni llama.cpp.
