Maskinoversettelse · Engelsk original
Clef-flash: lokale beslutninger i Swift
Utviklingsforhåndsvisning. Lokal tekststøtte er under utvikling og har ikke blitt utgitt i speech-swift.
Clef-flash leser en tilstand og et sett med spørsmål, så får du de tillatte svarene sammen. Swift modulen kjører 9B-modellen lokalt på Apple Silicon med MLX og 4-bits vekter. Nei Python prosess eller hostet API brukes under inferens.
Bruk fra 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)
Valgspørsmål returnerer sannsynligheten for hvert alternativ. A noul spørsel returnerer sannsynlighet for sant. Et poengspørsmål tar en bestilt liste som .score(["normal", "urgent"]) og returnerer den forventede nullbaserte indeksen. Modulen kjører ikke kommandoer.
Kommandolinje
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
Standardmodellen er aufklarer/Clef-flash-9B-MLX-4bit. Den første kommandoen lastes ned om nødvendig. Bruk en lokal katalog eller offline-flagget for å unngå nedlasting.
Standard kommando
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"}}
]}
Utgangen inkluderer sannsynligheter, antall inngangssymboler og avgjørelsestid som utelukker modelllast. Kommandoen godtar en bestilt spørsmålsliste; det er ikke et SystemOne HTTP- endepunkt.
Hvordan det fungerer
A Qwen3.5 ryggrad leser tekst og skjema. Det felles beslutningshodet deltar i den sammenhengen, lar spørsmål samhandle og kombinerer kontekstmessige scorer med en tidligere fra modellens utgangsinnlegg. Det Scorer alternativene direkte i stedet for å generere et JSON-svarssymbol ved token.
Krav og grenser
- Apple Silicon, macOS 15+, og MLX. Den støttede affin 4-bit eksporten er omtrent 5,3 GB; kjøretid minne er ekstra.
- Bare tekst. Bilder, video, 27B Clef-modellen og andre vektformater støttes ikke.
- Bruk hver instans serievis. Standardgrensen er 4096 kodede polletter, konfigurerbar til 16384; overdimensjonelle forespørsler mislykkes i stedet for stille å trunkere tilstanden.
- Sannsynlighetene er ikke kalibrerte garantier. Hold kommandoutførelse og bekreftelse separat fra modellscoring.
- Publisert hostet latency er ikke en måling av denne lokale Swift implementering.
Lokal validering
Oktober 3 oppdatering: To friske løp på tjue varme gjentalser hver gjennomsnittlig ca 276 ms for samme 303-token, trefeltsforespørsel (observert område 274-284 ms), ekskludert modelllast. De tidligere 291 ms kjøres nedenfor ga separate RSS- og fysisk fotavtrykksmålinger. Dette er én gjentatt tekstforespørsling; talegjenkjenning, taleutgang og visuell inferens ble ikke målt.
På en M5 Pro med 48 GB-unit minne, tjue varmede løp av én 303-token, trefeltsforespørsel i gjennomsnitt 0.291 sekunder (median) 0.290; rekkevidde 0.280–0.299), unntatt modelllast. Native GPU operasjoner og 512-token biter redusert den opprinnelige 0.921 Det andre betyr om 68%, med uendret vekt og utvalgte svar. Peak prosess RSS var 5.11 GiB; topp macOS Minnefotavtrykk var 6.81 GiB. RSS alene fanger ikke all enhetsminnebruk. Lengre innganger kan trenge mer minne. En senere korrekthet kjører målt 462–897 ms mens andre programmer var aktive, så 291 ms gjennomsnitt er ikke en fast latens garanti. Dette er utviklingsmålinger på én gjentatt forespørsel, ikke en bred kvalitet benchmark. Alle 303 referanse token IDs match, og den maksimale sannsynlighetsforskjellen fra Python referansen handler om 0.00266.