NeMo Evaluator Skill
Quick Reference
nemo-evaluator-launcher CLI
# Run evaluation
uv run nemo-evaluator-launcher run --config <path.yaml>
uv run nemo-evaluator-launcher run --config <path.yaml> -t <a_single_task_to_be_run_by_name>
uv run nemo-evaluator-launcher run --config <path.yaml> -t <task_name_1> -t <task_name_2> ...
uv run nemo-evaluator-launcher run --config <path.yaml> -o evaluation.nemo_evaluator_config.config.params.limit_samples=10 ...
# Preview the resolved config and the sbatch script without running the evaluation
uv run nemo-evaluator-launcher run --config <path.yaml> --dry-run
# Check status (--json for machine-readable output)
uv run nemo-evaluator-launcher status <invocation_id> --json
# Get evaluation run info (output paths, slurm job IDs, cluster hostname, etc.)
uv run nemo-evaluator-launcher info <invocation_id>
# Copy just the logs (quick — good for debugging)
uv run nemo-evaluator-launcher info <invocation_id> --copy-logs ./evaluation-results/
# For artifacts: use `nel info` to discover paths. If remote, SSH to explore and rsync what you need.
# If local, just read directly from the paths shown by `nel info`.
# ssh <user>@<hostname> "ls <artifacts_path>/"
# rsync -avzP <user>@<hostname>:<artifacts_path>/{results.yml,eval_factory_metrics.json,config.yml} ./evaluation-results/<invocation_id>.<job_index>/artifacts/
# Resume a failed/interrupted run (re-sbatches existing run.sub in the original run directory)
uv run nemo-evaluator-launcher resume <invocation_id>
# List past runs
uv run nemo-evaluator-launcher ls runs --since 1d
# List available evaluation tasks (by default, only shows tasks from the latest released containers)
uv run nemo-evaluator-launcher ls tasks
uv run nemo-evaluator-launcher ls tasks --from_container nvcr.io/nvidia/eval-factory/simple-evals:26.03
Workflow
Le workflow complet d'évaluation est divisé en les étapes suivantes que tu dois suivre DANS L'ORDRE.
- Crée ou modifie une config en utilisant la skill
nel-assistant. Si l'utilisateur fournit une exécution passée, utilise l'artefactconfig.ymlcomme point de départ. - Exécute l'évaluation. Consulte
references/run-evaluation.mdlors de l'exécution de cette étape. - Monitorage de la progression (OBLIGATOIRE après chaque
nel run) : interroge le statut régulièrement jusqu'à SUCCESS/FAILED. Consultereferences/check-progress.md. - Actions post-exécution (quand l'état terminal est atteint) :
- Quand le statut d'évaluation est
SUCCESS, analyse les résultats. Consultereferences/analyze-results.mdlors de l'exécution de cette étape. - Quand le statut d'évaluation est
FAILED, débogue l'exécution échouée. Consultereferences/debug-failed-runs.mdlors de l'exécution de cette étape.
- Quand le statut d'évaluation est
Key Facts
- Les informations spécifiques aux benchmarks apprises lors du lancement/analyse des évals doivent être ajoutées à
references/benchmarks/ - PPP = compte Slurm (le champ
accountdans cluster_config.yaml). Quand l'utilisateur dit « change PPP to X », mets à jour la valeur du compte (ex:coreai_dlalgo_compeval→coreai_dlalgo_llm). - Paires de jobs Slurm : NEL (nemo-evaluator-launcher) soumet des jobs Slurm appairés — un job RUNNING + un job restart PENDING (pour quand le walltime de 4h expire). N'annule jamais les jobs restart en attente — ils sont attendus et nécessaires.
- Exigence du cache HF : Pour les configs avec
HF_HUB_OFFLINE=1, les modèles doivent être pré-téléchargés dans le cache HF sur chaque cluster avant le lancement. Avant d'exécuter un modèle sur un nouveau cluster, demande toujours à l'utilisateur si le modèle est déjà en cache. Si ce n'est pas le cas, sur le nœud de connexion du cluster :python3 -m venv hf_cli && source hf_cli/bin/activate && pip install huggingface_hubpuisHF_HOME=/lustre/fsw/portfolios/coreai/users/<username>/cache/huggingface hf download <model>. Sans cela, vLLM échouera avecLocalEntryNotFoundError. data_parallel_sizeest par nœud :dp_size=1avecnum_nodes=8signifie 8 instances de modèle au total (une par nœud), avec équilibre de charge par haproxy. N'interprète PASdp_sizecomme le nombre de réplicas global.- Intercepteur
payload_modifier: La listeparams_to_remove(ex:[max_tokens, max_completion_tokens]) supprime ces champs du payload sortant, levant intentionnellement les limites de longueur de sortie pour que les modèles de raisonnement puissent réfléchir aussi longtemps que nécessaire. - Contournement auto-export git : Le conteneur export (
python:3.12-slim) n'a pasgit. Quand tu installes le launcher depuis une URL git, définisauto_export.launcher_install_cmdpour installer git d'abord (ex:apt-get update -qq && apt-get install -qq -y git && pip install "nemo-evaluator-launcher[all] @ git+...#subdirectory=packages/nemo-evaluator-launcher"). - N'utilise PAS
nemo-evaluator-launcher export --dest local— il ne génère qu'un JSON récapitulatif (processed_results.json), il NE copie PAS les logs ou artefacts réels malgré l'acceptation des flags--copy_logset--copy-artifacts.nel info --copy-artifactsfonctionne mais copie tout (très lent pour les grands benchmarks). Approche préférée : utilisenel infopour découvrir les chemins — si local, lis directement ; si distant, SSH pour explorer et rsync seulement ce dont tu as besoin. Note quenel infoaffiche les artefacts standard mais les benchmarks produisent des artefacts supplémentaires dans des sous-répertoires — explore pour les trouver.