Que fait aoti-debug ?
Déboguer les erreurs et les plantages d'AOTInductor (AOTI). À utiliser en cas de segfaults AOTI, d'erreurs de non-correspondance de périphérique, d'échecs de chargement de constantes ou d'erreurs d'exécution provenant de aot_compile, aot_load, aoti_compile_and_package ou aoti_load_package.
À propos
AOTInductor (AOTI) est un compilateur PyTorch qui compile les modèles en code exécutable pré-compilé (format .so) pour une inférence optimisée. Ce skill vous guide à travers les erreurs courantes d'AOTI et vous aide à les résoudre.
Problèmes courants et solutions
1. Segfaults après compilation AOTI
Symptômes : Plantages soudains (segfault) lors du chargement ou de l'exécution du modèle compilé.
Solutions :
- Vérifiez la compatibilité des versions de PyTorch et de la bibliothèque CUDA.
- Assurez-vous que
torch.aot_compileoutorch._export.aot_compilea été exécuté avec les bons flags (--use-aot-inductor). - Testez avec un modèle minimaliste pour isoler le problème.
- Activez le mode débogage :
export TORCH_INDUCTOR_DEBUG=1. - Utilisez
gdboullvm-symbolizerpour obtenir une trace de pile significative.
2. Erreurs de non-correspondance de périphérique
Symptômes : "RuntimeError: Expected all tensors to be on the same device" lors de l'inférence avec un modèle AOTI.
Solutions :
- Vérifiez que le modèle a été compilé pour le même type de périphérique (CPU vs GPU).
- Si vous utilisez CUDA, assurez-vous que le modèle est compilé avec
device='cuda'. - Pour le chargement, spécifiez explicitement le périphérique :
model = aoti_load(path, device='cuda'). - Inspectez les paramètres du modèle pour repérer les éventuels décalages.
3. Échecs de chargement des constantes
Symptômes : "Error loading constants" ou "constant not found" lors de l'appel à aoti_load ou aoti_load_package.
Solutions :
- Vérifiez que le fichier
.soet les fichiers de constantes (.json,.ptou.pk) sont présents et accessibles. - Si vous utilisez
aoti_compile_and_package, assurez-vous que l'empaquetage s'est terminé correctement. - Pour les modèles avec des constantes lourdes, augmentez la mémoire disponible.
- Vérifiez l'intégrité du fichier avec
sha256sum.
4. Erreurs d'exécution générales
Symptômes : Erreurs diverses lors de l'exécution du modèle compilé (shape mismatch, dtype, etc.).
Solutions :
- Comparez la sortie du modèle non compilé avec celle du modèle compilé sous les mêmes conditions.
- Utilisez
torch._dynamo.exportavecatencomme opérateur backend pour tracer le graphe. - Vérifiez les dimensions d'entrée : les modèles AOTI peuvent nécessiter des formes spécifiques.
- Consultez les journaux PyTorch détaillés :
export TORCH_LOGS=+dynamo,+inductor.
Interfaces concernées
Ce skill s'applique principalement aux API suivantes :
torch._export.aot_compile(compilation directe)torch.aot_compile(interface publique, si disponible)torch._inductor.package.aoti_compile_and_package(compilation + empaquetage)torch._inductor.package.aoti_load_package(chargement depuis un empaquetage)torch._inductor.package.aoti_load(chargement d'un fichier.so)
Exemples de diagnostic
import torch
import torch._export as export
# Exemple : compilation avec débogage activé
torch._dynamo.config.verbose = True
# Compilation de test
model = torch.nn.Linear(10, 5)
example_inputs = (torch.randn(1, 10, device='cuda'),)
with torch._dynamo.config.patch(verbose=True):
compiled_path = export.aot_compile(model, example_inputs, options={"aot_inductor": True})
print("Compilation réussie sur", compiled_path)
En résumé
Si vous rencontrez une erreur AOTI :
- Identifiez le type d'erreur (segfault, device, constantes, runtime).
- Suivez les solutions correspondantes dans ce guide.
- Activez les logs de débogage pour obtenir plus d'informations.
- Réduisez le problème à un exemple minimal.
- Testez dans un environnement propre (nouveau conteneur Docker, nouvelle installation conda).
Pour les problèmes persistants, ouvrez un ticket sur PyTorch GitHub avec les détails de votre environnement et la trace complète.