Skip to content

v0.1.2 — Progress visibility and heartbeats

Status: superseded by v0.1.3.

Version source: historical pyproject.toml state (version = "0.1.2").


What changed

Non-architectural ergonomics continuing the v0.1.1 observability thread. The motivating rule: any pipeline step that may run silently for more than about a minute needs a visible progress signal.

  • Heartbeat context manager. Added a daemon-thread helper that prints elapsed-time keep-alive messages via tqdm.write every 60 seconds, with an optional status= callback for loop progress.
  • Dataset construction visibility. PretrainDataset, SFTDataset, and DPODataset wrap per-conversation tokenisation loops in tqdm(..., mininterval=1.0).
  • Upsampling visibility. Weighted expansion is tqdm-wrapped, and random.shuffle(train_texts) runs under Heartbeat.
  • Tokenizer and dataset pre-flight visibility. Corpus byte-size summing and load_dataset_builder(...) metadata probes now show progress instead of silent loops.
  • Training loop visibility. Pretrain, SFT, and DPO loops use tqdm(..., mininterval=1.0, miniters=1), first-batch timing, slow-batch logs, and an outer Heartbeat showing batch / loss status.
  • Blocking setup and IO visibility. copy.deepcopy(model), torch.save, torch.load, and redundant checkpoint copies are covered by Heartbeat or tqdm.
  • Generation visibility. generate() gained a token progress bar and a progress= kwarg.

Documentation

  • README.md was rewritten with a concise project blurb and path map.
  • docs/index.md gained a progress-visibility note and removed the stale requirements drift known gap closed by v0.1.1.
  • The old 70B reference text was corrected to 32B to match PRODUCTION_32B_CFG.