技能 debug-cuda-crash
🔧

debug-cuda-crash

安全 ⚡ 包含脚本

Déboguer les plantages CUDA dans FlashInfer

Les plantages CUDA laissent souvent aucune information de débogage. Ce tutoriels vous apprend à utiliser la journalisation des API de FlashInfer pour capturer les métadonnées des tenseurs avant les plantages. Apprenez à identifier rapidement les incompatibilités de formes, les erreurs de dtype et les problèmes numériques.

支持: Claude Codex Code(CC)
⚠️ 68
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“debug-cuda-crash”。 Mon batch_decode_with_padded_kv_cache a planté avec 'accès mémoire illégal'

预期结果:

  • Définir les variables d'environnement : export FLASHINFER_LOGLEVEL=3, export FLASHINFER_LOGDEST=debug.log
  • Exécuter à nouveau votre code - les entrées seront journalisées AVANT le plantage
  • Vérifier le journal pour les formes et dtypes des tenseurs
  • Problèmes courants : incompatibilité de forme, mauvais dtype, tenseur CPU passé au GPU
  • Pour une analyse plus approfondie : compute-sanitizer --tool memcheck python votre_script.py

正在使用“debug-cuda-crash”。 Ma sortie d'attention contient des valeurs NaN

预期结果:

  • Utiliser la journalisation de niveau 5 : export FLASHINFER_LOGLEVEL=5
  • Vérifier nan_count et inf_count dans le fichier journal
  • Chercher les grandes valeurs min/max indiquant une instabilité numérique
  • Vérifier les opérations précédentes pour division par zéro ou dépassement

正在使用“debug-cuda-crash”。 Mon entraînement distribué a planté sur plusieurs GPU

预期结果:

  • Utiliser des journaux spécifiques au processus : export FLASHINFER_LOGDEST=rank_%i.log
  • Chaque processus GPU crée son propre fichier journal
  • Vérifier les journaux de chaque rang pour identifier quel processus a planté en premier
  • Comparer les entrées entre les rangs pour trouver les incohérences

安全审计

安全
v4 • 1/17/2026

All 160 static findings are FALSE POSITIVES. This skill contains ONLY markdown documentation with zero executable code. The 'backtick execution' findings flag markdown code block formatting, not shell commands. 'Weak cryptographic algorithm' findings flag hash identifiers in metadata. 'System reconnaissance' findings flag environment variable documentation. Pure educational content for CUDA debugging.

2
已扫描文件
754
分析行数
1
发现项
4
审计总数

风险因素

⚡ 包含脚本 (1)
审计者: claude 查看审计历史 →

质量评分

38
架构
100
可维护性
87
内容
19
社区
100
安全
78
规范符合性

你能构建什么

Déboguer les plantages ML en production

Diagnostiquer les erreurs CUDA dans les charges de service LLM en production à l'aide de la journalisation des API pour capturer les entrées qui échouent

Déboguer les erreurs mémoire du noyau

Utiliser compute-sanitizer combiné avec la journalisation des API pour trouver les accès mémoire illégaux et les erreurs hors limites

Corriger l'instabilité numérique

Détecter les valeurs NaN/Inf dans les calculs d'attention en examinant les statistiques des tenseurs à partir des sorties journalisées

试试这些提示

Débogage de plantage basique
Mon code FlashInfer a planté avec 'accès mémoire illégal'. Aidez-moi à configurer la journalisation des API pour déboguer cela.
Problèmes numériques
Mon noyau d'attention produit des valeurs NaN. Comment utiliser la journalisation de niveau 5 pour trouver la source ?
Débogage multi-GPU
Mon travail d'entraînement multi-GPU a planté. Montrez-moi comment journaliser chaque rang séparément pour le débogage.
Erreurs mémoire
Combiner la journalisation des API FlashInfer avec compute-sanitizer pour déboguer les erreurs d'accès mémoire. Donnez-moi la commande exacte.

最佳实践

  • Toujours commencer par la journalisation de niveau 3 pour les métadonnées des tenseurs sans surcharger la sortie
  • Journaliser dans un fichier plutôt que dans stdout pour préserver les journaux après les plantages
  • Comparer le dernier appel API réussi (entrées et sorties journalisées) avec le premier appel échoué (seulement les entrées journalisées)

避免

  • Utiliser la journalisation de niveau 5 par défaut (ajoute une surcharge de statistiques pour chaque appel)
  • Journaliser dans stdout quand le programme plante (la sortie peut être perdue)
  • Oublier de désactiver la journalisation en production (ajoute une surcharge même au niveau 1)

常见问题

Quelles versions CUDA prennent en charge la journalisation des API ?
La journalisation des API fonctionne avec toutes les versions CUDA prises en charge par FlashInfer (CUDA 11.8+). La journalisation est implémentée en Python.
La journalisation ralentit-elle mon code ?
Le niveau 0 (désactivé) n'a aucune surcharge. Les niveaux 1-3 ajoutent une surcharge minimale pour l'extraction des métadonnées.
Puis-je utiliser cela avec torch.compile() de PyTorch ?
Oui. La journalisation des API fonctionne avec le code PyTorch compilé. Les statistiques (niveau 5) sont ignorées pendant la capture du graphe.
Mes données sont-elles en sécurité dans les fichiers de journalisation ?
Les fichiers de journalisation contiennent les formes des tenseurs, dtypes et statistiques. Ils ne contiennent PAS les valeurs réelles des tenseurs.
Que faire si aucun journal n'apparaît même avec FLASHINFER_LOGLEVEL=3 ?
Vérifiez que la variable d'environnement est définie. Vérifiez que l'API a le décorateur @flashinfer_api.
En quoi est-ce différent des outils intégrés de CUDA ?
La journalisation des API montre QUELLES données ont causé le plantage. Les outils comme compute-sanitizer montrent OÙ cela s'est produit. Utilisez les deux ensemble.

开发者详情

文件结构

📄 SKILL.md