log-analysis

par nvidia

Analyser un fichier journal de tâche SLURM pour l'attribution des causes profondes d'échec et les décisions de redémarrage à l'aide de NVRxLogAnalyzer. Utiliser lorsque vous disposez d'un journal de tâche d'entraînement SLURM et…

npx skills add https://github.com/nvidia/nvidia-resiliency-ext --skill log-analysis

Skill: log_analysis

Analyze a SLURM job log file for failure root-cause attribution and restart decisions using NVRxLogAnalyzer.

Script: scripts/nvrx_logsage.pyattribution/log_analyzer/nvrx_logsage.py


What it does

  1. Reads the log file (UTF-8, falls back to latin-1).
  2. Splits into per-cycle chunks using chunk_logs_strict (scans for profiling.py:.*Cycle:\s*N markers). Falls back to a single chunk when no markers are found.
  3. For each chunk, extracts application errors via return_application_errors (logsage).
  4. Classifies each chunk with fast-path pattern matching (training done, SLURM cancelled, preemption, time limit) or calls the LLM via get_proposed_solution_cat.
  5. Returns one result tuple per cycle.

CLI

python scripts/nvrx_logsage.py \
    --log-path /path/to/job.log \
    [--model MODEL] \
    [--temperature 0.2] \
    [--top_p 0.7] \
    [--max_tokens 8192] \
    [--exclude_nvrx_logs] \
    [--is_per_cycle]
FlagDefaultDescription
--log-pathrequiredPath to the job log file
--modelnvidia/nemotron-3-super-120b-a12bLLM model
--temperature0.2Sampling temperature
--top_p0.7Top-p nucleus sampling
--max_tokens8192Max output tokens
--exclude_nvrx_logs / --no-exclude_nvrx_logsonStrip nvidia_resiliency_ext / [workload:] lines before chunking (default on; use --no-exclude_nvrx_logs to disable)
--is_per_cycleoffSkip chunking — treat the whole file as a single pre-split cycle

Programmatic API

from nvidia_resiliency_ext.attribution.log_analyzer.nvrx_logsage import NVRxLogAnalyzer

analyzer = NVRxLogAnalyzer({
    "log_path": "/path/to/job.log",
    "model": "nvidia/nemotron-3-super-120b-a12b",
    "temperature": 0.2,
    "top_p": 0.7,
    "max_tokens": 8192,
    "exclude_nvrx_logs": False,
    "is_per_cycle": False,
})
results = analyzer.run_sync({"log_path": "/path/to/job.log"})
# results: tuple[list[RawAnalysisResultItem], AttributionState]

Run-time overrides take precedence over constructor config (see base.effective_run_or_init_config).


Output

Each returned RawAnalysisResultItem keeps raw_text with five fields joined by \n, but also carries the parsed fields directly so consumers do not reparse the text:

<restart_decision>      # "RESTART IMMEDIATE" | "STOP - DONT RESTART IMMEDIATE"
<error_explanation>     # short string or ""
<attribution_text>      # "Attribution: Primary issues: [...], Secondary issues: [...]"
<additional_detail>     # extended text or ""
<checkpoint_saved>      # "True" | "False"

The serialized cycle fields are auto_resume, auto_resume_explanation, attribution_text, checkpoint_saved_flag, primary_issues, and secondary_issues, plus the parsed cycle action. The overall client decision is emitted separately as recommendation.action / recommendation.source. The runner's internal AttributionState.STOP is set only when the parsed cycle action is STOP.

Fast-path decisions (no LLM call)

Detected conditionrestart_decisionattribution_text
Training completeSTOP - DONT RESTART IMMEDIATETRAINING DONE
SLURM preemptionRESTART IMMEDIATESLURM CANCELLED DUE TO PREEMPTION
SLURM step cancelledRESTART IMMEDIATESLURM STEP CANCELLED
SLURM job requeueRESTART IMMEDIATESLURM STEP CANCELLED JOB REQUEUE
Time-limit exceededSTOP - DONT RESTART IMMEDIATEstatus string
Empty logNO LOGS
No errors foundERRORS NOT FOUND
LLM failureLLM FAILURE

Prerequisites

  • LLM_API_KEY set (env var, LLM_API_KEY_FILE, or ~/.llm_api_key)
  • Package installed: pip install 'nvidia-resiliency-ext[attribution]' or pip install -e '.[attribution]' from repo root

Plus de skills de nvidia

compileiq-debug
nvidia
Utilisez quand quelque chose ne va pas : Search() bloque, toutes les évaluations retournent INVALID_SCORE, les scores ne s'améliorent pas, chaque configuration retourne le même nombre, erreurs ptxas…
create-github-pr
nvidia
Créer des pull requests GitHub en utilisant l'interface en ligne de commande gh. Utiliser lorsque l'utilisateur souhaite créer une nouvelle PR, soumettre du code pour révision, ou ouvrir une pull request. Mots-clés de déclenchement -…
nemoclaw-maintainer-cross-issue-sweep
nvidia
Analyse les autres problèmes ouverts pour trouver ceux qu’une PR donnée pourrait également corriger ou casser accidentellement. Génère des opportunités de correctifs adjacents et des risques de contradiction avec fichier:ligne…
fhir-basics
nvidia
Apprend aux agents comment fonctionnent les API FHIR R4, quelles ressources sont disponibles, comment les interroger avec des paramètres de recherche, et comment analyser correctement tous les formats de réponse…
compileiq-validate-result
nvidia
Utiliser APRÈS qu'une recherche soit terminée et AVANT de réclamer un accélérateur ou d'expédier un ACF. Charge le CSV dump_results, extrait les K meilleurs candidats (mono-objectif)…
changelog-audit
nvidia
Auditer le CHANGELOG.md de Warp avant une publication : récupérer les entrées perdues, trier par impact utilisateur, affiner le langage des entrées, ajuster les retours à la ligne et (en mode branche de publication) mettre à jour la comparaison…
maintain-dynamic-plugins
nvidia
Maintenir les chargeurs de plugins dynamiques NeMo Relay, les manifestes, les SDK natifs Rust, le protocole worker gRPC, le SDK worker Python, la documentation, les tests et la couverture du workflow de publication
dgx-diagnose
nvidia
Diagnostiquer les problèmes courants du DGX Station GB300 — plantages CUDA, ciblage incorrect du GPU, bugs de conteneur vLLM/SGLang, problèmes d'état MIG, erreurs NVLink/Fabric Manager,…