Supported Frameworks¶
epochix auto-detects the framework from your log output. The detection uses a "sniff" score — the parser with the highest confidence above the threshold wins. The universal fallback always fires if nothing else matches.
PyTorch Lightning¶
Auto-detection regex:
Sample log line:
Detected metrics: Any key=value pair inside the progress bar line.
Keras / TensorFlow¶
Auto-detection: Epoch N/N header + progress bar [====>]
Sample:
Epoch 5/50
1563/1563 [==============================>] - 10s - loss: 0.423 - accuracy: 0.867 - val_loss: 0.401 - val_accuracy: 0.874
Detected metrics: All key: value pairs on the progress bar line.
HuggingFace Transformers¶
Auto-detection: JSON-like dict with 'loss' key.
Sample:
{'loss': 0.5123, 'learning_rate': 5e-05, 'epoch': 1.0}
{'eval_loss': 0.3421, 'eval_accuracy': 0.8765, 'epoch': 1.0}
Detected metrics: All numeric values in the dict.
Ultralytics YOLO¶
Auto-detection: Training row epoch/total GPU_mem box_loss cls_loss dfl_loss
and validation row all N N precision recall mAP50 mAP50-95.
Sample:
Detected metrics: box_loss, cls_loss, dfl_loss, precision, recall, mAP50, mAP.
FastAI¶
Auto-detection: Tabular header train_loss valid_loss metric time.
Sample:
Accelerate¶
Auto-detection: JSON-like dict (same format as HuggingFace).
Universal fallback¶
Matches any log that contains at least one of:
key=valuepairskey: valuepairs (lower confidence)- JSON fragments
{...}containing numeric values
Confidence: 0.10 — it always fires as a last resort.
LLM fallback (opt-in)¶
For completely unrecognised formats, an optional LLM-powered extractor can be enabled:
# Ollama (local)
export EPOCHIX_LLM_URL=http://localhost:11434
epochix train.log
# OpenAI
export EPOCHIX_LLM_KEY=sk-...
epochix train.log
The LLM fallback batches 20 lines per call and asks the model to extract
{key, value, epoch} tuples as JSON. It has a confidence of 0.55 —
lower than all regex parsers.
Writing a custom parser¶
See Plugins.