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

WariantRepozytoriumWagiPrzekrójEkstrakcjaPamięć szczytowa
int8 (domyślnie)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 ms12.6 ms2.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

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.

Źródła i przypisanie