Repository navigation
v0.7.26
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 onlyEpoch 3/10:, which Lightning does
not print; it printsEpoch 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_numand the stopping condition are not metrics; the
run's length is taken frommax_epochswhen Lightning reports it. A
hand-writtenEpoch 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, andiou=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 argparseNamespace(...)too). - The validation of
best.ptafter 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 andprint(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━━━
andverbose=2's single line alike. - A real Hugging Face
Trainerlog 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_runtimeand the
per-second rates are not metrics; and the end-of-run summary, whose
train_lossis the run's average, is no longer an extra reading. - A LightGBM classifier's story was told on its training AUC. Both
AUCandval_AUCwere in the log and the training one was preferred; the
validation metric is now chosen first, as for accuracy (val_f1likewise). - LightGBM's
best gain: -infraised 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
afterEarly 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 kerasand 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) andepochix demo yolov8are 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 indemo/. The ones they replace were written by hand
("Instances 12345").demo/README.mdsays 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.