Module 3 : Local AI & Ops
Le Cloud c'est bien, mais envoyer des données sensibles (mots de passe, code source privé) à OpenAI est souvent interdit.
Durée estimée : 15 minutes La solution : Local LLM.
1. La Révolution Ollama
Ollama est le "Docker de l'IA". Il permet de télécharger et runner des modèles avec une simple commande.
Installation (Linux/WSL)
Lancer un modèle
# Télécharge Llama3 (Meta) - environ 4GB
ollama run llama3
>>> Pourquoi Linux est mieux que Windows ?
2. API Locale
Ollama expose une API compatible (presque) avec OpenAI sur le port 11434.
Dans votre code Python du Module 1, changez juste :
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # Clé bidon requise
)
response = client.chat.completions.create(
model="llama3", # Le nom du modèle local
...
)
3. Hardware : CPU vs GPU
- GPU (NVIDIA) : Indispensable pour la vitesse. La mémoire VRAM est le facteur limitant.
- Modèle 7B (7 Milliards paramètres) ≈ 4-5 GB VRAM.
- Modèle 70B ≈ 40 GB VRAM (nécessite des cartes pro A100/H100).
- CPU : Possible mais lent (1-3 mots/seconde). Ollama utilise
llama.cpppour optimiser ça. - Quantization (Q4_K_M) : Technique de compression. On réduit la précision des poids (de 16 bits à 4 bits) pour diviser la taille par 3, avec une perte de qualité minime.
TP : Serveur d'Inférence Dockerisé
Créez un docker-compose.yml pour lancer Ollama + une WebUI (Open WebUI).
services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
Exercice Pratique
Exercice : Mise en Place d'une Stack IA Locale
Objectif : Déployer Ollama avec un modèle local et créer un script Python pour interagir avec ce modèle.
Étapes :
1. Installer Ollama et télécharger le modèle llama3 ou mistral
2. Créer un script Python local_chat.py qui utilise l'API locale d'Ollama
3. Tester les performances CPU vs GPU si disponible et documenter les résultats (tokens/seconde)
Solution
from openai import OpenAI
import time
# Configuration pour Ollama local
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama"
)
def benchmark_model(model_name="llama3"):
start = time.time()
response = client.chat.completions.create(
model=model_name,
messages=[
{"role": "system", "content": "Tu es un assistant système Linux."},
{"role": "user", "content": "Explique en 50 mots comment fonctionne systemd."}
]
)
elapsed = time.time() - start
answer = response.choices[0].message.content
tokens = len(answer.split())
print(f"Réponse : {answer}")
print(f"\nPerformance : {tokens/elapsed:.2f} tokens/sec")
if __name__ == "__main__":
benchmark_model()
Navigation
| ← Module 2 : Prompt Engineering & Struc... | Module 4 : RAG (Chat with your Data) → |