Skip to content

v0.6.0

Choose a tag to compare

@gcol33 gcol33 released this 12 Jun 21:23
· 87 commits to master since this release

Robustness, correctness, and R/Python API-parity release. Closes the full review-and-fix sweep (issues #2#16).

Correctness & robustness

  • Rank-pool pooling now uses a fused embedding_bag (mode=sum), cutting peak training VRAM ~5.4 GB → ~0.7 GB at batch 16384 / max_species 256 — fixes the WDDM-spill driver watchdog TDR on species-rich targets (#6).
  • CPU/CUDA hash parity: CPU hash_species aligned with the CUDA kernel's double-hash finalizer, so GPU-trained checkpoints score correctly on CPU (#7).
  • Deterministic taxonomy vocab: genus/family IDs assigned in sorted order, removing CSV-row-order dependence that misaligned embeddings across rebuilds (#5).
  • Deterministic MultiTaskLoss accumulator (scalar seed, device from ordered targets) (#16).
  • Locale-free numeric parsing (parse_float_strict): rejects trailing garbage, comma-decimal-locale safe (#16).
  • CSV header hygiene: strips UTF-8 BOM, throws on duplicate column names (#16).
  • Reproducible per-epoch shuffle, exception-safe AMP scope, CSR offset validation, padding mask fix (#9, #10, #11, #15).
  • None-unpack UB guard + GIL release in the nanobind model/predict paths (#16).

Inference & training surface

  • Chunked predict bounds peak VRAM regardless of plot count; CPU-default inference (#2).
  • Platform-aware CUDA allocator + auto-halve batch_size on OOM down to a floor (#3).
  • First-class checkpoint evaluation: load_state, classification predictions, test/train fold accessors (#4).
  • Checkpoint config/metadata loaders close the write-only asymmetry (#14).

R / Python API parity

  • Thread categorical_ids through the R model methods (#12).
  • Int64 ID accessors; pool_species_cap; categorical_vocab() on Dataset/Trainer/Predictor; from_csv_with_schema via resolve.dataset.csv(..., schemaSource=) (#16).

Packaging

  • Repositioned as domain-general (compositional data, not ecology-only).
  • Version synced to 0.6.0 across the Python, R, and C++ manifests.