chore: release v0.3.3 - #15
Merged
Merged
Conversation
wandb project name for BoardOCR was a fixed "mito-train-board-ocr", which collapsed runs from different image_size and package versions into a single board on wandb. Interpolate image_size and mito-train pyproject version so each combination gets its own project (e.g. mito-train-board-ocr-w224-v0.2.0). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…and MAE (#9) - Replace --ckpt-dir with --model-name (+ --ckpt-root, default ./runs). Checkpoints now land at <ckpt-root>/<model-name>/. model_name defaults to board-ocr-<backbone>, matching the sweep naming. - --resume latest no longer errors when latest.pt is missing; it falls through to a fresh run so sweep scripts can pass it unconditionally. - Add hand/mae to metrics and surface board_acc, hand_acc, and hand_mae in train + val log lines. MAE treats the count head as ordinal, so "off by 1" reads very differently from "off by 9". - Update train.sh, train_multi_gpu.sh, train_backbones.sh to pass --model-name. - Bump version to 0.3.0 (CLI flag rename is breaking; pre-1.0 => minor). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Load environment variables from .env into os.environ at the start of each training entrypoint (train_board_ocr, train_piece, train_detector) so HuggingFace (HF_TOKEN) and Weights & Biases (WANDB_API_KEY, CF_ACCESS_CLIENT_*) can resolve credentials without exporting them by hand. load_dotenv() is a no-op when .env is missing and does not override existing os.environ entries, so devcontainer-exported values still win. Bump version to 0.3.1. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lose to .env (#11) devcontainer.json forwards ${localEnv:HF_TOKEN} and ${localEnv:WANDB_API_KEY} from the host, which expand to an empty string when those vars are unset on the host. load_dotenv() with the default override=False then treats the empty string as "already set" and refuses to import the value from .env, leaving HF (unauthenticated) and wandb (skipped) silently broken. Switch the three training entrypoints (train_board_ocr, train_piece, train_detector) to load_dotenv(override=True) so .env wins over empty forwards. Real host values still flow through — override just replaces empties too. Bump version to 0.3.2. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Automatically restrict CUDA_VISIBLE_DEVICES to GPUs with used memory below FREE_GPU_MEM_MB (default 500 MiB) when AUTO_FREE_GPUS=1. Prevents multiple training jobs from interfering with each other on shared hardware. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(train): add cosine LR scheduler with linear warmup
BoardOCR training previously ran with a constant LR (default 3e-4) for the
full epoch budget, leaving cheap image-classification gains on the table
especially for 200-epoch runs.
Add three CLI flags plumbed into a per-step SequentialLR of LinearLR +
CosineAnnealingLR:
--scheduler {none,cosine} default: cosine
--warmup-epochs INT default: 5
--min-lr-ratio FLOAT default: 0.01 (min_lr = lr * ratio)
The scheduler steps once per batch (all ranks share len(train_loader) shard
size, so DDP stays in lockstep), its state is persisted in the checkpoint,
and current LR is logged to W&B as step/lr each --log-every batch.
--scheduler=none reverts to the prior constant-LR behavior for
back-compat / A/B comparisons.
Note: version bump deferred; PR #11 already bumps to 0.3.2, so whichever
PR merges second will need to re-bump.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore: bump version to 0.3.3
Companion bump for the LR scheduler feature. develop is at 0.3.2 after PR
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.3.3
Promotes 6 PRs from
developtomaster(delta sincev0.2.0).Since v0.2.0
--scheduler {none,cosine},--warmup-epochs,--min-lr-ratio), per-step, resumable, W&B logsstep/lrAUTO_FREE_GPUSmode inscripts/train_multi_gpu.sh(auto-restrictCUDA_VISIBLE_DEVICESto idle GPUs byFREE_GPU_MEM_MB)load_dotenv(override=True)in all training entrypoints so empty devcontainer${localEnv:...}forwards no longer shadow.envpython-dotenvdependency +.envloading in the three training entrypoints--ckpt-dirwith--model-name, add hand-piece MAE metricimage_sizeand package version (mito-train-board-ocr-w{sz}-v{ver})No production deploy
This repo has no deploy workflow (
.github/workflows/ci.ymlonly). Mergingdevelop → masterproduces a source-release commit + tag; nothing external is touched.🤖 Generated with Claude Code