Skip to content

v0.7.26

Choose a tag to compare

@github-actions github-actions released this 01 Oct 22:13
· 51 commits to main since this release

Fixed — real PyTorch Lightning and Ultralytics output was misread

Two of the three demos epochix demo plays had been written by hand, in the
shape the parsers expected. Recording real runs to replace them showed what
that had hidden.

  • A real PyTorch Lightning log produced nothing — no metric, no frame, no
    architecture. The parser accepted only Epoch 3/10:, which Lightning does
    not print; it prints Epoch 3:, counting from 0, and the universal parser
    skips progress bars by design. Lightning's own bar is now read, with the
    epoch it belongs to: the bar for epoch N carries the results logged at the
    end of the epoch before it, and the last epoch's results arrive on a redraw
    of its own line. v_num and the stopping condition are not metrics; the
    run's length is taken from max_epochs when Lightning reports it. A
    hand-written Epoch 3/10: tqdm loop reads as before.
  • Lightning's model summary was not read in its current forms — a Mode
    column since 2.2, a boxed table with FLOPs in 2.6. All are read now.
  • A real Ultralytics run was told as a segmentation run on one reading.
    Ultralytics prints its whole configuration on one line, and iou=0.7, a
    threshold, was taken as the run's IoU. A line of a dozen or more assignments
    whose values are not all numbers is a settings dump and carries no metric
    (an argparse Namespace(...) too).
  • The validation of best.pt after training was counted as another epoch:
    a 3-epoch run was told "after 4 epochs". It is a second measurement of an
    epoch already told, and is no longer read as one.
  • The VS Code extension drew no model for Lightning or Ultralytics runs —
    its architecture reader knew Keras and print(model) only. It reads both
    now, and replays Python's answer for every log in the corpus.

Fixed — real Keras 3, Hugging Face and LightGBM output was misread

The same exercise for the other libraries: train something real, keep the
console output, read it. XGBoost read correctly. The others did not.

  • Keras 3 written to a file gave dozens of readings per epoch. Redirected,
    Keras prints every progress update on its own line, and each partial bar
    (12/43 ━━━ … accuracy: 0.1172) was taken as a reading; it also prints the
    finished bar twice when there is validation data. One reading per epoch is
    kept, from the finished bar, in Keras 2's [====] layout, Keras 3's ━━━
    and verbose=2's single line alike.
  • A real Hugging Face Trainer log produced no metric at all. transformers
    5 prints its numbers as strings ({'loss': '1.925', 'epoch': '1'}) and only
    bare numbers were accepted. Quoted numbers are read; eval_runtime and the
    per-second rates are not metrics; and the end-of-run summary, whose
    train_loss is the run's average, is no longer an extra reading.
  • A LightGBM classifier's story was told on its training AUC. Both
    AUC and val_AUC were in the log and the training one was preferred; the
    validation metric is now chosen first, as for accuracy (val_f1 likewise).
  • LightGBM's best gain: -inf raised a divergence warning. It is a tree
    that could not be split, not a metric gone non-finite. Only a name the run
    has logged as a metric, or one Epochix knows, counts.
  • LightGBM's early-stopping summary was read as one more round. The line
    after Early stopping, best iteration is: repeats the best round.
  • A line a parser has recognised and declined is not handed to the fallback
    parsers.
    The Keras parser skipping a partial bar was undone by the
    universal parser reading the same line.

Fixed — warnings say what was measured, and are withdrawn when it stops being true

  • The plateau warning said the model "has stopped finding new patterns"
    beside a grade card reading "still improving at the last reading". It now
    states its measurement — the metric moved less than 1% over the last 5
    readings — and is withdrawn when that is no longer so, as the overfit
    warning already was. It can fire again.
  • The overfit warning states its measurement too: validation loss rose
    twice in a row while training loss fell, so the model may be memorising.
  • Scrubbing back through a run showed the final warnings over every epoch —
    "progress has slowed" above epoch 1. The strip shows what stood at the epoch
    being viewed.
  • The Markdown report listed a withdrawn warning, and then its withdrawal,
    both under a warning sign. It lists the warnings that stand at the end.
  • The sentence under the grade said every grade came from fixed
    thresholds.
    A metric with no fixed scale — any loss, an AUC — is graded on
    how far it improved since its first reading, and the sentence now says so.

Changed — the bundled demos are recorded runs

  • epochix demo keras and the extension's "Try a Demo Run" are Keras's own
    output.
    They were real training runs whose script printed Keras 2's lines
    itself; they are now Keras 3's progress bar and model summary, unedited.
  • epochix demo (seq2seq) and epochix demo yolov8 are real runs: a GRU
    encoder-decoder with attention translating French to English with PyTorch
    Lightning, and YOLOv8n fine-tuned on COCO128 with Ultralytics. Their logs
    are the libraries' console output, byte for byte, with the scripts that
    produced them in demo/. The ones they replace were written by hand
    ("Instances 12345"). demo/README.md says which logs are recordings and
    which are format samples for the tests.

Fixed — machine paths in two fixtures

  • A byte-exact Ultralytics capture and an offline W&B run in tests/fixtures
    had been recorded from a scratch folder and carried its full path, Windows
    user name included. Both are recorded again from a neutral folder (the W&B
    one with its machine metadata off), and a test now checks every tracked
    file, binary ones too, for a user's profile path.