Close Menu
NCIJ Network NCIJ Network
    What's Hot

    Trump’s crypto bill loses its White House negotiator as Patrick Witt exits

    October 15, 2026

    Arctic sea ice hits another troubling low in 2026

    October 15, 2026

    How Rewilding Could Help Atoll Islands Keep Pace With Rising Seas

    October 15, 2026
    Facebook X (Twitter) Instagram
    Trending
    • Trump’s crypto bill loses its White House negotiator as Patrick Witt exits
    • Arctic sea ice hits another troubling low in 2026
    • How Rewilding Could Help Atoll Islands Keep Pace With Rising Seas
    • Algeria’s New Bid for Regional Influence
    • Fake image of wildlife park tiger attack circulates online – Full Fact
    • NATO allies to meet over Black Sea drone attacks on shipping  – POLITICO
    • John Healey poised to raise taxes on banks in budget | Budget 2026
    • Equality watchdog writes to Greens over ‘Zionism is racism’ motion
    • About
      • Our Team
      • Editorial Policy
      • Editorial Independence
      • International Support
    • Trust & Standards
      • AI Usage Policy
      • Conflict of Interest Policy
      • Corrections Policy
      • Ethics Policy
      • Fact-Checking Policy
      • Source Protection
    • Get Involved
      • Guide for Sources
      • Support Independent Journalism
    • Legal
      • Cookie Policy
      • Privacy Policy
      • Terms of Use
    Facebook X (Twitter) Instagram
    NCIJ Network NCIJ Network
    Thursday, October 15
    • Home
    • World
    • Ai
    • Business
    • Politics
    • Health
    • Crypto
    • Science
    • Technology
    • Cybersecurity
    • Defense & Security
    • Economy
    • Energy
    • Europe
    • More
      • Fact Check
      • Investigations
      • Opinion & Analysis
      • Environment
    NCIJ Network NCIJ Network
    Home»Artificial Intelligence

    Knowledgator Releases GLiFormer: A 575M-Parameter Encoder That Hits 91.10 F1 on Nested JSON Extraction Without Generating Tokens

    NCIJ NETWNCIJ NETWORKBy NCIJ NETWNCIJ NETWORKSeptember 16, 2026 Artificial Intelligence No Comments15 Mins Read
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Knowledgator Engineering has released GLiFormer, a schema-conditioned encoder framework for information extraction. One model handles named-entity recognition (NER), text classification, relation extraction, nested JSON structuring, and text embeddings. You pass labels and extraction schemas at inference time. Two checkpoints are on Hugging Face. GLiFormer Base v1 has 264.2M parameters, and GLiFormer Large v1 has 575.6M.

    Deployable today? Yes. Both checkpoints are Apache 2.0, install with pip install gliformer, and run on CPU or GPU.

    The Problem It Targets

    Extraction stacks often chain separate models. One tags entities, another classifies documents, and a third rebuilds records. The research team argues these tasks share one core operation. Encode the source, represent the requested concepts, then score their compatibility.

    LLMs can emit nested JSON, but they generate field names, punctuation, and values token by token. GLiFormer removes output generation from that path.

    How GLiFormer Works

    GLiFormer builds on GLiNER and generalizes its label matching through an ‘anchor.’ An anchor is the object each runtime label gets scored against. It can be a group vector for classification, an entity pair for relations, or a record slot.

    The source is encoded once. Multiple schemas for the same document then run as task-local groups over that shared encoding. Head compute still grows with the number of groups, labels, and anchors.

    For NER, the head scores start, end, and inside evidence for every token and label pair. Independent sigmoid outputs let nested mentions and shared boundaries coexist.

    Structuring runs in 4 stages:

    1. Ground field values as spans taken directly from the source text.
    2. Assign spans to unordered record slots, trained with Hungarian matching.
    3. Predict directed parent-child links, restricted to paths the schema allows.
    4. Assemble nested JSON with a deterministic decoder.

    Values are source spans, so the model cannot invent value text missing from the input. Span selection, record assignment, and hierarchy can still be wrong.

    ‘;
    }).join(”);

    function K(s){ return ‘“‘ + s + ‘”‘; }
    function V(s, c){ return ‘“‘ + s + ‘”‘; }
    var JSONL = [
    ‘{‘,
    ‘ ‘ + K(‘company’) + ‘: [{‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Acme’,’cn’) + ‘,’,
    ‘ ‘ + K(‘departments’) + ‘: [‘,
    ‘ {‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Engineering’,’dn’) + ‘,’,
    ‘ ‘ + K(’employees’) + ‘: [‘,
    ‘ {‘ + K(‘name’) + ‘: ‘ + V(‘Alice’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘software engineer’,’er’) + ‘},’,
    ‘ {‘ + K(‘name’) + ‘: ‘ + V(‘Bob’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘designer’,’er’) + ‘}’,
    ‘ ]’,
    ‘ },’,
    ‘ {‘,
    ‘ ‘ + K(‘name’) + ‘: ‘ + V(‘Sales’,’dn’) + ‘,’,
    ‘ ‘ + K(’employees’) + ‘: [{‘ + K(‘name’) + ‘: ‘ + V(‘Carol’,’en’) + ‘, ‘ + K(‘role’) + ‘: ‘ + V(‘account manager’,’er’) + ‘}]’,
    ‘ }’,
    ‘ ]’,
    ‘ }]’,
    ‘}’
    ];
    $(‘#glf-json’).innerHTML = JSONL.map(function(l){ return ‘‘ + l + ‘‘; }).join(”);

    var stepsEl = $(‘#glf-steps’);
    stepsEl.innerHTML = STEPS.map(function(s, i){
    return ‘‘;
    }).join(”) + ‘

    ‘;

    var step = 0, timers = [], playing = false, playT = null;
    function clearTimers(){ timers.forEach(clearTimeout); timers = []; }
    function later(fn, ms){ timers.push(setTimeout(fn, ms)); }

    function spanEl(id){ return $(‘#glf-sent .f[data-id=”‘ + id + ‘”]’); }
    function slotEl(k){ return slotsEl.querySelector(‘.slot[data-k=”‘ + k + ‘”]’); }
    function box(el){
    var S = stage.getBoundingClientRect();
    var rs = el.getClientRects();
    var r = rs.length ? rs[0] : el.getBoundingClientRect();
    return { l:r.left – S.left, t:r.top – S.top, w:r.width, h:r.height };
    }

    function drawWires(anim){
    if (!stage.offsetWidth) return;
    var W = stage.offsetWidth, H = stage.offsetHeight;
    wires.setAttribute(‘width’, W); wires.setAttribute(‘height’, H);
    wires.setAttribute(‘viewBox’, ‘0 0 ‘ + W + ‘ ‘ + H);
    var defs=”” + Object.keys(COL).map(function(k){
    return ‘‘;
    }).join(”) + ‘
    ‘;
    var P = [];
    function curve(x1, y1, x2, y2){ var d = (y2 – y1) * 0.5; return ‘M’ + x1 + ‘ ‘ + y1 + ‘ C’ + x1 + ‘ ‘ + (y1 + d) + ‘ ‘ + x2 + ‘ ‘ + (y2 – d) + ‘ ‘ + x2 + ‘ ‘ + y2; }
    if (step === 3){
    SPANLINKS.forEach(function(L, i){
    var a = box(spanEl(L[0])), b = box(slotEl(L[1]));
    var x2 = b.l + b.w / 2 + (L[2] === ‘er’ ? 14 : (L[1].indexOf(’emp’) === 0 ? -14 : 0));
    P.push({ d:curve(a.l + a.w / 2, a.t + a.h, x2, b.t – 1), c:L[2], delay:i * 90 });
    });
    } else if (step >= 4){
    TREE.forEach(function(L, i){
    var a = box(slotEl(L[0])), b = box(slotEl(L[1]));
    P.push({ d:curve(a.l + a.w / 2, a.t + a.h, b.l + b.w / 2, b.t – 1), c:’h’, delay:i * 140 });
    });
    }
    wires.innerHTML = defs + P.map(function(p){
    return ‘‘;
    }).join(”);
    $$(‘path.w’, wires).forEach(function(p){
    if (!anim || RM){ p.setAttribute(‘marker-end’, p.getAttribute(‘data-m’)); return; }
    var len = p.getTotalLength(), dl = +p.getAttribute(‘data-delay’);
    p.style.strokeDasharray = len; p.style.strokeDashoffset = len;
    p.getBoundingClientRect();
    p.style.transition = ‘stroke-dashoffset .7s ease ‘ + dl + ‘ms’;
    p.style.strokeDashoffset = 0;
    later(function(){ p.setAttribute(‘marker-end’, p.getAttribute(‘data-m’)); p.style.strokeDasharray = ‘none’; }, dl + 720);
    });
    }

    function flip(mutate, animate){
    var els = $$(‘.slot’, slotsEl);
    var first = els.map(function(e){ return e.getBoundingClientRect(); });
    mutate();
    if (!animate || RM) return false;
    els.forEach(function(e, i){
    var f = first[i];
    if (!f.width || getComputedStyle(e).display === ‘none’) return;
    var l = e.getBoundingClientRect();
    e.style.transition = ‘none’;
    e.style.transform = ‘translate(‘ + (f.left – l.left) + ‘px,’ + (f.top – l.top) + ‘px)’;
    });
    requestAnimationFrame(function(){ requestAnimationFrame(function(){
    els.forEach(function(e){ e.style.transition = ‘transform .7s cubic-bezier(.2,.8,.2,1),opacity .4s,border-color .4s’; e.style.transform = ”; });
    }); });
    return true;
    }

    function setStep(n, animate){
    clearTimers();
    var prev = step; step = n;
    wires.innerHTML = ”;
    for (var i = 1; i <= 3; i++) stage.classList.toggle(‘s’ + i, n >= i);
    var needTree = n >= 4, hasTree = stage.classList.contains(‘s4’), flipped = false;
    if (needTree !== hasTree){ flipped = flip(function(){ stage.classList.toggle(‘s4’, needTree); }, animate); }
    stage.classList.toggle(‘s5’, n >= 5);

    $(‘#glf-enc’).textContent = n >= 1 ? ‘DeBERTa encoder: 1 forward pass for text and schema’ : ‘DeBERTa encoder: waiting’;
    if (n === 1 && animate && !RM){ stage.classList.remove(‘scan’); void stage.offsetWidth; stage.classList.add(‘scan’); }

    $$(‘#glf-sent .f’).forEach(function(f, i){ f.style.transitionDelay = (animate && n === 2 && prev < 2) ? (i * 110) + ‘ms’ : ‘0ms’; });
    $$(‘.slot .row’, slotsEl).forEach(function(r, i){ r.style.transitionDelay = (animate && n === 3 && prev < 3) ? (250 + i * 70) + ‘ms’ : ‘0ms’; });

    var jl = $$(‘#glf-json .jl’);
    jl.forEach(function(l, i){
    if (n >= 5){
    if (animate && prev < 5 && !RM){ l.classList.remove(‘on’); later(function(){ l.classList.add(‘on’); }, 120 + i * 70); }
    else l.classList.add(‘on’);
    } else l.classList.remove(‘on’);
    });
    $(‘#glf-jph’).hidden = n >= 5;
    $(‘#glf-note’).textContent = n >= 4 ? ‘Empty anchors are dropped. The 6 filled anchors are arranged by their predicted parent to child links.’ : ‘8 of the 100 record anchors configured in each v1 checkpoint are shown.’;
    $(‘#glf-copied’).textContent = n >= 5 ? ‘9’ : ‘0’;

    if (n === 3) later(function(){ drawWires(animate); }, animate ? 120 : 0);
    if (n >= 4) later(function(){ drawWires(animate && prev < 4); }, flipped ? 760 : 60);

    $$(‘.stp’, stepsEl).forEach(function(b){
    var s = +b.getAttribute(‘data-s’);
    b.classList.toggle(‘done’, s <= n); b.classList.toggle(‘cur’, s === n);
    b.setAttribute(‘aria-current’, s === n ? ‘step’ : ‘false’);
    });
    $(‘#glf-prev’).disabled = n <= 1;
    $(‘#glf-next’).disabled = n >= 5;
    $(‘#glf-cap’).innerHTML = n ? ‘Step ‘ + n + ‘ of 5. ‘ + STEPS[n – 1][1] : ‘Press Play to watch the 5 stages, or pick a stage. The example sentence and schema come from the GLiFormer README.’;
    setTimeout(postH, 50);
    }

    function stopPlay(){ playing = false; clearTimeout(playT); $(‘#glf-play’).textContent = step >= 5 ? ‘Replay’ : ‘Play’; }
    function tick(){
    if (!playing) return;
    if (step >= 5){ stopPlay(); return; }
    setStep(step + 1, true);
    playT = setTimeout(tick, step === 3 ? 2900 : 2500);
    }
    $(‘#glf-play’).addEventListener(‘click’, function(){
    if (playing){ stopPlay(); return; }
    playing = true; this.textContent=”Pause”;
    if (step >= 5) setStep(0, false);
    tick();
    });
    $(‘#glf-next’).addEventListener(‘click’, function(){ stopPlay(); if (step < 5) setStep(step + 1, true); stopPlay(); });
    $(‘#glf-prev’).addEventListener(‘click’, function(){ stopPlay(); if (step > 1) setStep(step – 1, true); stopPlay(); });
    $$(‘.stp’, stepsEl).forEach(function(b){ b.addEventListener(‘click’, function(){ stopPlay(); setStep(+b.getAttribute(‘data-s’), true); stopPlay(); }); });

    var rz;
    window.addEventListener(‘resize’, function(){ clearTimeout(rz); rz = setTimeout(function(){ if (step >= 3) drawWires(false); postH(); }, 120); });
    if (document.fonts && document.fonts.ready) document.fonts.ready.then(function(){ if (step >= 3) drawWires(false); postH(); });

    setStep(0, false);

    /* ———- speed race (paper Table 7) ———- */
    var D = [
    {k:’3′, lab:’Depth 3′, i:456, o:175, g:64.3, gp:52.2, c:374.1, cp:240.0, sg:’48.9′, sc:’8.4′},
    {k:’4′, lab:’Depth 4′, i:540, o:243, g:56.7, gp:54.2, c:488.4, cp:303.1, sg:’76.1′, sc:’8.8′},
    {k:’5′, lab:’Depth 5′, i:771, o:522, g:108.6, gp:108.1, c:709.8, cp:551.7, sg:’83.6′, sc:’12.8′},
    {k:’6′, lab:’Depth 6′, i:947, o:778, g:140.3, gp:127.8, c:890.4, cp:941.7, sg:’95.8′, sc:’15.1′},
    {k:’all’, lab:’All 40 documents’, i:678, o:429, g:92.5, gp:69.0, c:615.7, cp:546.9, sg:’81.0′, sc:’12.2′}
    ];
    var curD = D[3], raf = null;
    var depthsEl = $(‘#glf-depths’);
    depthsEl.innerHTML = D.map(function(d, i){ return ‘‘; }).join(”);
    $$(‘.pill’, depthsEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    curD = D[+b.getAttribute(‘data-i’)];
    $$(‘.pill’, depthsEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    runRace();
    });
    });
    $(‘#glf-run’).addEventListener(‘click’, runRace);
    function fmt(n){ return n.toLocaleString(‘en-US’); }
    function runRace(){
    var d = curD;
    var pre = d.i / 2000 * 1000, T = pre + d.o / 60 * 1000;
    $(‘#ro-in’).textContent = fmt(d.i);
    $(‘#ro-out’).textContent = fmt(d.o);
    $(‘#ro-gp’).textContent = d.gp.toFixed(1) + ‘ ms’;
    $(‘#ro-cp’).textContent = d.cp.toFixed(1) + ‘ ms’;
    $(‘#glf-sum’).innerHTML = ‘Estimated LLM time: ‘ + (T / 1000).toFixed(2) + ‘ s (‘ + (pre / 1000).toFixed(2) + ‘ s prefill). The paper reports that as ‘ + d.sg + ‘× the GLiFormer-base GPU mean and ‘ + d.sc + ‘× the CPU mean.’;
    var gpu = $(‘#lane-gpu’), cpu = $(‘#lane-cpu’), llm = $(‘#lane-llm’);
    var fg = gpu.querySelector(‘.fill’), fc = cpu.querySelector(‘.fill’), fp = llm.querySelector(‘.f-pre’), fn = llm.querySelector(‘.f-gen’);
    var tg = gpu.querySelector(‘.t’), tc = cpu.querySelector(‘.t’), tl = llm.querySelector(‘.t’);
    var dur = RM ? 0 : 4200, t0 = null;
    cancelAnimationFrame(raf);
    function frame(now){
    if (t0 === null) t0 = now;
    var p = dur ? Math.min((now – t0) / dur, 1) : 1, t = p * T;
    function w(v){ return (Math.min(t, v) / T * 100) + ‘%’; }
    fg.style.width = w(d.g); fg.style.minWidth = t >= d.g ? ‘3px’ : ‘0’;
    fc.style.width = w(d.c);
    fp.style.width = w(pre);
    fn.style.left = (pre / T * 100) + ‘%’;
    fn.style.width = (Math.max(0, t – pre) / T * 100) + ‘%’;
    gpu.classList.toggle(‘done’, t >= d.g); cpu.classList.toggle(‘done’, t >= d.c); llm.classList.toggle(‘done’, p >= 1);
    tg.textContent = (t >= d.g ? d.g.toFixed(1) : t.toFixed(0)) + ‘ ms’;
    tc.textContent = (t >= d.c ? d.c.toFixed(1) : t.toFixed(0)) + ‘ ms’;
    tl.textContent = (t / 1000).toFixed(2) + ‘ s’;
    $(‘#glf-tk’).textContent = p >= 1 ? d.o : Math.min(d.o, Math.floor(Math.max(0, t – pre) / 1000 * 60));
    $(‘#glf-clock’).textContent = (t / 1000).toFixed(2) + ‘ s’;
    if (p < 1) raf = requestAnimationFrame(frame);
    }
    raf = requestAnimationFrame(frame);
    }

    /* ———- scores (paper Tables 3 to 6) ———- */
    var TASKS = [
    {lab:’Nested JSON’, note:’Multilevel structuring on 500 examples, order-free and boundary-tolerant JSON F1. This is not exact JSON match. GPT-5.6-luna leads overall, but GLiFormer-large scores higher at depths 4, 5, and 6+ in Table 6 of the paper.’, rows:[
    [‘GPT-5.6-luna’, null, 91.96], [‘GLiFormer-large’, 575.6, 91.10, 1], [‘GLiFormer-base’, 264.2, 87.20, 1], [‘GPT-5-mini’, null, 82.56], [‘Qwen3.5 9B’, 9653.1, 78.5]]},
    {lab:’Classification’, note:’Mean macro-F1 across 13 datasets (79,828 examples). Larger LLMs still lead this aggregate.’, rows:[
    [‘GPT-5-mini’, null, 79.79], [‘Gemma-4-31B-IT’, 31000, 79.69], [‘Gemma4-12B’, 11959.7, 77.8], [‘GPT-OSS-120B’, 117000, 77.76], [‘GLiFormer-large’, 575.6, 75.03, 1], [‘GLiFormer-base’, 264.2, 72.36, 1], [‘GLiClass Multilang ultra’, 1708.2, 71.01], [‘GLiNER2 large v1’, 486.4, 66.19], [‘GLiNER2.5′, 193.6, 64.89]]},
    {lab:’CrossNER’, note:’Mean strict entity F1 across the 5 CrossNER domains (2,505 examples). Base slightly edges Large here.’, rows:[
    [‘Gemma-4-31B-IT’, 31000, 70.74], [‘GPT-OSS-120B’, 117000, 70.24], [‘GPT-5-mini’, null, 69.97], [‘GLiNER Multitask Large v0.5’, 440.2, 67.97], [‘NuNER Zero-span’, 448.9, 66.82], [‘GLiFormer-base’, 264.2, 65.10, 1], [‘GLiFormer-large’, 575.6, 64.35, 1], [‘GLiNER2 Base’, 208.5, 59.06]]},
    {lab:’Relations’, note:’Mean micro-F1 over CoNLL04, DocRED, FewRel, and CrossRE. GLiFormer uses predicted entities; Base and Large ran on different-sized subsets, and Large uses CoNLL04 zero-shot. GLiFormer trails the strongest baselines on this task.’, rows:[
    [‘GLiNER-Relex’, null, 25.6], [‘Gemma-4-31B-IT’, 31000, 25.08], [‘GPT-OSS-120B’, 117000, 23.99], [‘GPT-5-mini’, null, 22.1], [‘GLiFormer-large’, 575.6, 21.33, 1], [‘GLiFormer-base’, 264.2, 18.94, 1], [‘GLiNER2’, null, 17.8]]}
    ];
    var curTask = 0;
    var tasksEl = $(‘#glf-tasks’);
    tasksEl.innerHTML = TASKS.map(function(t, i){ return ‘‘; }).join(”);
    $$(‘.pill’, tasksEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    curTask = +b.getAttribute(‘data-i’);
    $$(‘.pill’, tasksEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    renderScores(curTask);
    });
    });
    function params(m){
    if (m === null) return ‘parameter count not listed’;
    return m >= 1000 ? (+(m / 1000).toFixed(2)) + ‘B parameters’ : m + ‘M parameters’;
    }
    function renderScores(ix){
    var t = TASKS[ix], max = Math.max.apply(null, t.rows.map(function(r){ return r[2]; }));
    var list = $(‘#glf-scores’);
    list.innerHTML = t.rows.map(function(r){
    return ‘

    ‘ + r[0] + ‘‘ + params(r[1]) + ‘

    ‘ + r[2].toFixed(2) + ‘

    ‘;
    }).join(”);
    $(‘#glf-scnote’).textContent = t.note + ‘ All figures are reported by Knowledgator in the GLiFormer paper.’;
    var fills = $$(‘.fill’, list);
    requestAnimationFrame(function(){ requestAnimationFrame(function(){ fills.forEach(function(f){ f.style.width = f.getAttribute(‘data-w’) + ‘%’; }); }); });
    postH();
    }

    /* ———- code snippets (from the v1 model cards) ———- */
    var LOAD = [
    ‘import torch’,
    ‘from gliformer import GLiFormer’,
    ”,
    ‘model = GLiFormer.from_pretrained(‘,
    ‘ “knowledgator/gliformer-large-v1”,’,
    ‘ load_tokenizer=True,’,
    ‘)’,
    ‘model = model.to(“cuda” if torch.cuda.is_available() else “cpu”).eval()’,
    ”
    ].join(‘n’);
    var SNIPS = [
    {lab:’Install’, note:’Requires Python 3.10 or newer. Optional CUDA attention kernels install from source with pip install -e “.[flash]”. CPU inference uses eager attention.’, code:[
    ‘pip install gliformer -U’,
    ”,
    ‘# or from source’,
    ‘git clone https://github.com/Knowledgator/GLiFormer.git’,
    ‘cd GLiFormer’,
    ‘pip install -e .’].join(‘n’)},
    {lab:’Entities’, note:’Each entity returns text, label, start, end, and score. Offsets are character positions with an exclusive end.’, code:LOAD + [
    ‘entities = model.predict_entities(‘,
    ‘ “Alice works at Acme in London.”,’,
    ‘ [“person”, “organization”, “location”],’,
    ‘ threshold=0.5,’,
    ‘)’,
    ‘for entity in entities:’,
    ‘ print(entity[“text”], entity[“label”], entity[“score”])’].join(‘n’)},
    {lab:’Nested JSON’, note:’Pydantic validation checks the output schema, not factual correctness.’, code:LOAD + [
    ‘from pydantic import BaseModel’,
    ”,
    ‘class Employee(BaseModel):’,
    ‘ name: str’,
    ‘ role: str’,
    ”,
    ‘class Department(BaseModel):’,
    ‘ name: str’,
    ‘ employees: list[Employee]’,
    ”,
    ‘class Company(BaseModel):’,
    ‘ name: str’,
    ‘ departments: list[Department]’,
    ”,
    ‘records = model.structure(‘,
    ‘ “At Acme, Engineering includes Alice, a software engineer, and Bob, “‘,
    ‘ “a designer. Sales includes Carol, an account manager.”,’,
    ‘ {“company”: Company},’,
    ‘ validate_output=True,’,
    ‘)’,
    ‘print(records)’].join(‘n’)},
    {lab:’Many tasks, 1 call’, note:’inference returns a dictionary keyed by task, with one result per input text.’, code:LOAD + [
    ‘results = model.inference(‘,
    ‘ “Alice joined Acme as a software engineer.”,’,
    ‘ entities=[“person”, “organization”],’,
    ‘ classes=[“business”, “sports”, “technology”],’,
    ‘ structures={“employee”: [“name”, “company”]},’,
    ‘)’,
    ‘print(results[“ner”][0])’,
    ‘print(results[“classification”][0])’,
    ‘print(results[“structuring”][0])’].join(‘n’)},
    {lab:’Relations’, note:’The v1 checkpoints have a joint relation head only. predict_relations needs an open relation head, so use joint_relations.’, code:LOAD + [
    ‘results = model.inference(‘,
    ‘ “Alice works at Acme.”,’,
    ‘ joint_relations={‘,
    ‘ “employment”: {‘,
    ‘ “entities”: [“person”, “organization”],’,
    ‘ “relations”: [“works_at”],’,
    ‘ }’,
    ‘ },’,
    ‘ threshold=0.5,’,
    ‘)’,
    ‘for relation in results[“joint_relex”][0]:’,
    ‘ print(relation[“head”][“text”], relation[“relation”], relation[“tail”][“text”])’].join(‘n’)}
    ];
    var snipsEl = $(‘#glf-snips’), curSnip = 0;
    snipsEl.innerHTML = SNIPS.map(function(s, i){ return ‘‘; }).join(”);
    function showSnip(i){
    curSnip = i;
    $(‘#glf-code’).textContent = SNIPS[i].code;
    $(‘#glf-codenote’).textContent = SNIPS[i].note;
    $(‘#glf-copy’).textContent=”Copy”;
    postH();
    }
    $$(‘.pill’, snipsEl).forEach(function(b){
    b.addEventListener(‘click’, function(){
    $$(‘.pill’, snipsEl).forEach(function(x){ x.setAttribute(‘aria-pressed’, x === b ? ‘true’ : ‘false’); });
    showSnip(+b.getAttribute(‘data-i’));
    });
    });
    $(‘#glf-copy’).addEventListener(‘click’, function(){
    var txt = SNIPS[curSnip].code, btn = this;
    function done(){ btn.textContent=”Copied”; setTimeout(function(){ btn.textContent=”Copy”; }, 1600); }
    function fallback(){
    var ta = document.createElement(‘textarea’); ta.value = txt; ta.style.position = ‘fixed’; ta.style.opacity = ‘0’;
    document.body.appendChild(ta); ta.select();
    try { document.execCommand(‘copy’); done(); } catch (e) { btn.textContent=”Select and copy”; }
    document.body.removeChild(ta);
    }
    if (navigator.clipboard && navigator.clipboard.writeText){ navigator.clipboard.writeText(txt).then(done, fallback); } else fallback();
    });
    showSnip(0);
    renderScores(0);
    })();

    “>

    Both v1 checkpoints use the gliformer-layout model type with 5 heads: NER, classification, joint relations, multilevel structuring, and embeddings. Each configures a 12-word maximum span width and 100 record anchors. Full specs sit in the pretrained models docs.

    GLiFormer-base starts from a DeBERTa backbone further pretrained on 100 billion tokens. The paper documents 1,357,671 examples for broad multitask training and 372,090 for task-focused post-training.

    All scores below are reported by Knowledgator.

    On combined NER and classification aggregates, the paper reports Large beats Gemma-4-E4B with about 14× fewer parameters.

    Knowledgator timed GLiFormer-base on 40 structuring documents at batch size 1. Median latency was 69 ms on an NVIDIA RTX PRO 6000 Blackwell GPU in FP16. On an 8-thread AMD EPYC 9B45 CPU in FP32, it was 547 ms.

    The key claim ‘up to 95.8× faster’ figure is an analytical estimate, not a measured LLM run. It assumes prefill at 2,000 input tokens per second and generation at 60 output tokens per second. It excludes queueing, network delay, and hidden reasoning, and assumes nothing about accuracy parity.

    Nested Pydantic schemas work for multilevel records. One inference call can also run entities, classes, and structures together. Use joint_relations for relations, since the v1 checkpoints lack an open relation head.

    Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us

    575MParameter Encoder Extraction Generating GLiFormer hits JSON Knowledgator Nested Releases tokens
    NCIJ NETWNCIJ NETWORK
    • Website

    Keep Reading

    Arctic sea ice hits another troubling low in 2026

    CopilotKit Releases CLiF: A Continual Learning Platform That Turns Agent Traces and User Actions into Skills, Evals, and Fine-Tuning Data

    openKylin Outlines Its Vision for Reimagining Linux in the AI Era at Open Source Summit Europe 2026

    TypeSafe AI Releases Jev 1.14 With Images, Box Type and 262k Context

    Bitcoin Miners Plunge 13% as Inflation Hits Wall Street

    Meet Grok Voice 3.0: SpaceXAI Voice Agent Model Ranks #1 on Artificial Analysis

    Add A Comment
    Leave A Reply Cancel Reply

    Editors Picks

    Trump’s crypto bill loses its White House negotiator as Patrick Witt exits

    October 15, 2026

    Arctic sea ice hits another troubling low in 2026

    October 15, 2026

    How Rewilding Could Help Atoll Islands Keep Pace With Rising Seas

    October 15, 2026

    Algeria’s New Bid for Regional Influence

    October 15, 2026
    Latest Posts

    Early release scheme risks more serious crimes, probation chief warns

    August 12, 2026

    UK heatwave live: Met Office issues extreme heat warning as government convenes emergency Cobra meeting | Extreme heat

    August 12, 2026

    Rybakina defeats Osaka, advances to Canadian Open semifinals to play Gauff | Tennis News

    August 12, 2026

    Subscribe to News

    Get the latest sports news from NewsSite about world, sports and politics.

    NCIJ Network is an independent digital news platform delivering trusted investigative journalism, European and global news, in-depth analysis, and fact-based reporting with accuracy, transparency, and integrity.

    Facebook X (Twitter) Instagram Pinterest YouTube

    Trump’s crypto bill loses its White House negotiator as Patrick Witt exits

    October 15, 2026

    Arctic sea ice hits another troubling low in 2026

    October 15, 2026

    How Rewilding Could Help Atoll Islands Keep Pace With Rising Seas

    October 15, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Type above and press Enter to search. Press Esc to cancel.