baberu-ocr / TRAINING.md
genshiai-daichi's picture
Add training / fine-tuning code (train_ocr.py --finetune-from + data loaders + TRAINING.md)
82eb32a verified
|
Raw
History Blame Contribute Delete
2.27 kB

Training / fine-tuning

Baberu OCR is a from-scratch 115M model: a frozen DINOv2 vision encoder, an MLP projector, and a custom 6-layer character-level GQA decoder. The training code is included so you can fine-tune the released checkpoint on your own bubbles, or reproduce the full recipe. All scripts are flat β€” run them from the repo root.

Fine-tune the released model on your own crops (Step 3)

Continues image->text training from the released weights with a fresh optimizer:

python train_ocr.py \
  --crops-dir     /path/to/your/crops \
  --index         /path/to/ocr_text_index.parquet \
  --tokenizer-dir ./tokenizer \
  --finetune-from .            # load full weights from this repo, fresh schedule
  --out-dir       ./ft-out \
  --epochs 1 --batch-size 96 --num-workers 8
  # add  --unfreeze-vision --vision-lr 1e-5  to also adapt the encoder
  • --finetune-from <dir> loads config.json + model.safetensors from <dir> (point it at this repo) and starts a fresh optimizer/schedule.
  • --resume-from <dir> instead continues an interrupted run of this trainer (restores optimizer/scheduler/RNG from training_state.pt).

Data format

--index is a parquet (built by build_ocr_index.py) pairing each crop id with its text and language; --crops-dir holds the crop images the index refers to. ocr_pairs.py / data_ocr.py show the exact loader β€” adapt them to your store.

Full recipe (from scratch)

  1. train_text.py β€” pretrain the decoder as a character LM (FineWeb2 + text).
  2. train_text.py again β€” adapt to manga-style text (Step 2).
  3. train_ocr.py --init-decoder-from <step2> β€” connect vision and train on (crop, text) pairs; then re-run with --unfreeze-vision to adapt DINOv2.

See each script's module docstring for the exact flags.

Files

  • train_ocr.py β€” Step 3 image->text training / fine-tuning entry
  • train_text.py β€” Step 1/2 character-LM pretraining
  • data_ocr.py, ocr_pairs.py β€” OCR (crop, text) data loading
  • data_baberu.py, data_fineweb.py β€” text data loading for the LM stages
  • build_ocr_index.py β€” build the crop->text index parquet
  • modeling_baberu.py, configuration_baberu.py, tokenization_baberu.py β€” the model