IA locale · Tutoriel

RamaLama 0.26 : lancer un modèle d'IA dans un conteneur isolé, pas à pas

RamaLama fait tourner les modèles d'IA dans des conteneurs sans droits administrateur et, pour la discussion, sans accès au réseau. La version 0.26.0 ajoute le chiffrement TLS et étend la clé d'API au RAG. Les commandes pour installer, lancer et servir un modèle.

Par Kayzen AI · · 3 min de lecture

Photo d'illustration : Shipping container - Port of Rotterdam - 2017 - 3
Image : Shipping container - Port of Rotterdam - 2017 - 3 — AgainErick, CC BY-SA 4.0, via Wikimedia Commons

RamaLama est un outil libre, sous licence MIT, qui exécute les modèles d'IA dans des conteneurs. L'idée : traiter un modèle comme n'importe quel logiciel dont on se méfie un peu, en l'enfermant dans une boîte. La version 0.26.0, publiée le 4 novembre, est l'occasion d'un pas-à-pas.

Ce qu'il faut

Un moteur de conteneurs, Podman ou Docker. Si les deux sont installés, Podman est choisi par défaut. Sous Windows, il faut Python 3.9 ou plus récent, ainsi que Docker Desktop ou Podman Desktop avec WSL2.

Côté matériel, le README liste le processeur seul, les puces Apple, les cartes NVIDIA (CUDA), AMD (ROCm et Vulkan) et Intel Arc sous Linux. RamaLama détecte le matériel et choisit l'image de conteneur adaptée.

Installation

Avec Python, sur toute plateforme :

pip install ramalama

Sous Fedora :

sudo dnf install ramalama

Sous Linux et macOS, un script d'installation existe aussi :

curl -fsSL https://ramalama.ai/install.sh | bash

Par prudence, lisez ce script avant de l'exécuter, comme tout script lancé directement depuis Internet.

Discuter avec un modèle

ramalama run granite3-moe

Le modèle est téléchargé au premier lancement, puis une discussion s'ouvre dans le terminal. Pour télécharger sans lancer, puis voir ce qui est sur le disque :

ramalama pull granite3-moe
ramalama list

Servir un modèle à d'autres logiciels

ramalama serve llama3

Le serveur écoute sur le port 8080 s'il est libre, sinon sur un port libre entre 8081 et 8090. Pour un service en arrière-plan, avec un nom et un port choisis :

ramalama serve -d -p 8080 --name mymodel ollama://smollm:135m
ramalama stop mymodel

Interroger ses propres documents

RamaLama fabrique une image contenant vos documents, puis l'associe à un modèle :

ramalama rag ./README.md https://github.com/containers/podman/blob/main/README.md quay.io/ramalama/myrag
ramalama run --rag quay.io/ramalama/myrag instructlab/merlinite-7b-lab

Ce que l'isolation garantit

D'après le README, les réglages par défaut sont les suivants :

  • conteneurs sans droits administrateur, modèle monté en lecture seule ;
  • ramalama run démarre le conteneur sans aucun accès réseau ;
  • les données temporaires sont effacées à la fin de la session ;
  • toutes les capacités Linux sont retirées.

Depuis la version 0.25.0, la commande serve n'écoute par défaut que sur la machine elle-même.

Ce qu'apporte la 0.26.0

  • le chiffrement TLS pour les moteurs llama.cpp et vllm ;
  • l'option --api-key étendue au pipeline RAG ;
  • la commande ramalama info qui affiche les cartes graphiques et accélérateurs détectés ;
  • llama.cpp porté en version 0.8.0 ;
  • plusieurs corrections sous Windows, dont un plantage de la détection GPU quand Podman est absent.

Les points à vérifier

Un nom de modèle sans organisation, comme granite-code, est aujourd'hui cherché chez Ollama. Or le README prévient que les modèles Ollama ne sont plus compatibles avec llama.cpp et que ce transport sera retiré dans une version future. Mieux vaut écrire la source en toutes lettres, par exemple avec le préfixe hf:// pour Hugging Face, ou changer la valeur par défaut avec la variable RAMALAMA_TRANSPORT.

Sur Mac, le moteur MLX ne fonctionne qu'avec l'option --nocontainer : on perd alors l'isolation qui fait l'intérêt de l'outil.

Notre lecture

Pour une PME qui manipule des documents sensibles, RamaLama apporte une réponse simple à une vraie question : que peut faire un modèle téléchargé sur ma machine ? Ici, par défaut, pas grand-chose en dehors de son conteneur. L'outil suppose toutefois d'être à l'aise avec Podman ou Docker. Si vous ouvrez le serveur à d'autres postes, activez la clé d'API et le chiffrement TLS avant de le rendre joignable sur le réseau.

Sources

  1. RamaLama — dépôt GitHub et README (containers/ramalama) — source primaire
  2. RamaLama — liste des versions, dont v0.26.0 (GitHub)