Moteur d'inférence pour les modèles légers et quantifiés avec une API compatible OpenAI et une API native, sur des hôtes CPU ou des hôtes GPU NVIDIA. Plusieurs modèles par instance (chargés à la demande), réglages des requêtes parallèles et de la file d'attente, modèles hébergés sur l'hôte (téléchargés depuis un registre ou importés depuis des fichiers GGUF validés). Enregistré automatiquement dans LiteLLM.
Généré depuis catalog/services/ollama.yaml : ne pas modifier à la main.
Résumé
| |
|---|
| Version | 0.40.14 |
| Usage | installer et configurer, configurer et connecter |
| Couche | fonctionnelle (catalogue IA) |
| Catégorie | Inférence IA |
| Méthodes d'installation | podman |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| |
|---|
| Identifiant SPDX | MIT |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | ollama |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
| Type | Paquet | Version | Licence | Détails |
|---|
| image de conteneur | docker.io/ollama/ollama | 0.40.14 | MIT | clé d'image ollama, utilisée par server, condensé sha256:ebaef4f4c5d93660e1f25f8ad085a112f51ccfb0e8458073e71793959dba91c9 |
| image de conteneur | docker.io/nginxinc/nginx-unprivileged | 1.30.6-alpine-slim | MIT | clé d'image tls_front, utilisée par tls-front, condensé sha256:5d8bb9437d74a600ec5dbf90c035451c724dc33eac8d3a71078f6f8612c345f6 |
Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|
podman | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
GPU : GPU NVIDIA donnés au composant comme périphériques CDI (nvidia.com/gpu) : server (quand la configuration le demande).
Prérequis
Hôte
- au moins 4096 Mo de mémoire (bloquant,
memory).
- au moins 1 GPU NVIDIA avec 4000 Mo de mémoire, seulement quand
accelerator vaut gpu (bloquant, gpu).
- au moins 4 CPU, seulement quand
accelerator vaut cpu (avertissement, cpu_cores).
- le programme
podman installé sur l'hôte (bloquant, podman).
- au moins 20480 Mo libres pour
/var/lib/navin (avertissement, model_disk).
Programmes que les commandes et les contrôles du service lancent sur l'hôte, hors des racines gérées : les ajouter à allowed_commands de l'agent (voir Sécurité de l'agent Navin), sinon l'agent les refuse avec command_not_allowed : /usr/bin/nvidia-smi, /usr/bin/podman.
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|
server | api | 11434/tcp | oui |
server | api_internal | 11434/tcp | non |
tls-front | api | 11434/tcp | oui |
Services et connexions nécessaires
Ce service n'a aucune dépendance.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|
podman | oui | les images de conteneur du descripteur, exécutées par Podman sous systemd |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|
Serveur Ollama (server) | maître | podman | 11434/tcp, 11434/tcp |
Frontal TLS (tls-front) | maître | podman | 11434/tcp |
Instance unique (bac à sable) (single) (par défaut)
Un moteur sur un hôte CPU ou GPU.
Ce que le mode déploie :
| Composant | Placement |
|---|
server | min 1, max 1 |
tls-front | min 1 |
Répliqué (haute disponibilité) (replicated)
Instances indépendantes avec les mêmes modèles sur des hôtes distincts ; LiteLLM répartit et bascule entre elles. Les commandes de modèles s'exécutent sur chaque instance.
Ce que le mode déploie :
| Composant | Placement |
|---|
server | min 2, recommandé 2 |
tls-front | min 1 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Ollama. La carte affiche la licence MIT.
-
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : single (par défaut), replicated. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. Avec plusieurs composants, placez chacun sur ses hôtes dans Répartition des composants (Proposer un placement propose un placement qui respecte les cardinalités).
-
Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.
Connecter un service existant
| |
|---|
| Schémas | https, http |
| Port par défaut | 11434 |
| Authentification | aucune |
| Contrôle de santé | /api/version |
| Méthode d'authentification | Champs | Description |
|---|
none | - | Ollama n'a pas d'authentification propre : gardez-le sur le réseau interne ou derrière une passerelle authentifiante. |
Documentation officielle : https://github.com/ollama/ollama/blob/main/docs/faq.md
Haute disponibilité
Prérequis
| Prérequis | Doit être hautement disponible | Modes | Description |
|---|
| litellm | oui | replicated | LiteLLM hautement disponible (deux proxys ou plus) : il répartit et bascule entre les instances ; les agents et les applications n'appellent jamais Ollama directement. |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|
single | autonome (standalone) | unique (single) | - | 1 | Un moteur sur un hôte CPU ou GPU, sans tolérance aux pannes. |
replicated | ha (ha) | actif-actif (active-active) | - | 2 | Instances indépendantes avec les mêmes modèles sur des hôtes distincts ; LiteLLM bascule entre elles. |
Remarques
- Les modèles sont stockés sur chaque hôte : les télécharger ou les importer sur chaque instance (les commandes de modèles s'exécutent sur toutes) avant de les publier dans LiteLLM.
- Ollama ne sert son API qu'en HTTP en clair (OLLAMA_HOST ne prend aucun certificat). Avec TLS actif, un frontal TLS (nginx avec le certificat du Manager) placé à côté de chaque moteur prend le port de l'API, le moteur reste sur le réseau du service et LiteLLM vérifie le certificat avec l'autorité du Manager. Activer ou désactiver TLS ajoute ou retire les frontaux à la prochaine application de la configuration ; LiteLLM apparaît alors avec des changements à appliquer.
Paramètres de configuration
Modèles et hébergement
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Modèles publiés dans LiteLLM (litellm_models) | list | ["llama3.2"] | - | non | non | non | Modèles de ce moteur que LiteLLM expose (une entrée ollama_chat par modèle et par instance) ; les télécharger ou les importer d'abord sur chaque instance. |
Garder chargé (keep_alive) | string | 5m | ^(-1|0|[0-9]+[smh])$ | non | non | oui | Durée pendant laquelle un modèle inactif reste en mémoire (OLLAMA_KEEP_ALIVE) : 5m, 1h, -1 toujours, 0 déchargement immédiat. |
Hôte CPU ou GPU
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Type d'hôte (accelerator) | enum | gpu | gpu, cpu | non | non | oui | gpu : hôte GPU NVIDIA (pilote et spécification CDI du NVIDIA Container Toolkit requis) ; cpu : hôte CPU uniquement (modèles quantifiés). |
GPU (gpu_devices) | string | all | ^(all|[A-Za-z0-9-]+(,[A-Za-z0-9-]+)*)$ | non | non | oui | GPU donnés au moteur : all, ou une liste d'index ou d'UUID séparés par des virgules (pool GPU distinct du pool vLLM). |
Concurrence et mémoire
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Requêtes parallèles par modèle (num_parallel) | int | 4 | min 1, max 64 | non | non | oui | OLLAMA_NUM_PARALLEL : requêtes qu'un modèle chargé sert en même temps (la mémoire du contexte augmente avec). |
Modèles chargés (max_loaded_models) | int | 2 | min 1, max 32 | non | non | oui | OLLAMA_MAX_LOADED_MODELS : modèles gardés chargés en même temps, dans la limite de la VRAM ou de la RAM. |
File d'attente (max_queue) | int | 512 | min 1, max 100000 | non | non | oui | OLLAMA_MAX_QUEUE : requêtes en attente avant que le moteur ne réponde occupé (LiteLLM réessaie alors une autre instance). |
Longueur de contexte (context_length) | int | 4096 | min 512, max 1048576 | non | non | oui | OLLAMA_CONTEXT_LENGTH : fenêtre de contexte par défaut des modèles chargés. |
Flash attention (flash_attention) | bool | true | - | non | non | oui | OLLAMA_FLASH_ATTENTION : mémoire du contexte réduite sur les GPU compatibles. |
Précision du cache KV (kv_cache_type) | enum | f16 | f16, q8_0, q4_0 | non | non | oui | OLLAMA_KV_CACHE_TYPE (nécessite flash attention) : q8_0 divise par deux la mémoire du contexte. |
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Port de l'API (port) | port | 11434 | - | non | non | oui | Port de l'API, lié à l'adresse de l'hôte et atteint par LiteLLM uniquement (servi par le frontal TLS quand TLS est actif). |
Sécurité
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
TLS de l'API (tls_enabled) | bool | false | - | non | non | oui | Sert l'API en HTTPS avec le certificat du Manager : Ollama n'a pas de TLS propre, un frontal TLS (nginx) placé à côté de chaque moteur prend le port de l'API et le moteur n'est plus publié sur l'hôte. LiteLLM vérifie alors le certificat avec l'autorité du Manager. |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|
api | http | server | 11434 (port) | - | tls_enabled | models, engine | - | - |
Commandes
| Commande | Composant | Cible | Description |
|---|
Modèles hébergés (list_models) | server | tous les hôtes | Modèles stockés sur chaque instance, avec leur taille (ollama list). |
Modèles chargés (running_models) | server | tous les hôtes | Modèles chargés en mémoire sur chaque instance, avec la part CPU et GPU (ollama ps). |
Télécharger un modèle (pull_model) | server | tous les hôtes | Télécharge un modèle sur chaque instance depuis le registre Ollama ou un registre interne (référence complète registre/espace/modèle:étiquette). |
Importer un modèle GGUF (import_model) | server | tous les hôtes | Crée un modèle sur chaque instance depuis un fichier GGUF validé copié dans /var/lib/navin/ollama/import de chaque hôte (installation hors ligne, sans téléchargement). |
Importer un modèle affiné (import_safetensors) | server | tous les hôtes | Crée un modèle sur chaque instance depuis un dossier Safetensors de /var/lib/navin/ollama/import (export fusionné de LLaMA-Factory, copié par sa commande publish_to_ollama), pour les architectures qu'Ollama importe (Llama, Mistral, Gemma, Qwen). Ajouter ensuite le nom du modèle à litellm_models. |
Supprimer un modèle (delete_model) | server | tous les hôtes | Supprime un modèle de chaque instance (ollama rm). (demande une confirmation) |
État des GPU (gpu_status) | server | tous les hôtes | Utilisation, mémoire et température des GPU de chaque hôte (nvidia-smi). |
Journaux récents (logs) | server | hôte choisi | Dernières lignes du journal du moteur. |
Paramètres des commandes
| Commande | Paramètre | Type | Défaut | Obligatoire | Description |
|---|
pull_model | Modèle (model) | string | - | oui | Référence du modèle, par exemple llama3.2:3b ou registry.example.internal/library/qwen3:8b. |
import_model | Nom du modèle (model) | string | - | oui | Nom du modèle créé, par exemple qwen3-8b-q4. |
import_model | Fichier GGUF (file) | string | - | oui | Nom du fichier dans le dossier d'import de l'hôte. |
import_safetensors | Nom du modèle (model) | string | - | oui | Nom du modèle créé, par exemple support-qwen3-8b. |
import_safetensors | Dossier (folder) | string | - | oui | Nom du dossier dans le dossier d'import de l'hôte. |
delete_model | Modèle (model) | string | - | oui | Référence du modèle telle qu'affichée par Modèles hébergés. |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|
server | HTTP http://{{ host.ip or '127.0.0.1' }}:{{ config.port }}/api/version | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
server | /usr/bin/podman exec navin-{{ service.name }}-server ollama list | 60 tentatives ; intervalle 2 s ; délai 10 s |
tls-front | HTTP https://{{ host.fqdn }}:{{ config.port }}/api/version | Attendu 200 ; 60 tentatives ; intervalle 2 s ; délai 5 s |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|
HTTP {{ 'https://' ~ host.fqdn if config.tls_enabled else 'http://' ~ (host.ip or '127.0.0.1') }}:{{ config.port }}/api/tags | Attendu 200 ; 10 tentatives ; intervalle 3 s ; délai 10 s |
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|
memory | memory_mb {"min": 4096} | au moins 4096 Mo de mémoire | bloquant | tous les composants |
gpu | gpu {"min_count": 1, "min_memory_mb": 4000} | au moins 1 GPU NVIDIA avec 4000 Mo de mémoire, seulement quand accelerator vaut gpu | bloquant | tous les composants |
cpu_cores | cpu_count {"min": 4} | au moins 4 CPU, seulement quand accelerator vaut cpu | avertissement | tous les composants |
podman | binary {"name": "podman"} | le programme podman installé sur l'hôte | bloquant | tous les composants |
model_disk | disk_free_mb {"path": "/var/lib/navin", "min": 20480} | au moins 20480 Mo libres pour /var/lib/navin | avertissement | tous les composants |
api_port_free | port_free {"param": "port"} | port 11434 libre sur l'hôte | bloquant | tous les composants |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.
Documentation amont