Tłumaczenie automatyczne · Oryginał angielski
GLINER: decyzje lokalne i wydobycie podmiotów
Podgląd rozwoju. Wagi są publikowane na Hugging Face; moduł Swift jest w przeglądzie, a jeszcze nie w wydaniu speech-swift.
Moduł GLINER uruchamia GLiNER2.5-Decide w MLX Swift. Podajcie mu tekst i listę dozwolonych etykiet, aby uzyskać wyniki klasyfikacji, lub poproś o jednostki, takie jak osoba i czas.
Jak to działa?
DeBERTa encoder czyta tekst i schemat razem. Szefowie klasyfikacji zdobywają twoje etykiety. Szefowa podmiotów identyfikuje zakresy oryginalnego zdania. Czas biegania nie generuje symbolu odpowiedzi JSON przez 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"]
)
Wagi
Trzy konwersje MLX przymocowanej do góry rzeki 7ee5da4c są publikowane na Hugging Face. Runtime pobiera wybrany wariant przy pierwszym użyciu i ponownie wykorzystuje lokalny cache po; nie jest zaangażowany Python
| Wariant | Repozytorium | Wagi | Przekrój | Ekstrakcja | Pamięć szczytowa |
|---|---|---|---|---|---|
int8 (domyślnie) | 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, maszyna bezwładna: mediana pełnego zapotrzebowania, w tym tokenizacji, i pamięci procesu szczytowego. Wszystkie trzy warianty zwracają te same etykiety, spany i offsety jak model z góry PyTorch w przypadkach odniesienia 24, z pewnością w 0.006.
Linia poleceń
W speech CLI ujawnia oba zadania jako speech gliner classify oraz speech gliner extract. Pass etykiety jako oddzielona comma- list i powtórzyć --description label=text w razie potrzeby. Pomiń tekst, aby przeczytać go ze stdin. --variant kilometry int8 (domyślnie), fp16 lub fp32oraz --model-dir ładuje pakiet lokalny zamiast pobierania. Nieprawidłowe argumenty są odrzucane przed załadowaniem modelu. --json, wyjście obejmuje każde prawdopodobieństwo etykiety, lub rozciąga się z przesunięciami UTF-16, plus obciążenie i czas inferencji.
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
W karta modelowa dla agentów jest to plik Markdown, który zawiera listę dokładnych pól wyjściowych API i zweryfikowanych wyników.
Dokładność na małym zestawie poleceń
Szesnaście ręcznie napisanych przykładów routingu pasowało do oczekiwań w przypadku 12; osiem przykładów wydobycia pasowało do przypadków 7. Port Swift odtwarza model PyTorch w górę rzeki w przypadkach referencyjnych 24: identyczne identyfikatory tokena, etykiety i klapy, z wynikami w ramach 0.001, te małe zestawy sprawdzają zachowanie i wierność; nie są one szerokim wskaźnikiem dokładności.
Zakres i ograniczenia
- Klasyfikacja i zakres jednostek oznaczonych etykietą pojedynczą; do 512 kodowanych żetonów na żądanie.
- Punkty kontrolne span / count _ lstm ze wspólną relatywną uwagą, w FP32, FP16 lub INT8. Modele graniczne, wykresy relacji i ograniczenia stawów nie są częścią tego początkowego API
- Offsety podmiotów wykorzystują UTF-16, dopasowując NSRange. Daty i czasy wymagają oddzielnej normalizacji.
- Wyniki nie gwarantują, że decyzja jest poprawna. Moduł nie wykonuje żadnego narzędzia.
- Rozmiar pobierania modeli, pamięć procesowa i jednofunkcyjna pamięć to różne pomiary.
Precyzja i pamięć
FP16 o połowę więcej niż w przypadku przechowywania 973 MB. INT8 kwantyfikuje matryce kodujące i debety symboli 8 bity w grupach 64, z głowicami, normalizacji i aktywacji w FP16, dla 567 Plik MB. Bieg trwa INT8 macierze zapakowane i dekodowane tylko wiersze osadzania wniosek wykorzystuje.
Projekcje względnej pozycji kodera zależą tylko od wagi, więc są one obliczane raz przy obciążeniu zamiast na każdym wniosku. GLiNER.load(from:evaluateLayers:) tryb materializuje warstwy kodujące jeden na raz, aby niższe przydziały szczytowe.