Automatische vertaling · Engels origineel
GLINER: lokale beslissingen en extractie van entiteiten
Ontwikkelingsvoorbeeld. De gewichten worden gepubliceerd op Hugging Face; de Swift module is in beoordeling en nog niet in een speech-swift
De GLiner module draait GLiNER2.5-Decide in MLX Swift. Geef het tekst en een lijst van toegestane labels om classificatiescores te verkrijgen, of vraag om entiteitsspanwijdte zoals een persoon en tijd.
Hoe het werkt
Een DeBERTa encoder leest de tekst en schema samen. Classificatiekoppen scoren uw labels. Entity heads identificeren de spanten van de oorspronkelijke zin. De runtime genereert geen JSON respons token per 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"]
)
Gewichten
Drie MLX conversies van de gepinde upstream revisie 7ee5da4c worden gepubliceerd op Hugging Face. De runtime downloadt de gekozen variant bij het eerste gebruik en hergebruikt daarna de lokale cache; er is geen Python betrokken.
| Variant | Repository | Gewichten | Routing | Extractie | Piekgeheugen |
|---|---|---|---|---|---|
int8 (standaard) | 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, stationaire machine: mediaan volledig verzoek inclusief tokenization, en piekprocesgeheugen. Alle drie varianten geven dezelfde labels, spanten en offsets terug als het upstream PyTorch model op 24 referentie gevallen, met vertrouwen binnen 0.006.
Commandoregel
De speech CLI stelt beide taken bloot als speech gliner classify en speech gliner extract. Geef labels door als een door komma's gescheiden lijst en herhaal --description label=text indien nodig. Stuur de tekst door om deze te lezen uit stdin. --variant picks int8 (standaard), fp16 of fp32, en --model-dir laadt een lokale bundel in plaats van downloaden. Ongeldige argumenten worden afgewezen voordat de modelladingen worden geladen. Met --json omvat de uitvoer elke labelkans, of spanen met UTF-16 offsets, plus load- en verschillen.
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
De modelkaart voor agenten is een Markdown bestand dat de exacte API, uitvoervelden en geverifieerde resultaten bevat.
Nauwkeurigheid op een kleine opdrachtset
Zestien handgeschreven routing voorbeelden kwamen overeen met verwachtingen in 12 gevallen; acht extractie voorbeelden kwamen overeen in 7 gevallen. De Swift poort reproduceert het upstream PyTorch model op 24 referentie gevallen: identieke token ID's, labels en overspanningen, met scores binnen 0.001. Deze kleine sets controleren gedrag en trouw; ze zijn geen brede nauwkeurigheid benchmark.
Toepassingsgebied en beperkingen
- Indeling op één etiket en entiteitsspanwijdten; tot 512 gecodeerde tokens per aanvraag.
- Span/count_lstm controlepunten met gedeelde relatieve aandacht, in FP32, FP16 of INT8. Grenzenmodellen, relatiegrafieken en gezamenlijke beperkingen maken geen deel uit van deze initiële API.
- De entiteit offsets gebruiken UTF-16, met NSRange. Data en tijden vereisen aparte normalisatie.
- Scores garanderen niet dat een beslissing correct is. Er wordt geen gereedschap uitgevoerd door de module.
- Model download grootte, procesgeheugen, en unified-memory fysieke voetafdruk zijn verschillende metingen.
Precisie en geheugen
FP16 helften gewicht opslag naar 973 MB. INT8 quantiseert de encodermatrices en token inbeddingen aan 8 bits in groepen van 64, met koppen, normalisatie en activeringen in FP16, voor een 567 MB-bestand. De runtime houdt INT8 Matrices verpakt en decodeert alleen de inbeddingsrijen die een verzoek gebruikt.
De relatieve positieprojecties van de encoder zijn alleen afhankelijk van gewichten, zodat ze eenmaal bij belasting worden berekend in plaats van op elke aanvraag. De optionele GLiNER.load(from:evaluateLayers:)-modus materialiseert encoderlagen één voor één om de piektoewijzingen te verlagen.