Date : 09/02/2026
Projet : ai-orchestrator (/stock_8to/33800-stack/projects/ai-orchestrator/app/main.py)
Statut : EN ATTENTE DE VALIDATION
Quand un job échoue et est remis en queue, la priorité est lue depuis job_data.get("priority", 0). Si le champ est absent ou null dans le dict retourné par db_get_job(), la priorité retombe à 0 (normal) au lieu de conserver la priorité originale (ex: 1 = haute).
Lignes concernées : 3310, 3462
max(1, min(5, count)) clamp à 5 max. Avec une 3090 (24 Go) + 2070 Super (8 Go), on peut faire plus pour les petits modèles.
Ligne concernée : 966
La RTX 2070 Super ne fait QUE du Ollama (les autres tools GPU1 comme bark, musicgen, etc. sont des tools séparés qui stop_tool Ollama quand ils démarrent). Mais quand seul Ollama tourne, le modèle se décharge après le timeout par défaut d'Ollama (5 min), ce qui force un rechargement au prochain job.
Ollama décharge/recharge le modèle entre les jobs même si le prochain job utilise le même modèle. On ne passe pas keep_alive dans les requêtes API.
Fichier : main.py
Ligne 3310 — remplacer :
await queue_push_job(job_id, job_data.get("priority", 0))
par :
await queue_push_job(job_id, job_data.get("priority") or 0)
Mais surtout, db_get_job() retourne dict(row) depuis PostgreSQL, et la table ai_jobs a bien une colonne priority. Donc job_data["priority"] devrait toujours exister. Le vrai fix est d'utiliser job_data["priority"] directement (comme c'est déjà fait ligne 3515).
Changements :
job_data.get("priority", 0) → job_data["priority"]next_data.get("priority", 0) → next_data["priority"]Fichier : main.py
Ligne 966 :
count = max(1, min(5, count))
→
count = max(1, min(10, count))
On pourra ensuite setter la valeur souhaitée via l'API POST /api/worker/parallel?count=8.
Avec mistral:latest (~4.5 Go VRAM), on peut théoriquement :
Note : OLLAMA_NUM_PARALLEL est aussi mis à jour sur win11 (ligne 975), Ollama utilisera cette valeur pour son propre scheduling interne.
keep_alive long sur GPU1 (dédié Ollama)Fichier : main.py
Dans execute_ollama_job(), ajouter keep_alive dans les requêtes API Ollama.
"keep_alive": -1 (ne jamais décharger)"keep_alive": "30m" (garder 30 min, car la 3090 peut être sollicitée par ComfyUI, Fooocus, etc.)Changements dans execute_ollama_job() :
Après la ligne 2295 (api_url = f"http://{WIN11_HOST}:{port}"), ajouter :
# GPU1 (port 11435) is dedicated to Ollama - keep model loaded forever
# GPU0 (port 11434) is shared with other tools - keep model 30min
keep_alive = -1 if port == 11435 else "30m"
Puis ajouter "keep_alive": keep_alive dans chaque request_data dict :
json={"model": model, "prompt": prompt, "keep_alive": keep_alive}"keep_alive": keep_alive dans request_data"keep_alive": keep_alive dans request_dataAvec le fix 3 (keep_alive), ce problème se résout de lui-même :
keep_alive n'expire pasAucun code supplémentaire nécessaire.
| Fix | Lignes modifiées | Impact |
|---|---|---|
| Priorité requeue | 3310, 3462 | Bug fix — jobs haute priorité gardent leur priorité |
| Max parallèle | 966 | Passe de 5 à 10 max |
| keep_alive GPU1 | 2295+, 2309, 2353, 2412 | Modèle reste chargé sur GPU1 dédié |
Fichier modifié : main.py uniquement
Risque : Faible — pas de changement d'architecture, juste des paramètres
Déploiement : git push → CI/CD redéploie le container ai-orchestrator