Traducere automată · Originalul în engleză
GLINER: decizii locale și extracție de entități
Previzualizarea dezvoltării. Greutatea este publicată pe Hugging Face; modulul Swift este în recenzie și nu este încă disponibil într-o versiune speech-swift
Modulul GLINER ruleaza GLiNER2.5-Decide in MLX Swift. Oferiti-i un text si o lista de etichete permise pentru a obtine scoruri de clasificare sau cereti pentru entitate, cum ar fi o persoana si timp.
Cum funcționează
Un encodor DeBERTa citeste textul si schema impreuna. Clasificarea capetelor puncteaza etichetele dumneavoastra. Capetele de entitate identifica duratele propozitiei originale. Timpul de rulare nu genereaza un raspuns JSON prin jeton.
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"]
)
Greutate
3 MLX conversii ale reviziei în amonte cu vârf 7ee5da4c sunt publicate la Hugging Face. Runtime-ul descarcă varianta aleasă pentru prima utilizare și reutilizează cache-ul local ulterior; nu este implicat niciun Python.
| Variantă | Depozit | Greutate | Rutare | Extragere | Memorie de vârf |
|---|---|---|---|---|---|
int8 (default) | aufklarer/GLiNER2.5-Decide-340M-MLX-8bit | 567 MO | 7,6 ms | 8,9 ms | 0,85 GB |
fp16 | aufklater/GLiNER2.5-Decide-340M-MLX-fp16 | 973 MO | 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, mașină inactivă: cerere completă mediană, inclusiv tokenizare, și memorie de proces de vârf. Toate cele trei variante returnează aceleași etichete, întinderi și offset-uri ca modelul PyTorch în amonte pe 24 de cazuri de referință, cu încredere în 0.006.
Linia de comandă
ă speech CLI expune ambele sarcini ca speech gliner classify şi speech gliner extract. Trece etichetele ca o listă separată de virgulă și se repetă --description label=text Omit textul să-l citească de la Stdin. --variant culesuri int8 (default); fp16 sau fp32, și --model-dir încarcă un pachet local în loc de descărcare. Argumentele nevalide sunt respinse înainte de încărcarea modelului. --json, ieșire include fiecare probabilitate de etichetă, sau se întinde cu UTF-16 offset-uri, plus încărcare și temporizări de interferență.
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
Cardul model pentru agenți este un fișier Markdown care enumeră exact API, câmpurile de ieșire și rezultatele verificate.
Precizie pe un set mic de comenzi
Șaisprezece exemple de rutare de mână se potrivesc așteptărilor în 12 cazuri; opt exemple de extracție se potrivesc în 7 cazuri. Portul Swift reproduce modelul PyTorch din amonte în 24 de cazuri de referință: ID-uri, etichete și intervale identice, cu scoruri în 0.001. Aceste seturi mici verifică comportamentul și fidelitatea; acestea nu sunt un criteriu de referință de precizie larg.
Domeniu de aplicare și limitări
- Clasificarea și entitatea cu etichetă unică se întind; până la 512 jetoane codificate per cerere.
- Punctele de control Span/conte_lstm cu atenție relativă comună, în FP32, FP16 sau INT8. Modelele de linie, graficele relației și constrângerile articulare nu fac parte din această primă API.
- O entitate compensează utilizarea UTF-16, potrivirea NSRange. Datele și orele necesită normalizare separată.
- Score nu garantează că o decizie este corectă. Nici un instrument este executat de către modulul.
- Dimensiunea de descărcare model, memoria proces, și amprenta fizică unificat-memorie sunt măsurători diferite.
Precizie și memorie
FP16 jumătate din greutatea de stocare la 973 MB. INT8 cuantizează matricele de codor și tokenul înglobează 8 biți în grupuri de 64, cu capete, normalizări și activări în FP16, pentru un fișier 567 MB. Timpul de funcționare păstrează INT8 matrice ambalate și decodează numai rândurile de înglobare o utilizare a cererii.
Proiecțiile relative de poziție ale encodorului depind doar de greutăți, astfel încât acestea sunt calculate o dată la sarcină în loc de fiecare cerere. Încărcătura opțională GLiNER.load(from:evaluateLayers:) mod materializează straturile de codor unu la un moment dat pentru a reduce alocările maxime.