Skip to content
Back to skills

Training Evaluation

ASecurity

"Plan and safely run SOLO/MMDetection-era training, checkpoint

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 9, 2026
businesspythonshellbashapibackendperformance

Works with

  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 9, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill training-evaluation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Training Evaluation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Training Evaluation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-training-evaluation-8899db05/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-training-evaluation-8899db05)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: training-evaluation
description: "Plan and safely run SOLO/MMDetection-era training, checkpoint
  evaluation, log analysis, robustness benchmarking, and experimental FLOPs
  measurements, with explicit CUDA, data, distributed, and legacy dependency
  caveats."
metadata:
  disco-role: operating
disable-model-invocation: true
license: NOASSERTION
---

# Training and evaluation

Use this skill when the researcher needs to train a SOLO detector, evaluate a
local checkpoint, compare model-zoo baselines, inspect JSON training logs,
measure robustness to image corruptions, or estimate model complexity. This is
an operational guide for the PyTorch/MMDetection v1-era implementation, not a
claim that a modern MMDetection release is API-compatible.

## Route the request

Choose one path before running an expensive command:

- **Train**: a config, writable work directory, compatible dataset, and CUDA
  GPUs are required. Start with a bounded smoke or a resumed run; do not start
  a 1x/3x schedule merely to test installation.
- **Evaluate**: a matching config, local checkpoint, and test dataset are
  required. Use the repository's legacy instance-segmentation evaluator for
  SOLO masks and its generic detector evaluator for bbox/mask tasks. Save a
  `.pkl` or COCO JSON output.
- **Analyze logs**: use the bundled `scripts/analyze_log.py` for a safe local
  JSON-lines summary or bounded CSV export. It does not import MMDetection or
  access a checkout.
- **Robustness**: use the repository's legacy corruption-evaluation entry point
  only after clean evaluation works and `imagecorruptions` plus the corruption
  benchmark data/pipeline are available. It is single-GPU in the documented
  workflow and is expensive.
- **FLOPs/parameters**: use the repository's legacy FLOPs entry point only for
  a CUDA-capable, locally importable config. Treat the result as experimental,
  shape-dependent, and incomplete for unsupported/custom operators.

Read [references/commands-and-checklists.md](references/commands-and-checklists.md)
for generic path-safe templates and preflight checks. Read
[references/checkpoints-metrics.md](references/checkpoints-metrics.md) for
checkpoint semantics and metric interpretation. Read
[references/robustness-and-flops.md](references/robustness-and-flops.md) for
benchmarking limits. Read
[references/troubleshooting.md](references/troubleshooting.md) when anything
fails.

## Hard prerequisites and boundaries

- This repository targets **PyTorch 1.1 or higher**, with the documented
  legacy stack centered on **CUDA 9.x+ and MMCV 0.2.16 (`mmcv==0.2.16`)**. The
  installation docs say PyTorch >=1.5 was not tested; newer stacks may need
  adaptation.
- Full training and dataset evaluation normally need CUDA, compiled/custom
  operators, local annotations/images, and substantial time/storage. A CPU
  import or config parse does **not** validate custom CUDA kernels, distributed
  behavior, or end-to-end metrics.
- Never download weights or datasets implicitly. Require user-supplied local
  paths and verify them before launching work. Keep outputs outside source
  files; use a dedicated work directory.
- Do not use publishing, upgrade, conversion, Slurm, or distributed shell
  helpers as if they were harmless diagnostics. Their side effects and
  environment assumptions are documented only as boundaries here.

## Config and dataset preflight

Before train or test, inspect the selected config and its effective values:

1. Confirm the model family/head, `data_root`, train/val/test annotation files,
   image prefixes, class count, test pipeline, batch size, workers, `work_dir`,
   `total_epochs`, `lr_config`, `workflow`, `checkpoint_config`, and
   `dist_params.backend`.
2. This checkout's configs are mostly self-contained Python configs rather than
   modern `_base_` inheritance graphs. If a user config uses inheritance,
   resolve every parent in the same environment and record the effective merged
   values; do not assume a current MMDetection config loader understands it.
3. For COCO-style data, expect `annotations/instances_*.json` alongside the
   corresponding image directories under the configured root. SOLO training
   collects `img`, `gt_bboxes`, `gt_labels`, and `gt_masks`; a test pipeline
   collects only image inputs. Check that annotation class ids and configured
   classes agree.
