Skip to page content
SAVRN
Search Plan a project

Open-weight model · Image and text to text

povl-sft-2d-merge

by Cheney Wong CheneyWong/povl-sft-2d-merge

povl-sft-2d-merge is an open-weight model for image and text to text from Cheney Wong, released under Apache License 2.0. It has 906M parameters and a 131,072-token context. At 16-bit it needs about 2.2 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.

Corrective supervised fine-tuning. The core fix is the two-dimensional merge token (a cell spanning both rows and columns): it accounted for only 0.89% of cell tokens in the previous training mixture, and one source had 0.00%.

Parameters906M
Context131,072
Weights1.8 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Runs On

What it takes to serve povl-sft-2d-merge (906M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 1.8 GB 2.2 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 0.9 GB 1.1 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.5 GB 0.5 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.

povl-sft-2d-merge on every accelerator the SAVRN Index prices, at every precision

Model Card

By Cheney Wong, published under apache-2.0, revision 676afc6a7666.

Corrective supervised fine-tuning. The core fix is the two-dimensional merge token (a cell spanning both rows and columns): it accounted for only 0.89% of cell tokens in the previous training mixture, and one source had 0.00%. 22,110 samples with two or more 2D merges were added, lifting the rate to 3.92% (1.06 -> 4.96 per table). This also eliminated the runaway-truncation failure mode entirely. Fine-tuned from CheneyWong/povl-sft-full-3ep, which is its own immediate predecessor in the same run. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a…

Read Cheney Wong's full model card

What this checkpoint is

Corrective supervised fine-tuning. The core fix is the two-dimensional merge token <xcel> (a cell spanning both rows and columns): it accounted for only 0.89% of cell tokens in the previous training mixture, and one source had 0.00%. 22,110 samples with two or more 2D merges were added, lifting the rate to 3.92% (1.06 -> 4.96 per table). This also eliminated the runaway-truncation failure mode entirely.

Lineage

Fine-tuned from CheneyWong/povl-sft-full-3ep, which is its own immediate predecessor in the same run.

PaddleOCR-VL-1.6 (base)
  └─ povl-sft-2d-merge   <-- this checkpoint

Results on public datasets

Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded.

Dataset n Base TEDS Ours TEDS d TEDS Base TEDS-S Ours TEDS-S d TEDS-S
PubTables-1M 2000 0.9015 0.9373 +0.0358 0.9243 0.9473 +0.0229
PubTables-v2 2000 0.9026 0.9546 +0.0519 0.9239 0.9635 +0.0396
FinTabNet (OTSL) 2000 0.9442 0.9653 +0.0211 0.9524 0.9728 +0.0204
PubTabNet / ICDAR 2000 0.9297 0.9297 -0.0000 0.9464 0.9432 -0.0032
SynthTabNet 2000 0.8093 0.9197 +0.1104 0.8474 0.9322 +0.0848
TableVerse-5K 4951 0.8608 0.8348 -0.0260 0.9101 0.8900 -0.0201
OmniDocBench v1.5 512 0.9580 0.9329 -0.0251 0.9797 0.9647 -0.0150
OmniDocBench v1.6 665 0.9492 0.9167 -0.0325 0.9753 0.9543 -0.0210
CC-OCR 300 0.8304 0.7830 -0.0474 0.8762 0.8328 -0.0434
OCRBench-v2 681 0.8120 0.8009 -0.0111 0.8526 0.8395 -0.0131
Real5 (re-shot OmniDoc) 1320 0.8930 0.8552 -0.0378 0.9307 0.8943 -0.0364
SPRINT-MUSTARD 1429 0.2184 0.2196 +0.0012 0.8754 0.8655 -0.0099
TABLET 909 0.9048 0.8835 -0.0213 0.9277 0.9040 -0.0237
Overall (equal weight) - 0.8395 0.8410 +0.0015 0.9171 0.9157 -0.0014

Note on SPRINT-MUSTARD: its ground truth carries no cell text, so its TEDS (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset.

Known limitations

Structural gains and out-of-domain gains are different things. Chinese real-scene cohorts still regressed by 2-3 pt because the training mixture contained no Chinese at all.


Task format: a single table image plus the prompt Table Recognition:, one pass, emitting OTSL markup (<fcel> <ecel> <ucel> <lcel> <xcel> <nl>). Evaluation numbers are tracked separately and are not part of this card.

Configuration

Architecture
PaddleOCRVLForConditionalGeneration
Context length (tokens)
131,072
Layers
18
Hidden size
1,024
Feed-forward size
3,072
Attention heads
16
Key/value heads
2
Head dimension
128
Vocabulary size
103,424
Model type
paddleocr_vl

Identity and Version

Repository
CheneyWong/povl-sft-2d-merge
Publisher
Cheney Wong
Task
Image and text to text
Modality
Image and text
Library
transformers
Parameters
906M parameters
Languages
Not stated by the source
Revision
676afc6a76669bce557563fc071a90b9a7fa34cc
First published
2026-10-12
Last updated
2026-10-12

Files and Weights

18 files, 1.8 GB in total. The weights are 2 files totalling 1.8 GB in bin, safetensors.

Weights2 files · 1.8 GB
Configuration10 files · 49.5 KB
Tokenizer2 files · 11.2 MB
Documentation2 files · 3.4 KB
Other1 file · 1.5 KB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
model.safetensorsWeights1.8 GB c4f3f14ebf04
training_args.binWeights6.7 KB 66f9ab335ebc
args.jsonConfiguration16.4 KB —
config.jsonConfiguration2.4 KB —
eval/public_metrics.jsonConfiguration6.5 KB —
eval/summary_baseline.jsonConfiguration2.8 KB —
eval/summary_sftB_best.jsonConfiguration2.2 KB —
eval/summary_sftB_best_fullbench.jsonConfiguration2.8 KB —
generation_config.jsonConfiguration133 B —
preprocessor_config.jsonConfiguration641 B —
processor_config.jsonConfiguration749 B —
trainer_state.jsonConfiguration14.8 KB —
README.mdDocumentation3.0 KB —
eval/MANIFEST.mdDocumentation428 B —
chat_template.jinjaOther1.5 KB —
.gitattributesRepository1.6 KB —
tokenizer.jsonTokenizer11.2 MB c8a215a59183
tokenizer_config.jsonTokenizer804 B —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
1.8 GB
Download from Cheney Wong

Released by Cheney Wong through its official repository on Hugging Face. Read the license.

Memory Requirements

PrecisionWeights in memory
As published1.8 GB
16-bit1.8 GB
8-bit0.9 GB
4-bit0.5 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About povl-sft-2d-merge

How much GPU memory does povl-sft-2d-merge need?

About 2.2 GB at 16-bit and 0.5 GB at 4-bit: the weights (906M parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run povl-sft-2d-merge on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use povl-sft-2d-merge commercially?

Yes. povl-sft-2d-merge is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

What is povl-sft-2d-merge's context length?

131,072 tokens, from the maximum position embeddings in its published configuration.

Similar Models

Model · Image and text to text

povl-opd-scale05

Cheney Wong

On-policy distillation. The weight delta learned by the teacher was merged into the SFT base with an extra scale of 0.5, the best point of an alpha sweep (0.25 -> +0.32, 0.5 -> +0.44, 0.75 -> -0.29, 1.5 -> -3.01 with t = -12.42). Fine-tuned from CheneyWong/povl-sft-2d-merge, which is NOT the RL checkpoint -- the teacher delta was merged into the SFT base, which is why it neither clearly beats nor clearly follows round 2. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly…

Open weights apache-2.0 906M parameters 131,072 tokens transformers

Model · Image and text to text

povl-rl-gsapo-200

Cheney Wong

Reinforcement learning round 2, GSAPO, 200 steps. The delivered model of that round. Equal-weight TEDS 0.8473 / TEDS-Struct 0.9078 over 33,545 samples. Fine-tuned from CheneyWong/povl-rl-dapo-400, which is RL round 1 -- the stages form a single linear chain. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. Rejected at the gate. The one substantive gap: every…

Open weights apache-2.0 906M parameters 131,072 tokens transformers

Model · Image and text to text

povl-rl-dapo-400

Cheney Wong

Reinforcement learning round 1, DAPO algorithm, 400 steps. Fine-tuned from CheneyWong/povl-dpo-2ep, which is its own immediate predecessor in the same run. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. Only works with DAPO's dynamic sampling. The first attempt with GSAPO had 78% of groups contributing zero gradient (49.0% saturated, 16.5% identical rewards, 12.6%…

Open weights apache-2.0 906M parameters 131,072 tokens transformers

Model · Image and text to text

povl-dpo-2ep

Cheney Wong

Direct preference optimisation on top of the corrective SFT, 2 epochs over 8,383 preference pairs. Intended to move the model from 'roughly right structure' to 'exactly right structure'. Fine-tuned from CheneyWong/povl-sft-2d-merge, which is its own immediate predecessor in the same run. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. The gain is within sampling…

Open weights apache-2.0 906M parameters 131,072 tokens transformers

Model · Image and text to text

povl-sft-full-3ep

Cheney Wong

First-stage supervised fine-tuning: full-parameter, 100,122 samples, 3 epochs. Its job was to stop the model from generating unbounded output on unseen layouts -- average completion length on real photographed pages had grown to 6,610 characters with a 37.3% truncation rate. Fine-tuned from CheneyWong/tablerecognitionpaddleocrvl16 (PaddleOCR-VL-1.6), which is the released base model, unmodified except for a cleaning pass. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (not evaluated) (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction…

Open weights apache-2.0 906M parameters 131,072 tokens transformers

Model · Image and text to text

povl-opd-teacher

Cheney Wong

The teacher used for on-policy distillation: final checkpoint of a dedicated teacher SFT run (2,367 steps). Fine-tuned from PaddleOCR-VL-1.6 (base), which is trained separately from the student chain on a teacher-specific data mixture. Base = the unmodified base model. Public datasets only; the project's self-built benchmarks are excluded. (never gated on the public sets -- see Known limitations) (~0.22 here) measures how well the model reproduces empty cells and should be ignored -- a perturbation test shows a structurally perfect prediction that correctly reads the visible text scores 0.33 TEDS / 1.00 TEDS-S. Only the TEDS-S column is meaningful for that dataset. Teacher qualification was…

Open weights apache-2.0 906M parameters 131,072 tokens transformers