Tłumaczenie automatyczne · Oryginał angielski
Clef- flash: decyzje lokalne w Swift
Podgląd rozwoju. Lokalne wsparcie tekstowe jest w trakcie opracowywania i nie zostało wydane w speech-swift.
Clef- flash czyta stan i zestaw pytań, a następnie zdobywa dozwolone odpowiedzi razem. Swift moduł uruchamia 9Model B na poziomie lokalnym Apple Silicon z MLX oraz 4- Wagi. Python proces lub host API jest stosowany w trakcie wnioskowania.
Użyj Swift
import Clef
let model = try await Clef.fromPretrained()
let result = try model.decide(
state: "Please turn the kitchen lights on.",
questions: [
ClefQuestion(id: "action", instructions: "Which action?",
kind: .choice(["on": "Lights on", "off": "Lights off", "other": "Other"])),
ClefQuestion(id: "urgent", instructions: "Is this urgent?", kind: .noul())
])
print(result.decisions[0].probabilities)
Pytania wyboru zwracają prawdopodobieństwa dla każdej opcji. A noul pytanie zwraca prawdopodobieństwo true. Pytanie o wynik pobiera uporządkowaną listę, taką jak .score(["normal", "urgent"]) i zwraca oczekiwany indeks zerowy. Moduł nie wykonuje poleceń.
Linia poleceń
speech clef decide request.json
speech clef decide request.json --model-dir /path/to/Clef-flash-9B-MLX-4bit
speech clef decide request.json --offline --max-tokens 4096
Domyślnym modelem jest aufklarer / Clef-flash-9B-MLX-4bit. Pierwsze polecenie pobiera go w razie potrzeby. Użyj lokalnego katalogu lub flagi offline, aby uniknąć pobierania.
Polecenie standalone
swift build -c release --product clef-decide --disable-sandbox
scripts/build_mlx_metallib.sh release
.build/release/clef-decide /path/to/clef-flash-mlx-4bit request.json
{"state":"Turn the lights on.","questions":[
{"id":"action","type":"choice","instructions":"Which action?",
"choices":{"on":"Lights on","off":"Lights off","other":"Other"}}
]}
Wyjście zawiera prawdopodobieństwa, ilość ikon wejściowych i czas podejmowania decyzji bez obciążenia modelu. Polecenie akceptuje uporządkowaną tablicę pytań; nie jest to punkt końcowy systemOne HTTP.
Jak to działa?
Qwen3.5 szkielet odczytuje tekst i schemat. Głowa wspólnej decyzji uczestniczy w tym kontekście, pozwala na interakcję pytań i łączy wyniki kontekstowe z wcześniejszymi wydziałami wyjściowymi modelu. Wygrywa opcje bezpośrednio zamiast generowania symbolu odpowiedzi JSON za pomocą symbolu.
Wymogi i ograniczenia
- Apple Silicon, macOS 15+ i MLX. Obsługiwany eksport Affine 4- bit to w przybliżeniu 5.3 GB; pamięć runtime jest dodatkowa.
- Tylko tekst. Obrazy, wideo, model 27B Clef i inne formaty wagowe nie są obsługiwane.
- Użyj każdej instancji serialnie. Domyślny limit to 4096 kodowanych żetonów, konfigurowalnych do 16384; ponadgabarytowe żądania raczej zawodzą niż ciszej skrócą stan.
- Prawdopodobieństwa nie są skalibrowane. Utrzymanie wykonania polecenia i potwierdzenia oddzielone od wyników modelu.
- Opublikowany hostingowy latencja nie jest pomiarem tej lokalnej implementacji Swift.
Lokalna walidacja
Październik 3 aktualizacja: Dwa świeże przejazdy 20 ciepłych powtarza każdy uśredniony o 276 ms dla tego samego modelu 303- token, trzy-pole żądanie (obserwowany zakres 274-284 ms), z wyłączeniem obciążenia modelu. Wcześniejsze 291 MS uruchomić poniżej dostarczył oddzielne pomiary RSS i fizyczny ślad. Jest to jeden powtarzany wniosek tekstu; rozpoznawanie mowy, wyjście mowy i wizualne nie zostały zmierzone.
W sprawie M5 Pro z 48 GB ujednolicona pamięć, dwadzieścia ogrzanych rund jednego 303-token, trzy-pole żądanie uśrednione 0.291 sekundy (mediana 0.290; zakres 0.280–0.299), z wyłączeniem obciążenia modelu. GPU operacje oraz 512-token kawałki zmniejszył oryginał 0.921- druga średnia przez około 68%, z niezmienionymi wagami i wybranych odpowiedzi. Szczytowy proces RSS 5.11 GiB; szczyt macOS Odcisk pamięci był 6.81 GiB. RSS sam nie rejestruje wszystkich unified- memory. Dłuższe wejścia mogą potrzebować więcej pamięci. 462–897 ms podczas gdy inne aplikacje były aktywne, więc 291 ms mean nie jest stałą gwarancją latencji. Są to pomiary rozwoju na jednym powtarzającym się wniosku, a nie szeroki wskaźnik jakości. Wszystkie 303 referencyjna identyfikacja symboli, oraz maksymalna różnica prawdopodobieństwa od Python reference is about 0.00266.