Skip to content

Test - #18

Open
rostyslavhereha wants to merge 6 commits into
mainfrom
exp4-criterion-desync
Open

Test#18
rostyslavhereha wants to merge 6 commits into
mainfrom
exp4-criterion-desync

Conversation

@rostyslavhereha

Copy link
Copy Markdown

No description provided.

rostyslavhereha and others added 6 commits July 3, 2026 19:14
…o--optimize-dataset-usage"

This reverts commit 9bb25de, reversing
changes made to 21cee56.
…й здогадки

- profile_sync флаг: torch.cuda.synchronize() перед кожним таймером у
  train_one_epoch — стара таблиця стадій брехала через async CUDA, тепер
  атрибуція чесна (вмикається через -u profile_sync=True, дефолт off)
- stg1_epochs_perc можна оверрайдити через -u (дефолт 1/6 без змін)
- run_experiments.sh: послідовний запуск гілок-експериментів у контейнерах
  (worktree на гілку, датасет ro, результати+TB в /data/GM_results/{exp})
- tools/benchmark_decode.py: бенчмарк JPEG-декодерів (PIL/cv2/tv.io/turbo),
  запускати на сервері до тренувань
- exp.md + speedup.md: опис експерименту і повний план прискорення

Жодних змін швидкості/семантики тренування — це вимірювальний baseline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…не чекає

- allow_tf32/cudnn_benchmark в _setup (дефолт on, вимикається через -u):
  criterion рахується в чистому fp32, TF32 прискорює його напряму
- debug_nan флаг (дефолт off): per-step isnan(pred_boxes).any() синкав GPU
  кожен крок у незамірюваному вікні; страховка math.isfinite(loss) лишилась
- exp.md оновлено під цей експеримент

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ModelEMA.update: кешовані списки float-тензорів + два fused-виклики
  (_foreach_mul_ + _foreach_add_) замість Python-циклу по state_dict
- кеш інвалідується при зміні моделі / .to() / load_state_dict
- математика бітово ідентична старій (tools/tests/test_ema_foreach.py)
- очікувано: стадія Other (EMA/LR) ~0.06s -> <0.01s на крок

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ркерів щоепохи

- persistent_workers: True + prefetch_factor: 4 (train і val) — мінус ~80s
  затримки першого батча на кожній епосі
- warp_loader тепер пробрасує persistent_workers/prefetch_factor під DDP
- епоха їде у живі воркери через shared-memory тензор (DetDataset +
  BaseCollateFunction), інакше stop-політика аугментацій ніколи б не
  спрацювала — перевірено tools/tests/test_persistent_epoch.py в контейнері

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…не курить

- filter_suppress_source_targets: torch.isin замість .item()-циклу по лейблах
- _get_ignore_tag_mask: векторизовано, маска повертається без .any() early-out
- _get_suppress_mask: таргет-частини (xyxy бокси + LUT класів) рахуються раз
  на крок у _prepare_suppress_cache замість ~8 перерахунків; без синків
- _get_go_indices: unique + stable argsort + scatter_reduce замість .item()
  по кожній парі (нічиї тепер детерміновані, старі були довільні)
- A/B: tools/tests/test_criterion_vectorized.py — точна рівність по-функційно
  + повний forward old-vs-new до 1e-6, пройдено в контейнері

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant