Skip to main content

gliner2-mlx

PyPI version

An MLX port of GLiNER2 for fast information extraction on Apple Silicon.

GLiNER2 is a multi-task model for named entity recognition, text classification, relation extraction, and structured data extraction. This package runs the compute-heavy transformer encoder on MLX (Apple's GPU framework) while reusing GLiNER2's preprocessing and postprocessing, delivering significant speedups on Mac.

Installation

pip install gliner2-mlx

Or with uv:

uv add gliner2-mlx

Quick Start

from gliner2_mlx import GLiNER2MLX

model = GLiNER2MLX.from_pretrained("fastino/gliner2-base-v1")

# Named entity recognition
result = model.extract_entities(
    "Apple CEO Tim Cook announced the iPhone 15 launch in Cupertino.",
    ["company", "person", "product", "location"],
)
print(result)
# {'entities': {'company': ['Apple'], 'person': ['Tim Cook'], 'product': ['iPhone 15'], 'location': ['Cupertino']}}

Features

The API mirrors GLiNER2 — all extraction methods work the same way:

# Batch entity extraction
results = model.batch_extract_entities(
    ["Apple released iPhone 15.", "Google announced Pixel 8."],
    ["company", "product"],
    batch_size=8,
)

# Text classification
result = model.classify_text(
    "I love this product, it's amazing!",
    {"sentiment": ["positive", "negative", "neutral"]},
)

# Relation extraction
result = model.extract_relations(
    "Elon Musk founded SpaceX in 2002.",
    ["founded_by"],
)

# Structured data extraction
result = model.extract_json(
    "John Smith, aged 35, is a software engineer at Google.",
    {"person": ["name::str", "age::str", "company::str"]},
)

# Schema builder (same as GLiNER2)
from gliner2.inference.engine import Schema

schema = (
    Schema()
    .entities(["company", "person"])
    .relations(["works_for"])
)
result = model.extract("Tim Cook works at Apple.", schema)

Benchmark

Measured on Apple M3 Max, fastino/gliner2-base-v1, 1000 iterations per scenario with 10 warmup iterations. Interleaved execution order to eliminate systematic bias. All results statistically significant (p < 0.001, paired t-test).

Scenario PyTorch CPU MLX GPU Speedup
Single entity extraction 41.79 ms 14.35 ms 2.91x
Batch entity extraction (8 texts) 106.19 ms 35.41 ms 3.00x
Long text entity extraction 68.78 ms 19.55 ms 3.52x
Structure extraction 41.60 ms 14.24 ms 2.92x
Relation extraction 50.43 ms 17.06 ms 2.96x
Overall 61.76 ms 20.12 ms 3.07x

How It Works

gliner2-mlx ports the neural network inference to MLX while keeping GLiNER2 as a dependency for everything else:

  • MLX (GPU): DeBERTaV2 encoder, span representation, classification/count heads
  • GLiNER2 (CPU): Tokenization, schema processing, result formatting, overlap removal

On first use, from_pretrained automatically converts PyTorch weights to MLX format and caches them in ~/.cache/gliner2-mlx/.

Contributing

See CONTRIBUTING.md for development setup, running tests, linting, benchmarking, and publishing instructions.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gliner2_mlx-0.1.2.tar.gz (107.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gliner2_mlx-0.1.2-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file gliner2_mlx-0.1.2.tar.gz.

File metadata

  • Download URL: gliner2_mlx-0.1.2.tar.gz
  • Upload date:
  • Size: 107.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for gliner2_mlx-0.1.2.tar.gz
Algorithm Hash digest
SHA256 bcc8739513c9ec3d2f291e7300b4307c836f84abc959ec4d78a1bfeaca15f69a
MD5 b5cd80b253ed2fd879de28a35dab9bb8
BLAKE2b-256 abc7571ed33d051773ed6392a9babcef869a8b0c083b87c923d76437d633b307

See more details on using hashes here.

Provenance

The following attestation bundles were made for gliner2_mlx-0.1.2.tar.gz:

Publisher: publish.yml on Andrew-Chen-Wang/gliner2-mlx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gliner2_mlx-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: gliner2_mlx-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for gliner2_mlx-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a4c5dcb2bcba157e08ab8257e795d3fc1872b1ecea888288e5618406bb055bbe
MD5 4f976b9bb41e1d96147f1aefb717ab12
BLAKE2b-256 fd71b344e34f48b6ec01128878d7fa0c5ad5951d7a1337903583b9ff7477997b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gliner2_mlx-0.1.2-py3-none-any.whl:

Publisher: publish.yml on Andrew-Chen-Wang/gliner2-mlx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page