Ollama

Impossible d’échapper au raz de marée IA, qui selon Henri Verdier sera la révolution numérique actuelle.
Et dans ce microcosme ou ChatGPt a distribué les cartes, tout le monde veux sa part du gâteau.
Apres Deepseek qui a prouvé qu’il existait des alternatives à Open AI, Mistral, L’IA Française vient également mettre son grain de sel avec son modele leger et performant.

pré-requis

alors pour plus de simplicité dans le prototypage, je suis partie sur?
Docker, comme d’hab

il nous faut donc

  • une VM sur docker
  • docker-compose
  • un accès internet

Pourquoi utiliser Docker pour exécuter un modèle IA localement ?

L’utilisation de Docker présente plusieurs avantages :

  • Isolation complète : Chaque conteneur fonctionne indépendamment, évitant les conflits de dépendances avec le système hôte.
  • Déploiement rapide : Pas besoin d’installer manuellement les dépendances ou de configurer l’environnement, tout est encapsulé dans un conteneur.
  • Portabilité : Que tu sois sur Linux, Windows ou macOS, exécuter Ollama avec Docker garantit un fonctionnement identique.
  • Facilité de mise à jour : Mettre à jour Ollama ou tester différents modèles devient un jeu d’enfant en changeant simplement l’image Docker.

Cas d’usage possibles

L’association Mistral + Ollama en Docker ouvre de nombreuses possibilités :

  • Chatbot local : Construire un assistant IA qui fonctionne en local, sans dépendre d’un cloud.
  • Génération de texte hors ligne : Rédiger des articles, résumer des documents ou générer des scripts sans connexion Internet.
  • Assistance au développement : Utiliser l’IA pour aider à la rédaction de code, commenter des scripts ou expliquer des concepts techniques.
  • Automatisation et intégration : Connecter Mistral à d’autres services via une API locale, pour des workflows intelligents sans surcoût lié à l’IA en ligne.

Le docker-compose

Alors oui, j’ai pris l’habitude d’utiliser docker-compose et les fichiers yml pour mes projets docker, ça me parle plus que de lancer juste mes containers.

On va déjà crée la partie Ollama

Ollama !!!

ollama:
    image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}  # Image Docker Ollama
    container_name: ollama  # Nom du conteneur
    restart: unless-stopped  # Redémarrage automatique sauf arrêt manuel
    ports:
      - "11434:11434"  # Expose le port 11434 pour les requêtes
    tty: true  # Active un terminal interactif
    volumes:
      - /ollama/modeles:/root/.ollama  # Stockage persistant des modèles
    extra_hosts:
      - "host.docker.internal:host-gateway"  # Permet au conteneur d'accéder à l'hôte
    pull_policy: always  # Télécharge toujours la dernière image si disponible
    environment:
      - OLLAMA_MODEL=mistral  # Définit le modèle utilisé par Ollama

Le fichier spécifie un volume monté sur /root/.ollama à partir du répertoire /ollama/modeles sur l’hôte. Cela permet de conserver les modèles téléchargés même après la suppression ou le redémarrage du conteneur.

Service Open-WebUI

Ce service fournit une interface web pour interagir avec Ollama. Il est basé sur l’image ghcr.io/open-webui/open-webui et est configuré comme suit :

  open-webui:
    image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}  # Image WebUI
    container_name: open-webui  # Nom du conteneur
    restart: unless-stopped  # Redémarrage automatique sauf arrêt manuel
    ports:
      - "3001:8080"  # Expose le port 3001 pour l'interface web
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434  # Connexion au service Ollama
      - WEBUI_SECRET_KEY=your_secret_key  # Clé secrète pour sécuriser l'accès (a modifier bien sur)
    depends_on:
      - ollama  # Attente que le service Ollama soit démarré
    volumes:
      - open-webui:/app/backend/data  # Stockage persistant des données
    extra_hosts:
      - "host.docker.internal:host-gateway"  # Permet au conteneur d'accéder à l'hôte

à l’issue il faudra récupérer le modèle de Mistral

docker compose exec ollama ollama pull mistral

D’autres modèles?

Bien sur, chauvinisme oblige, j’ai commencé par utiliser Mistral. Mais cela fonctionne également avec d’autres modèles d’IA tel que deepseek, Llama3 ou gemma, d’ailleurs on va également faire tourner ça.

On va tester avec deepseek qui possede plusieurs version
une 7 milliards de parametres : 7b

1.5 et 14b

La commande suivante télécharge la version 7 milliards de paramètres du modèle DeepSeek-R1. Vous pouvez remplacer 7b par la taille de modèle souhaitée, comme 1.5b ou 14b.

root@Docker:/docker# docker compose exec ollama ollama pull deepseek-r1:7b
pulling manifest
pulling 96c415656d37...   6% ▕██████████   

Vous pouvez voir qu’en plus de mes tests pour savoir qui est Gandhi, j’ai désormais deepseek et mistral côte à côte, je peux surfer de l’un à l’autre sans souci.

Conclusion

Utiliser Ollama avec Mistral en Docker est une excellente solution pour ceux qui recherchent à la fois performance, flexibilité et souveraineté sur leurs données. Contrairement aux services d’IA basés sur le cloud, qui imposent souvent des restrictions et des risques liés à la confidentialité, cette approche permet d’exécuter un modèle de langage puissant en local, sans envoyer de données à un serveur tiers.

Pourquoi c’est une bonne idée ?

  • Souveraineté et confidentialité : Aucun envoi de données vers l’extérieur, ce qui est crucial pour des usages professionnels sensibles.
  • Contrôle total : On peut choisir la version du modèle, ajuster les ressources allouées et même modifier Ollama selon ses besoins.
  • Coût réduit : Pas d’abonnement ou de coûts cachés liés à une API cloud, une simple machine avec assez de puissance suffit.
  • Performance locale : Pas de latence due à la connexion réseau, idéal pour une IA réactive et accessible immédiatement.

Quelles sont les limites ?

  • Ressources matérielles : Un modèle comme Mistral, bien qu’optimisé, demande tout de même une machine avec un CPU puissant et, idéalement, une carte graphique pour accélérer l’inférence.
  • Maintenance et mises à jour : Contrairement aux solutions cloud qui évoluent en arrière-plan, il faut gérer manuellement la mise à jour des conteneurs et des modèles.
  • Évolution des modèles : De nouveaux modèles plus performants sortent régulièrement. Un usage local signifie qu’il faut surveiller ces évolutions et tester par soi-même les alternatives.

En conclusion, cette approche s’adresse à ceux qui veulent garder le contrôle sur leurs données, éviter les dépendances aux grandes plateformes et avoir une solution IA locale, efficace et économique. Un choix stratégique pour les entreprises, les développeurs et les passionnés de tech qui veulent une autonomie totale sur leur intelligence artificielle. 🚀


By jack

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *