v1-deberta_large-token_level-1-7 (legacy: knowledgator/gliner-pii-large-v1.0 fine-tuned 8k steps)

Superseded. This is an early checkpoint, kept because it has a DOI (10.57967/hf/8522). For current pt-BR PII detection use arthrod/gliner-mmbert-small-ptbr-pii-full-3x-v1 or the OpenAI Privacy Filter fine-tune arthrod/gliner-opf-ptbr-pii-v1; results for both are in arthrod/gliner-opf-ptbr-pii-bench-v1.

TL;DR. The main run of the 24-Feb-2026 MI300X session documented in arthrod/attempt_vanilla (run gliner-pii-large-full-v1, config vanilla_f). It continued knowledgator/gliner-pii-large-v1.0 (DeBERTa-v3-large, token-level GLiNER) on ~1.03M in-house synthetic PII examples. Training was stopped by hand at step 8,000 of a planned 15,000 (1.44 epochs). The repo was first published as arthrod/gliner-pii-large-full-v1, and that URL still redirects here.

Among the five legacy repos in this group, this is the only one with task metrics. On the 23-label PT-BR canonical set it reaches F1 0.730, up from 0.459 for the knowledgator base. On nvidia/Nemotron-PII it reaches F1 0.627 (base 0.581). It loses ground on general and multilingual NER sets (see Evaluation).

v1, deberta_large and token_level in the repo name are accurate. 1-7 is not explained anywhere in the repo.

Related repos

Repo Type Role
arthrod/gliner-mmbert-small-ptbr-pii-full-3x-v1 model Current recommended PT-BR PII GLiNER (mmBERT-small)
arthrod/gliner-opf-ptbr-pii-v1 model OpenAI Privacy Filter fine-tune for PT-BR PII (current suite)
arthrod/gliner-ettin-68m-ptbr-pii-full-3x-v1 · gliner-ettin-68m-ptbr-pii-full-3x-v1-checkpoints/gliner-ettin-68m-ptbr-pii-top50k-v1 · ettin-32m model Current-suite Ettin GLiNER models
arthrod/gliner-opf-ptbr-pii-bench-v1 dataset Benchmark of the current suite
arthrod/gliner_review_comparison dataset Side-by-side review of GLiNER outputs
arthrod/gliner-opf-ptbr-pii-demo space Interactive demo of the current suite
arthrod/gliner_eval_folder (private) dataset Feb-2026 sweep: GLiNER models x 9 eval sets (source of the only task metrics for these legacy repos)
arthrod/attempt_vanilla model Experiment log (24 Feb 2026) of the runs behind v1-deberta_large-… and v1-deberta_small-…
arthrod/c3750-mdeberta_base-vanilla-1-2 model Legacy (Aug 2025): mDeBERTa-v3-base span (markerV0) GLiNER, 15 checkpoints
arthrod/c5k-deberta_base-token_level-1-2 model Legacy (Feb 2026): urchade/gliner_multi_pii-v1 continued on a PII-in-spam corpus, 13 checkpoints
arthrod/v0-ettin68m-token_level-0-3 model Legacy (Feb 2026): LoRA fine-tune of knowledgator/gliner-pii-small-v1.0 (Ettin-68M), 25 checkpoints
arthrod/v1-deberta_large-token_level-1-7 model Legacy (Feb 2026): knowledgator/gliner-pii-large-v1.0 fine-tuned 8k steps, has eval metrics
arthrod/v1-deberta_small-token_level-0-6 model Legacy (Feb 2026): failed from-scratch DeBERTa-v3-small run (loss stuck at 0)

Quick start

from huggingface_hub import snapshot_download
from gliner import GLiNER

# Skip the 1.76 GB ONNX file if you only need PyTorch.
path = snapshot_download(
    "arthrod/v1-deberta_large-token_level-1-7",
    allow_patterns=["gliner_config.json", "pytorch_model.bin", "tokenizer*.json"],
)
model = GLiNER.from_pretrained(path)

text = "Meu nome é Maria Silva, CPF 123.456.789-09, moro na Rua das Flores, 42, em São Paulo."
labels = ["first name", "last name", "cpf document number", "location street",
          "location building number", "location city"]
for ent in model.predict_entities(text, labels, threshold=0.5):
    print(ent["text"], "->", ent["label"], round(ent["score"], 3))

The arthrod/gliner_eval_folder (private) sweep loaded this exact repo (as arthrod/gliner-pii-large-full-v1, same weights) with GLiNER on ROCm. The snippet itself was not re-run for this card. Trained with gliner==0.2.25, transformers==5.1.0.

Files

Path What it is
pytorch_model.bin Weights at step 8,000 (1.76 GB). Unchanged since the "Training in progress, step 8000" commit (LFS sha256 6904da41…).
gliner_config.json GLiNER config merged with the Trainer arguments (span mode, encoder config, max_types 30, max_width 100, max_len 768, …). hub_token is the literal placeholder <HUB_TOKEN>.
config.json Near-copy of gliner_config.json, added on 2026-03-02 (its model_type is deberta-v2).
tokenizer.json, tokenizer_config.json DeBERTa-v3 SentencePiece tokenizer (vocab 128,004 incl. <<ENT>>/<<SEP>>).
onnx/model.onnx ONNX export (opset 19, added 2026-03-19, 1.76 GB).
training_args.bin Pickled gliner.training.trainer.TrainingArguments (hub_token: None).

Intermediate checkpoints live in the git history. The Trainer pushed every 500 steps ("Training in progress, step N", N = 500 … 8000). Any of them can be loaded with revision=<commit>. The lowest eval loss was at step 7,500 (commit 3a3303a1). arthrod/attempt_vanilla also publishes checkpoint-7500 as a folder.

Eval loss by step

Source: gliner_logs/gliner-pii-large-full-v1/checkpoint-8000/trainer_state.json in arthrod/attempt_vanilla (this repo has no trainer state). Eval set: about 50k examples (data/eval.json cut down to 50,000). Focal loss with sum reduction.

Step 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 7500 8000 (this repo)
Eval loss 936.8 653.7 576.1 535.6 520.3 478.0 486.5 477.4 453.2 451.4 466.0 438.9 442.2 440.0 417.7 449.8

Best checkpoint by recorded metrics: by eval loss, step 7,500 (in git history and in attempt_vanilla). Task metrics (below) exist only for step 8,000, the weights in this repo, and for step 1,000. Step 8,000 beats step 1,000 on the three PII sets (both PT-BR sets and Nemotron-PII). It is worse on the four general-NER sets.

Training data

data/train.json: about 1,026,320 examples of in-house synthetic PII, not published. data/eval.json was cut to 50,000 examples (per attempt_vanilla). The label set is not recorded here. The strong results on the 23-label PT-BR canonical set (labels such as cpf document number, rg document number, pis document number) suggest PT-BR PII was in the mix.

Training recipe

From gliner_config.json / training_args.bin (inspected without unpickling) and attempt_vanilla's notes:

  • Init knowledgator/gliner-pii-large-v1.0; encoder microsoft/deberta-v3-large (24 layers, hidden 1024); span_mode: token_level, max_len 768, max_width 100, max_types 30, max_neg_type_ratio 1, hidden_size 512, dropout 0.1, 1 RNN layer, subtoken_pooling: first, whitespace splitter.
  • AdamW (torch); LR encoder 5e-6, LR others 7e-6; weight decay 0.01; linear schedule, 5% warmup; max_steps 15000 (stopped at 8,000); batch 184 (eval 176); grad clip 1.0; bf16; gradient checkpointing; seed 42.
  • Focal loss alpha 0.75, gamma 0, sum reduction; negatives 2; masking: global; random_drop on.
  • Eval/save every 500 steps; W&B project huggingface.
  • Hardware: one AMD Instinct MI300X (192 GB), ROCm 7.1, about 6.5 h.

Evaluation

Source: data/summary.parquet of arthrod/gliner_eval_folder (private) (Feb-2026 sweep, run_eval.py). It uses GLiNER's built-in evaluator: exact span + exact label, micro precision/recall/F1. Threshold 0.5, up to 25 labels per batch (seed 42), batch 256, MI300X. Each set is sub-sampled to 5,000 examples, except ptbr_pii_val_19k (19,164).

Eval set N P R F1 (this repo) F1 base knowledgator/gliner-pii-large-v1.0 F1 step 1000 (attempt_vanilla)
arthrod gliner-canonical-ptbr-pii-v1 5,000 0.6358 0.8570 0.7300 0.4593 0.6913
ptbr_pii_val_19k 19,164 0.4184 0.3534 0.3831 0.1832 0.3674
nvidia/Nemotron-PII 5,000 0.6555 0.6008 0.6269 0.5806 0.6008
urchade/synthetic-pii-ner-mistral-v1 5,000 0.2895 0.2147 0.2465 0.2830 0.2628
urchade/pile-mistral-v0.1 5,000 0.1748 0.1015 0.1285 0.1568 0.1330
knowledgator/gliner-multilingual-synthetic 5,000 0.1674 0.0849 0.1127 0.1352 0.1210
knowledgator/GLINER-multi-task-synthetic-data 5,000 0.0718 0.0917 0.0806 0.1897 0.0960
Ihor/gliner-post-train 5,000 0.2111 0.0946 0.1307 – –

The sweep also evaluated attempt_vanilla's local checkpoint-8000, which should be the same weights. It matches this repo exactly on 6 sets and differs slightly on Nemotron-PII (0.6155) and ptbr_pii_val_19k (0.3850). The cause is not recorded.

Per-label results on the PT-BR canonical set (same source, per_entity_json), sorted by gold count:

Label Gold Pred P R F1 Base F1
first name 3617 3595 0.7844 0.7797 0.7820 0.4692
last name 2219 2813 0.7177 0.9099 0.8025 0.3567
phone number 1037 1100 0.8973 0.9518 0.9237 0.8705
location city 938 1075 0.6744 0.7729 0.7203 0.6151
email address 931 994 0.9024 0.9635 0.9319 0.9620
location street 758 1096 0.5575 0.8061 0.6591 0.6003
location building number 636 1531 0.3743 0.9009 0.5288 0.1717
subject described medical data 551 464 0.7996 0.6733 0.7310 0.0398
subject described political opinion 471 641 0.5429 0.7389 0.6259 0.0302
subject described ethnicity 455 481 0.8233 0.8703 0.8462 0.1324
subject described religious conviction 445 451 0.8581 0.8697 0.8638 0.0941
dob 398 1003 0.3968 1.0000 0.5682 0.8112
subject described organization affiliation 395 424 0.7217 0.7747 0.7473 0.0000
location zip 387 634 0.5694 0.9328 0.7071 0.7223
subject described sexual data 318 383 0.6292 0.7579 0.6876 0.0202
cpf document number 283 569 0.4833 0.9717 0.6455 0.6112
location state 272 506 0.4763 0.8860 0.6195 0.6309
middle name 271 704 0.3807 0.9889 0.5497 0.0000
rg document number 271 500 0.5420 1.0000 0.7030 0.4104
pis document number 255 824 0.3046 0.9843 0.4652 0.4934
location neighborhood 241 450 0.4333 0.8091 0.5644 0.2840
credit card 202 351 0.5613 0.9752 0.7125 0.8138
location state abbreviation 120 264 0.4545 1.0000 0.6250 0.6715

The pattern is high recall and low precision on structured identifiers (dob, CPF, PIS, RG, building number, middle name): the model over-predicts them. The gains are largest on the sensitive "subject described …" categories, where the base model scored near zero.

Limitations

  • Trained on synthetic data only. Not a compliance tool, so do not rely on it as the sole PII safeguard.
  • Over-predicts structured identifiers (precision 0.30–0.48 on PIS/CPF/dob/middle name, see above). Tune the threshold per label.
  • Regresses vs. the base model on general-domain and multilingual NER sets.
  • The recorded best eval-loss step (7,500) is not the one in this repo (8,000).
  • The eval sets gliner-canonical-ptbr-pii-v1 and ptbr_pii_val_19k are not public.

License

Apache-2.0, matching knowledgator/gliner-pii-large-v1.0 (Apache-2.0). The encoder microsoft/deberta-v3-large is MIT.

Citation

@misc{arthrod_v1_deberta_large_token_level,
  author = {arthrod},
  title  = {v1-deberta_large-token_level-1-7 (gliner-pii-large-full-v1): knowledgator/gliner-pii-large-v1.0 fine-tuned for PII},
  year   = {2026},
  doi    = {10.57967/hf/8522},
  url    = {https://huggingface.co/arthrod/v1-deberta_large-token_level-1-7}
}

@misc{stepanov2024gliner,
  title         = {GLiNER multi-task: Generalist Lightweight Model for Various Information Extraction Tasks},
  author        = {Stepanov, Ihor and Shtopko, Mykhailo},
  year          = {2024},
  eprint        = {2406.12925},
  archivePrefix = {arXiv}
}
Downloads last month
58
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for arthrod/v1-deberta_large-token_level-1-7

Finetuned
(3)
this model

Paper for arthrod/v1-deberta_large-token_level-1-7

Evaluation results

  • Precision on gliner_canonical_ptbr_pii_v1 (5,000 samples)
    self-reported
    0.636
  • Recall on gliner_canonical_ptbr_pii_v1 (5,000 samples)
    self-reported
    0.857
  • F1 on gliner_canonical_ptbr_pii_v1 (5,000 samples)
    self-reported
    0.730
  • Precision on ptbr_pii_val_19k (19,164 samples)
    self-reported
    0.418
  • Recall on ptbr_pii_val_19k (19,164 samples)
    self-reported
    0.353
  • F1 on ptbr_pii_val_19k (19,164 samples)
    self-reported
    0.383
  • Precision on Nemotron-PII (5,000 samples)
    self-reported
    0.655
  • Recall on Nemotron-PII (5,000 samples)
    self-reported
    0.601