Skip to content
Back to skills

Loader Pipelines

ASecurity

"Build, inspect, and troubleshoot FFCV Loader pipelines: ordering,

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
testinggoperformance

Security analysis

A100/100

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

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill loader-pipelines --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Loader Pipelines?

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

Security grade badge for Loader Pipelines
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-loader-pipelines/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-loader-pipelines)

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: loader-pipelines
description: "Build, inspect, and troubleshoot FFCV Loader pipelines: ordering,
  decoders, native and torch transforms, custom Operation contracts, subsets,
  partial batches, distributed sampling, and training integration."
metadata:
  disco-role: operating
disable-model-invocation: true
license: Apache 2.0
---

# FFCV loader pipelines

Use this sub-skill when a Researcher must construct or debug an FFCV
`Loader`, its per-field `PipelineSpec`, or the operations between a field
decoder and a training step. It owns traversal/order semantics, decoder-first
pipeline construction, state and preallocated-memory contracts, NumPy/JIT to
PyTorch/CPU/GPU boundaries, index-aware operations, filtering/subsets,
partial batches, and distributed/training integration.

Do not use it for dataset writing/field encoding or broad cache and throughput
tuning; hand those concerns to the writer or performance sub-skill. Keep the
pipeline's exact field names, target shapes/dtypes/devices, order, seed,
subset, and `drop_last` policy explicit before changing code.

## Fast routing

1. Identify the `.beton` fields and desired outputs. Start with [pipelines.md](references/pipelines.md).
2. Choose explicit decoder and transform stages from [image-pipelines.md](references/image-pipelines.md)
   or the relevant field decoder. A decoder is first; put `ToTensor` before any
   torch operation and `ToDevice` before GPU-only work.
3. For a custom operation, read [custom-operations.md](references/custom-operations.md)
   and validate its state, allocation, callable signature, partial-batch, and
   optional `with_indices` behavior.
4. Apply subset/order/distributed/drop-last decisions and then use
   [training-integration.md](references/training-integration.md) for a bounded
   loop. Diagnose construction and runtime failures with
   [troubleshooting.md](references/troubleshooting.md).

## Non-negotiable rules

- A missing pipeline entry gets the field's default decoder plus `ToTensor()`;
  an explicit `None` disables that field. Do not confuse omitted with disabled.
- A sequence is normalized into a `PipelineSpec`; if its first operation is an
  instance of the field's decoder class, it is consumed as the decoder. A
  `PipelineSpec(source=..., decoder=..., transforms=...)` is useful for
  explicit sources and shared operation references.
- Native NumPy operations must remain before `ToTensor`/`ToDevice`. A
  `torch.nn.Module` is wrapped automatically as `ModuleWrapper`, but it is not
  a JIT/Numba operation; place it after tensor conversion and on the intended
  device. `ToTorchImage` changes HWC batches to BCHW.
- Every non-default operation must accurately advance `State` and return an
  allocation query when it writes a new output. Functions must accept the
  arguments the generated graph supplies, return the effective batch, and never
  assume `batch_size` samples when `drop_last=False`.
- `with_indices=True` receives the selected dataset indices, not positions in
  the current batch. Seed or key deterministic index-aware behavior from those
  indices; do not use an unstable worker/thread RNG as the identity.
- `SimpleRGBImageDecoder` rejects variable-resolution image datasets. Use a
  crop/resize decoder when a fixed output shape is required.
- `QUASI_RANDOM` is unavailable with `distributed=True`; use sequential or
  random order with a shared explicit seed instead.

## Verification handoff

For a new pipeline, verify a tiny synthetic `.beton` fixture: field count and
output order, exact shapes/dtypes/devices, all samples under both full and
partial batches, two epochs with the intended seed/order, and a deliberately
variable-resolution image case if images are involved. The installed facts for
this checkout support CPU synthetic loader smoke and tiny A100 CUDA allocation;
CUDA-specific native suites are optional because the GPU is shared.

Two high-value synthetic checks beyond the baseline tests are: (1) write 7 fixed-size images plus labels, load with `indices=[6, 1, 5, 0, 4, 2, 3]`, `drop_last=False`, and an index-aware transform that derives its output from each original id; assert the same id keeps the same result across sequential and seeded-random epochs and that the final one-row batch has no stale values; (2) write mixed-resolution images and run a crop-decoder -> native flip -> `ToTensor` -> `ToDevice` -> `ToTorchImage` -> torch module pipeline on a one-row tail, asserting HWC/BCHW layout, dtype, device, and active batch length at every boundary. Run these outside the runtime skill tree as verification cases.

Files in this skill

  • SKILL.md4.5 KB
  • references/custom-operations.md10.6 KB
  • references/image-pipelines.md8.7 KB
  • references/pipelines.md10.3 KB
  • references/training-integration.md8.9 KB
  • references/troubleshooting.md10.5 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.