docker build -f docker/Dockerfile -t ghcr.io/<utilisateur>/minids:latest .
docker push ghcr.io/<utilisateur>/minids:latestLa compilation des noyaux CUDA de gsplat prend 10–20 min. TORCH_CUDA_ARCH_LIST
est déjà réglé pour A100 / RTX 30xx / L4 / RTX 4090 / H100, donc l'image
fonctionne quel que soit le GPU loué.
| Champ | Valeur |
|---|---|
| Container Image | ghcr.io/<utilisateur>/minids:latest |
| Container Disk | 60 Go |
| Volume Disk | 50 Go, monté sur /workspace |
| Expose HTTP Ports | 8000 ← indispensable |
| Expose TCP Ports | (vide) |
| Container Start Command | (vide — l'ENTRYPOINT s'en charge) |
| Nom | Obligatoire | Rôle |
|---|---|---|
HF_TOKEN |
oui | Téléchargement des poids VGGT-Ω (accès restreint, à demander avant) et SAM 3 |
MINIDS_CKPT |
oui | facebook/VGGT-Omega:vggt_omega_1b_512.pt, ou un chemin local sur le volume |
MINIDS_TOKEN |
recommandé | Secret d'accès à l'API. Si absent, il est généré et affiché dans les logs du pod |
MINIDS_FRAMES |
non | Nombre d'images par défaut (120) |
MINIDS_IMAGE_RESOLUTION |
non | Résolution VGGT-Ω (512) |
MINIDS_LOG_LEVEL |
non | info par défaut |
L'URL du proxy est publique : ne jamais laisser
MINIDS_TOKENvide sans lire le token généré dans les logs. Sans token configuré, l'API répond 503 à tout.
| GPU | VRAM | Verdict |
|---|---|---|
| RTX 4090 | 24 Go | Recommandé. Le 2DGS est limité par le calcul, pas la mémoire |
| L4 | 24 Go | Fonctionne, ~2,5× plus lent sur l'étape de raffinement |
| RTX A5000 / 3090 | 24 Go | Équivalent L4 |
| A100 40 Go | 40 Go | Utile seulement au-delà de ~250 images |
Consommation VRAM de VGGT-Ω (table du dépôt officiel, entrées 624×416) : 100 images ≈ 13,4 Go · 200 ≈ 20,8 Go · 300 ≈ 28,3 Go. Avec le défaut de 120 images, on reste sous 16 Go, donc 24 Go suffisent largement.
- Lancer le pod, ouvrir ses logs (pas de terminal nécessaire).
- Y lire
MINIDS_TOKENs'il a été généré. - Récupérer l'ID du pod, l'URL est
https://<POD_ID>-8000.proxy.runpod.net. - Vérifier depuis Windows :
$env:MINIDS_URL="https://<POD_ID>-8000.proxy.runpod.net"
$env:MINIDS_TOKEN="<token>"
python client/minids.py healthRéponse attendue : cuda_available: true, le nom du GPU et la VRAM libre.
| Symptôme | Cause | Correction |
|---|---|---|
403 Forbidden, alors que /health répond dans un navigateur |
Cloudflare bloque l'agent Python-urllib par défaut |
corrigé côté client (en-tête User-Agent explicite) — mettre le dépôt à jour. miniDS lui-même ne renvoie jamais 403 : tout 403 vient du proxy |
| 502 Bad Gateway | serveur pas encore prêt | attendre ~60 s (chargement des poids), puis réessayer |
| 502 persistant | port non exposé | ajouter 8000 dans Expose HTTP Ports du template |
| 503 MINIDS_TOKEN non configuré | variable absente | définir MINIDS_TOKEN, ou lire celui des logs |
| 401 | token client ≠ token pod | réaligner MINIDS_TOKEN des deux côtés |
Job failed sur vggt |
MINIDS_CKPT absent ou accès HF refusé |
vérifier l'approbation Hugging Face et HF_TOKEN |
| Coupure à ~100 s | requête longue | c'est la limite Cloudflare ; le client la contourne déjà, ne pas appeler l'API à la main avec curl sur de gros fichiers |
CUDA out of memory sur vggt |
trop d'images | baisser --frames (100 tient sur 24 Go avec marge) |
Les tarifs RunPod varient selon la région, la disponibilité et le type de cloud.
Vérifier le prix horaire affiché au moment de louer le GPU, puis commencer par le
préréglage de validation. Penser à arrêter le pod entre deux scans : le volume
/workspace conserve le cache des poids, le redémarrage suivant est rapide.