4. Check that a checkpoint belongs to the same model/head and preprocessing
   contract. A readable `.pth` is not necessarily compatible.

## Run only after preflight

Single-GPU command shape (substitute the selected checkout's legacy entry-point
command; the generated skill does not depend on that checkout being present):

```bash
<TRAIN_ENTRY_POINT> <CONFIG.py> --work_dir <WORK_DIR> --gpus 1
<INSTANCE_EVAL_ENTRY_POINT> <CONFIG.py> <CHECKPOINT.pth> --out <RESULTS.pkl> --eval segm
<DETECTOR_EVAL_ENTRY_POINT> <CONFIG.py> <CHECKPOINT.pth> --out <RESULTS.pkl> --eval bbox segm
```

For a visual test, add `--show` only when a display is available; headless
sessions should save artifacts instead. In this legacy interface, an
instance-evaluation `--json_out` value is a filename prefix rather than a
normal `.json` output path; prefer `--out` and `--eval` for the simplest
reproducible result artifact.

For distributed execution, use the environment's supported launcher or a
reviewed equivalent rather than copying a cluster command blindly. The
following is conceptual argument shape, not a command to paste without a
reviewed entry point:

```text
<DISTRIBUTED_LAUNCHER> <TRAIN_ENTRY_POINT> <CONFIG.py> --launcher pytorch --work_dir <WORK_DIR>
<DISTRIBUTED_LAUNCHER> <DETECTOR_EVAL_ENTRY_POINT> <CONFIG.py> <CHECKPOINT.pth> --launcher pytorch --out <RESULTS.pkl> --eval bbox segm --tmpdir <TEMP_DIR>
```

Use one process per GPU, an NCCL-compatible CUDA setup, a unique rendezvous
port per concurrent job, and a shared/readable output location. Confirm rank-0
is the only process writing final aggregate outputs. Multi-GPU evaluation may
use CPU temporary collection or GPU collection; both need communication and
sufficient temporary space.

## Training decisions and stop conditions

- The published baseline learning rate assumes 8 GPUs × 2 images/GPU
  (effective batch size 16). If the effective batch changes, use the documented
  linear scaling rule only as an explicit experiment; `--autoscale-lr` scales
  against 8 GPUs for the non-distributed training path.
- `resume_from` restores model weights, optimizer state, and epoch for an
  interrupted run. `load_from` restores weights only and starts training from
  epoch 0, which is the finetuning behavior. Do not substitute one for the
  other.
- Stop before full training when data paths, class mapping, config construction,
  checkpoint compatibility, CUDA/custom-op import, or the first bounded loss
  step is unresolved. Stop an active run on persistent NaN/Inf loss, corrupted
  checkpoints, data leakage or annotation mismatch, rank desynchronization,
  repeated OOM after reducing the planned batch, or a metric that cannot be
  compared under the same dataset/config/checkpoint protocol.
- Preserve the config text, exact command, environment versions, seed,
  checkpoint filename, log JSON, and evaluation output with each result.

## Metrics and interpretation

Use `bbox` for box AP/AR, `segm` for instance-mask AP/AR, `keypoints` only for a
compatible task, and proposal metrics only when proposals are the intended
output. COCO reports AP, AP50, AP75, APs, APm, APl and AR variants; compare the
same metric, split, class set, max detections, preprocessing, and checkpoint.
SOLO model-zoo numbers are COCO/minival-era reference points, not acceptance
thresholds for a new dataset. Report clean performance before corrupted-data
performance, and do not compare throughput or FLOPs across different input
shapes, hardware, operator coverage, or post-processing conventions.

## Verification boundary

Safe candidates are parser-help for the selected legacy training/evaluation
entry point and a tiny local JSON log run through
`scripts/analyze_log.py`. Do not claim that these checks validate training,
COCO metrics, distributed synchronization, FP16 stability, or custom CUDA
kernels. Full training, COCO/VOC evaluation, robustness sweeps, model-zoo
weight downloads, and FLOPs runs remain user-approved, data/backend-dependent
experiments.

Files in this skill

  • SKILL.md8.2 KB
  • references/checkpoints-metrics.md5 KB
  • references/commands-and-checklists.md6.5 KB
  • references/robustness-and-flops.md4.4 KB
  • references/troubleshooting.md8.9 KB
  • scripts/analyze_log.py7.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.