eagle3-review-logs

Par nvidia · model-optimizer

Examiner les journaux d'expériences du pipeline EAGLE3 depuis le répertoire `experiments/` du launcher. Résume le statut succès/échec pour les 4 tâches, diagnostique les échecs avec leurs causes racines et corrections, et signale les avertissements. À utiliser lorsque l'utilisateur demande à examiner les journaux de jobs, vérifier les résultats d'expériences, ou diagnostiquer pourquoi une tâche spécifique a échoué.

npx skills add https://github.com/nvidia/model-optimizer --skill eagle3-review-logs

Examiner les journaux d'expérience EAGLE3

Analyser les journaux de sortie d'une exécution du pipeline EAGLE3 lancée via launch.py ou slurm.py.

Étape 0 — Localiser les journaux d'expérience

Localisez le répertoire d'expérience. Par défaut, c'est experiments/ relatif à la racine du lanceur, ou partout où --job-dir a été pointé.

ls -td experiments/cicd/cicd_* | head -10

Si aucune expérience n'existe, demandez le répertoire à l'utilisateur.

Étape 1 — Lire tous les journaux de tâche

Chaque expérience a un sous-répertoire par tâche (0–3). Les noms de fichiers de journal varient selon le mode de lancement (Slurm écrit sbatch_*.out, Docker local écrit *.log), donc correspondez les fichiers journaux de façon générale et lisez la fin de chacun en un seul appel Bash — les erreurs apparaissent à la fin :

find experiments/<exp_id>/ -type f \( -name '*.out' -o -name '*.log' \) | sort | while read -r f; do
  echo "=== $f ==="; tail -200 "$f"; echo
done

Étape 2 — Analyser

Pour chaque journal de tâche, vérifiez :

  • Sortie / annulation : DUE TO TIME LIMIT, FAILED, signal (p. ex., signal 15)
  • Exceptions Python / tracebacks : la dernière exception est généralement la cause racine
  • Erreurs CUDA : OOM, timeout NCCL
  • État Slurm : COMPLETED, FAILED, TIMEOUT, OUT_OF_MEMORY
  • Indicateurs de succès : "Saved N samples", "Successfully processed N conversations", ligne de loss d'entraînement, sortie AR

Étape 3 — Produire un rapport

Générez un rapport markdown structuré :

Résumé

  • État général : PASSED / FAILED / MIXED / PARTIAL
  • Détail des tâches : p. ex., task_0 TIMEOUT, task_1 FAIL, task_2 ignorée, task_3 ignorée

Résultats des tâches

Pour chaque tâche (0–3) :

Task N — \<nom> : PASS / FAIL / TIMEOUT

  • Sortie clé : (p. ex., "3277/3295 samples generated" ou "Script not found")
  • Erreur (en cas d'échec) : message d'erreur cité, max 10 lignes
  • Cause racine : diagnostic sur une ligne
  • Correction suggérée : étape concrète

Avertissements

Problèmes non critiques à noter (près de l'OOM, avertissements de tokenizer, débit faible).

Étape 4 — Suggérer les prochaines étapes

Selon les résultats :

  • Si une tâche a échoué en raison d'un problème connu, suggérez la correction et comment relancer depuis cette tâche :

    uv run launch.py --yaml examples/<Org>/<Model>/hf_offline_eagle3.yaml \
        pipeline.task_0.skip=true \
        --yes
  • Si le motif d'échec semble nouveau, suggérez de le signaler dans le traceur de triage interne de l'équipe, et utilisez /eagle3-triage pour un diagnostic plus approfondi.

  • Si toutes les tâches ont réussi, suggérez d'exécuter /eagle3-validate pour confirmer que l'AR atteint le seuil.

Motifs bénins connus (NE PAS marquer comme échecs)

Motif Explication
code de sortie 143 du serveur vLLM SIGTERM — le serveur a été arrêté après la fin des requêtes. Attendu.
CANCELLED AT ... DUE TO TASK FAILURE après exit code: 0 Nettoyage Slurm des nœuds de travail après succès de la tâche principale.
destroy_process_group() was not called Avertissement bénin de fermeture PyTorch.
tokenizer class ... not equal to the registered tokenizer class Avertissement inoffensif de désadéquation de tokenizer.

Skills similaires