Traduzione automatica · Originale inglese

GLiNER: decisioni locali e e estrazione di entità

Anteprima dello sviluppo. I pesi sono pubblicati su Hugging Face; il modulo Swift è in recensione e non ancora in versione speech-swift.

Il modulo GLiNER esegue GLiNER2.5-Decide in MLX Swift. Dagli un testo e un elenco di etichette autorizzate per ottenere punteggi di classificazione, o chiedere per le campate di entità come una persona e un tempo.

Come funziona

Un encoder DeBERTa legge il testo e lo schema insieme. Teste di classificazione segnano le etichette. Teste d'ingresso identificano le campate della frase originale. Il runtime non genera un token di risposta JSON.

import GLiNER
let model = try await GLiNER.fromPretrained()
let choices = try model.classify(
    "Remind me to call Dad at six PM.",
    labels: ["create_reminder", "send_message", "other"]
)
let spans = try model.extractEntities(
    "Remind me to call Dad at six PM.",
    labels: ["person", "time"]
)

Pesi

Tre conversioni MLX della revisione a monte pinned 7ee5da4c sono pubblicati su Hugging Face. Il runtime scarica la variante scelta in primo utilizzo e riutilizza la cache locale in seguito; non è coinvolto Python .

VarianteRepositoryPesiRoutingEstrazioneMemoria di picco
int8 (default)aufklarer/GLiNER2.5-Decide-340M-MLX-8bit567 MB7.6 ms8.9 ms0.85 GB
fp16aufklarer/GLiNER2.5-Decide-340M-MLX-fp16973 MB8,8 ms10,0 ms1.58 GB
fp32aufklarer/GLiNER2.5-Decide-340M-MLX1.95 GB11.1 m12.6 ms2.55 GB

Apple M5 Pro, idle machine: median full request tra cui tokenization e memoria di processo di picco. Tutte e tre le varianti restituiscono le stesse etichette, campate e offset del modello PyTorch a monte su 24 casi di riferimento, con fiducia entro 0.006.

Linea di comando

Il speech CLI espone entrambi i compiti come speech gliner classify e speech gliner extract. Passare le etichette come un elenco separato da virgola e ripetere --description label=text omettere il testo per leggerlo da stdin. --variant scelte int8 (default) fp16 o fp32e --model-dir carica un fascio locale invece di scaricare. Gli argomenti non validi vengono rifiutati prima che il modello carichi. --json, l'output include ogni probabilità di etichetta, o si estende con gli offset UTF-16, più tempi di carico e inferenza.

swift build -c release --product speech --disable-sandbox
scripts/build_mlx_metallib.sh release
.build/release/speech gliner classify "Remind me to call Dad at six PM." \
  --labels create_reminder,send_message,set_timer,other
.build/release/speech gliner extract "Remind me to call Dad at six PM." \
  --labels person,time --json

Il scheda modello per gli agenti è un file Markdown che elenca l'esatto API, i campi di uscita e i risultati verificati.

Accuratezza su un piccolo set di comando

Sedici esempi di routing scritti a mano corrispondono alle aspettative in 12 casi; otto esempi di estrazione corrispondono in 7 casi. La porta Swift riproduce il modello PyTorch a monte su 24 casi di riferimento: ID token identici, etichette e campate, con punteggi entro 0,001. Questi piccoli set controllano il comportamento e la fedeltà; non sono un benchmark di accuratezza larga.

Ambito e limitazioni

Precisione e memoria

FP16 halves stoccaggio di peso a 973 MB. INT8 quantizza le matrici e i token di encoder 8 bit in gruppi di 64, con teste, normalizzazione e attivazioni in FP16# Per una # 567 Il file MB. Il runtime continua INT8 matrici imballate e decodifica solo le righe incorporanti che una richiesta utilizza.

Le proiezioni di posizione relativa dell'encoder dipendono solo dai pesi, quindi vengono calcolate una volta a carico invece di ogni richiesta. Il carico opzionale GLiNER.load(from:evaluateLayers:)

Fonti e attribuzione