Maskinöversättning · Engelskt original
GLiNER: lokala beslut och utvinning av företaget
Utvecklingsförhandsgranskning. Vikterna publiceras på Hugging Face; Swift-modulen är i granskning och ännu inte i en speech-swift release.
GLiNER-modulen körs GLiNER2.5-Decide i MLX Swift. Ge den text och en lista över tillåtna etiketter för att få klassificeringspoäng, eller be om entitetsspannor som en person och tid.
Hur det fungerar
En DeBERTa-kodare läser texten och schemat tillsammans. Klassificeringshuvuden gör dina etiketter. Entity-huvud identifierar spänner av den ursprungliga meningen. Runtiden genererar inte en JSON-svarstoken av token.
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"]
)
Vikter
Tre MLX omvandlingar av den pinned uppströms revision 7ee5da4c publiceras på Hugging Face. Runtiden laddar ner den valda varianten vid första användning och återanvänder den lokala cache efteråt; ingen Python
| Variant | Repository | Vikter | Routing | Extraktion | Peak memory |
|---|---|---|---|---|---|
int8 (standard) | aufklarer/GLiNER2.5-Decide-340M-MLX-8bit | 567 MB | 7,6 ms | 8,9 ms | 0,85 GB |
fp16 | aufklarer/GLiNER2.5-Decide-340M-MLX-fp16 | 973 MB | 8,8 ms | 10,0 ms | 1,58 GB |
fp32 | aufklarer/GLiNER2.5-Decide-340M-MLX | 1,95 GB | 11.1 ms | 12,6 ms | 2.55 GB |
Apple M5 Pro, idle machine: median full förfrågan inklusive tokenization och toppprocessminne. Alla tre varianter returnerar samma etiketter, spänner och kompensationer som den uppströms PyTorch-modellen på 24 referensfall, med förtroende inom 0,006.
Command line
Den som speech CLI avslöjar båda uppgifterna som speech gliner classify och speech gliner extractPass etiketter som en komma-separerad lista och upprepa --description label=text Omit texten för att läsa den från stdin. --variant plockar int8 (default), fp16 eller fp32och --model-dir lastar en lokal bunt i stället för nedladdning. Ogiltiga argument avvisas innan modellbelastningen. --jsonUtgången innehåller varje etikett sannolikhet, eller spänner med UTF-16-kompensationer, plus belastning och inferenstider.
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
modellkortet för agenter är en Markdown-fil som listar exakt API, utgångsfält och verifierade resultat.
Noggrannhet på en liten kommandouppsättning
Sexton handskrivna routingexemplar matchade förväntningar i 12 fall; åtta extraktionsexempel matchade i 7 fall. Swift porten reproducerar den uppströms PyTorch-modellen på 24 referensfall: identiska token-ID, etiketter och spänner, med poäng inom 0.001. Dessa små set kontrollerar beteende och fidelitet; de är inte ett brett noggrannhetsriktmärke.
Räckvidd och begränsningar
- Single-label klassificering och enhet spänner, upp till 512 kodade tokens per begäran.
- Span/count_lstm-kontrollpunkter med delad relativ uppmärksamhet, i FP32, FP16 eller INT8. Gränsmodeller, relationsgrafer och gemensamma begränsningar ingår inte i denna initiala API.
- Entitetskompensationer använder UTF-16, matchande NSRange. Datum och tider kräver separat normalisering.
- Poäng garanterar inte att ett beslut är korrekt. Inget verktyg utförs av modulen.
- Modell nedladdningsstorlek, processminne och enat minne fysiska fotavtryck är olika mätningar.
Precision och minne
FP16 halverar viktlagring till 973 MB. INT8 kvantiserar kodarens matriser och token inbäddningar till 8 bitar i grupper av 64, med huvuden, normalisering och aktiveringar i FP16, för en 567 MB-fil. Runtime håller INT8 matriser packade och avkodar endast de inbäddade raderna som en förfrågan använder.
Kodarens relativa positionsprognoser beror bara på vikter, så de beräknas en gång i belastning istället för på varje begäran. Den valfria GLiNER.load(from:evaluateLayers:) läge materialiserar kodare lager en i taget för att sänka toppallokeringar.