Maskinoversættelse · Engelsk original
Clef- flash: lokale beslutninger i Swift
Forhåndsvisning om udvikling. Lokal tekststøtte er under udvikling og er ikke blevet udgivet i speech-swift.
Clef- flash læser en tilstand og et sæt spørgsmål, og scorer derefter de tilladte svar sammen. Swift modulet kører 9B modellen lokalt på Apple Silicon med MLX og 4- bit vægte. Ingen Python proces eller hostet API bruges under inferens.
Anvendelse 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)
Valg spørgsmål returnerer sandsynligheder for hver mulighed. noul spørgsmål returnerer sandsynligheden for sand. Et score spørgsmål tager en bestilt liste såsom .score(["normal", "urgent"]) og returnerer det forventede zero-baserede indeks. Modulet udfø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 kommando downloader det hvis det er nødvendigt. Brug en lokal mappe eller offline flag for at undgå en download.
Standalone 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"}}
]}
Outputtet inkluderer sandsynligheder, indtastningstast og beslutningstid ekskl. modelbelastning. Kommandoen accepterer et ordnet spørgsmålarray; det er ikke et SystemOne HTTP endpoint.
Sådan virker det
En Qwen3.5 rygrad læser teksten og skemaet. Den fælles beslutning leder deltager i denne sammenhæng, lader spørgsmål interagere, og kombinerer kontekstuelle scorer med en forudgående fra modellens output indlejringer. Det scorer mulighederne direkte i stedet for at generere en JSON svar token for token.
Krav og begrænsninger
- Apple Silicon, macOS 15+ og MLX. Den understøttede affine 4- bit eksport er cirka 5.3 GB; runtime hukommelse er yderligere.
- Kun tekst. Billeder, video, 27B Clef model, og andre vægtformater er ikke understøttet.
- Brug hver instans serielt. Standardgrænsen er 4096 kodede tokens, konfigurerbar til 16384; overdimensionerede anmodninger mislykkes snarere end lydløst trunkle staten.
- Probabiliteter er ikke kalibreret garantier. Hold kommando udførelse og bekræftelse adskilt fra model scoring.
- Udgivet hosted latency er ikke en måling af denne lokale Swift implementering.
Lokal validering
Oktober 3 opdatering: To friske runs af 20 varme gentagelser hver gennemsnit omkring 276 ms for den samme 303- token, tre-feltforespørgsel (observeret område 274-284 ms), bortset fra modelbelastning. De tidligere 291 MS kører nedenfor leverede de separate RSS og fysisk-fodaftryk målinger. Dette er en gentagen tekstanmodning; talegenkendelse, taleoutput og visuel inferens blev ikke målt.
På en M5 Pro med 48 GB samlet hukommelse, tyve varmede løb af en 303-token, tre-felt anmodning gennemsnit 0.291 sekunder (median 0.290; interval 0.280–0.299), ekskl. modelbelastning. GPU operationer og 512-token stykker reduceret den oprindelige 0.921- anden middelværdi ved ca. 68%, med uændrede vægte og udvalgte svar. Peak proces RSS var 5.11 GiB; peak macOS hukommelse fodaftryk var 6.81 GiB. RSS alene fanger ikke alle unified- memory brug. Længere indgange kan have brug for mere hukommelse. En senere korrekthed køre målt 462–897 m mens andre applikationer var aktive, så den 291 ms middel er ikke en fast latency garanti. Disse er udviklingsmålinger på én gang anmodning, ikke en bred kvalitet benchmark. Alle 303 referencemønster for id 'er matcher, og den maksimale sandsynlighedsforskel fra Python reference handler om 0.00266.