CHORE: Docker compose agent — exposition GPU (NVIDIA / AMD ROCm / Intel VAAPI / iGPU) #77

Open
opened 2026-08-12 09:46:40 +02:00 by nonobis · 0 comments
Owner

🎯 Contexte

Les agents peuvent tourner sur des machines équipées de GPU NVIDIA, AMD, Intel ou iGPU (graphique intégrée). Le conteneur agent doit exposer le matériel au runtime pour que l'inférence (ticket #2) et le worker GPU (ticket 5) fonctionnent. Aujourd'hui le compose agent (network_mode: host) n'expose aucun device.

🔍 État actuel (vérifié dans le code)

docker/docker-compose.yml + docker-compose.prod.yml : service agent avec network_mode: host, port 8081, healthcheck 8081, images Docker Hub eltruncho/heimdall-agent. Aucune référence GPU. Dockerfile.agent : runtime .NET, FFmpeg, pas de libs VAAPI/ROCm.

🧩 À faire

  • Profiles compose : agent-gpu-nvidia, agent-gpu-amd, agent-gpu-intel, agent-gpu-igpu (ou overrides docker-compose.agent-gpu-*.yml)
  • Dockerfile.agent : ajouter les packages runtime selon famille (intel-media-driver, mesa/VAAPI, ROCm) — variantes d'image ou install conditionnelle
  • Détection au démarrage de l'agent : nvidia-smi / /dev/dri / vainfo → log du backend effectif (Cpu/Gpu/Vaapi/Rocm) + alimente le heartbeat (ticket capacités)
  • Documenter dans le readme/docker : comment choisir le profile selon la machine (exemples de compose par famille)
  • Vérifier le healthcheck agent inchangé avec devices GPU
  • Test réel sur au moins une famille (NVIDIA si dispo) + validation du fallback CPU

🧪 Critères d'acceptation

  • docker compose --profile agent-gpu-nvidia up sur une machine NVIDIA expose le GPU au conteneur (nvidia-smi visible depuis l'agent)
  • /dev/dri exposé pour Intel/AMD/iGPU ; vainfo fonctionne dans le conteneur
  • Sans profile GPU, l'agent fonctionne en backend CPU (comportement actuel conservé)
  • L'agent log le backend détecté au démarrage

📁 Fichiers concernés

docker/docker-compose.yml, docker/docker-compose.prod.yml, docker/Dockerfile.agent, src/Heimdall.Agent/Program.cs (détection backend), docs/ (readme docker)

⚠️ Impact

Aucune régression attendue : le compose par défaut (CPU) reste identique. Les profiles GPU sont optionnels et choisis par machine.

📝 Notes

Sur Proxmox, attention au passthrough GPU (VFIO) — à documenter côté ops. Les iGPU Intel (QSV) peuvent servir aussi à l'encodage FFmpeg (extension future).

## 🎯 Contexte Les agents peuvent tourner sur des machines équipées de GPU **NVIDIA, AMD, Intel ou iGPU** (graphique intégrée). Le conteneur agent doit exposer le matériel au runtime pour que l'inférence (ticket #2) et le worker GPU (ticket 5) fonctionnent. Aujourd'hui le compose agent (`network_mode: host`) n'expose aucun device. ## 🔍 État actuel (vérifié dans le code) `docker/docker-compose.yml` + `docker-compose.prod.yml` : service agent avec `network_mode: host`, port 8081, healthcheck 8081, images Docker Hub `eltruncho/heimdall-agent`. Aucune référence GPU. `Dockerfile.agent` : runtime .NET, FFmpeg, pas de libs VAAPI/ROCm. ## 🧩 À faire - [ ] Profiles compose : `agent-gpu-nvidia`, `agent-gpu-amd`, `agent-gpu-intel`, `agent-gpu-igpu` (ou overrides `docker-compose.agent-gpu-*.yml`) - [ ] `Dockerfile.agent` : ajouter les packages runtime selon famille (intel-media-driver, mesa/VAAPI, ROCm) — variantes d'image ou install conditionnelle - [ ] Détection au démarrage de l'agent : nvidia-smi / /dev/dri / vainfo → log du backend effectif (Cpu/Gpu/Vaapi/Rocm) + alimente le heartbeat (ticket capacités) - [ ] Documenter dans le readme/docker : comment choisir le profile selon la machine (exemples de compose par famille) - [ ] Vérifier le healthcheck agent inchangé avec devices GPU - [ ] Test réel sur au moins une famille (NVIDIA si dispo) + validation du fallback CPU ## 🧪 Critères d'acceptation - [ ] `docker compose --profile agent-gpu-nvidia up` sur une machine NVIDIA expose le GPU au conteneur (nvidia-smi visible depuis l'agent) - [ ] `/dev/dri` exposé pour Intel/AMD/iGPU ; vainfo fonctionne dans le conteneur - [ ] Sans profile GPU, l'agent fonctionne en backend CPU (comportement actuel conservé) - [ ] L'agent log le backend détecté au démarrage ## 📁 Fichiers concernés docker/docker-compose.yml, docker/docker-compose.prod.yml, docker/Dockerfile.agent, src/Heimdall.Agent/Program.cs (détection backend), docs/ (readme docker) ## ⚠️ Impact Aucune régression attendue : le compose par défaut (CPU) reste identique. Les profiles GPU sont optionnels et choisis par machine. ## 📝 Notes Sur Proxmox, attention au passthrough GPU (VFIO) — à documenter côté ops. Les iGPU Intel (QSV) peuvent servir aussi à l'encodage FFmpeg (extension future).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#77
No description provided.