pytorch/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.

Qu'est-ce que aoti-debug ?

Ce skill est conçu pour aider les développeurs PyTorch à diagnostiquer et résoudre les problèmes courants rencontrés avec AOTInductor (AOTI), un compilateur spécialisé pour l'inférence optimisée. Il intervient lors de scénarios complexes tels que les erreurs de segmentation (segfaults) après une compilation AOTI, les erreurs de non-correspondance de périphérique entre le modèle compilé et l'environnement d'exécution, les échecs de chargement des constantes du modèle, ou les erreurs d'exécution générales des fonctions aot_compile, aot_load, aoti_compile_and_package et aoti_load_package. Le skill propose des étapes de débogage structurées et des vérifications de configuration, permettant d'isoler rapidement les causes racines. Il prend en charge les workflows de déploiement PyTorch sur CPU et GPU, et s'intègre avec les outils standard de profiling et de débogage. En suivant ses recommandations, l'utilisateur peut réduire significativement le temps passé à traquer les bugs liés à la compilation AOTI.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/pytorch/pytorch/tree/main/skills/aoti-debug

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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_compile ou torch._export.aot_compile a é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 gdb ou llvm-symbolizer pour 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 .so et les fichiers de constantes (.json, .pt ou .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.export avec aten comme 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 :

  1. Identifiez le type d'erreur (segfault, device, constantes, runtime).
  2. Suivez les solutions correspondantes dans ce guide.
  3. Activez les logs de débogage pour obtenir plus d'informations.
  4. Réduisez le problème à un exemple minimal.
  5. 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.

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

pytorch/add-uint-support

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

pytorch/at-dispatch-v2

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

pytorch/docstring

Write docstrings for PyTorch functions and methods following PyTorch conventions. Use when writing or updating docstrings in PyTorch code.

pytorch/metal-kernel

Write Metal/MPS kernels for PyTorch operators. Use when adding MPS device support to operators, implementing Metal shaders, or porting CUDA kernels to Apple Silicon. Covers native_functions.yaml dispatch, host-side operators, and Metal kernel implementation.

pytorch/pr-review

Review PyTorch pull requests for code quality, test coverage, security, and backward compatibility. Use when reviewing PRs, when asked to review code changes, or when the user mentions "review PR", "code review", or "check this PR".

pytorch/pyrefly-type-coverage

Migrate a file to use stricter Pyrefly type checking with annotations required for all functions, classes, and attributes.

pytorch/skill-writer

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

pytorch/triaging-issues

Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.

Skills associés