Konekäännös · Englanninkielinen alkuperäinen
Qwen3.5 Keskustelu (On-Device LLM)
Qwen3.5-0.8B on hybridi DeltaNet (lineaarinen huomio) + GatedA Huomio malli, 24 kerrokset (18 DeltaNet + 6 AsteittainenKoheesio), kvantitoitu INT4 B. MLX (Metal GPU) ja INT8 B. CoreML (Neural Engine- Se on käynnissä. Mac via MLX tai iPhonella ja Mac via CoreML streaming token sukupolven. Suunniteltu ääniputkistoihin, joissa on-laite LLM tarjoaa "aivot" välillä ASR sekä TTS.
Qwen3.5 Chat integroituu PuheCore VoicePipeline -ketjuun LLM -komponenttina ASR → LLM →TTS -ketjuissa. hybridi DeltaNet-arkkitehtuuri tarjoaa tehokasta lineaarista huomiota pitkissä yhteyksissä.
Pikakäynnistys
import Qwen3Chat
let chat = try await Qwen35MLXChat.fromPretrained()
// Single response
let response = try chat.generate(messages: [
ChatMessage(role: .system, content: "Answer briefly."),
ChatMessage(role: .user, content: "What is Swift?")
])
print(response)
// Streaming tokens
let stream = chat.generateStream(messages: [
ChatMessage(role: .system, content: "Be funny."),
ChatMessage(role: .user, content: "Tell me a joke")
])
for try await token in stream {
print(token, terminator: "")
}
Arkkitehtuuri
Qwen3.5-0.8B on hybridimalli, 24 kerrokset: 18 DeltaNet-kerrokset (lineaarinen huomio aidattu delta-säännön uusiutumisen ja RMSNormiGated) ja 6 AsteittainenAttention kerrokset (vakioasteikolla kiinnitetty piste-tuote huomio). MLX backend kulkee johtopäätöstä Metal GPU turvalaitteiden painot. CoreML backend käyttää kaksoismallin arkkitehtuuria (prefill + decode) optimoitu Neural Engine. Molemmat tukevat KV välimuistia nopealla välimuistilla ja määritettävissä olevalla näytteenotolla (lämpötila, huippu-k, huippu-p, toistorangaistus).
Malli I/O
| Suunta | Nimi | Muoto | Tavaran kuvaus |
|---|---|---|---|
| Syöte | input_ids | [1, sitä seuraavat_len] | Token IDs (Int32) |
| Syöte | attention_mask | [1, sitä seuraavat_len] | Huomiomaski (Int32) |
| Syöte | kv_cache | kerrosta kohti | Avainarvon välimuistitila |
| Tuotos | logits | [1, 1, 151936] | Seuraavan tiedon kirjaukset (Float16) |
| Tuotos | kv_cache_out | kerrosta kohti | Päivitetty KV välimuisti |
Mallivaihtoehdot
| Variantti | Määrä | Koko | Laske | HuggingFace |
|---|---|---|---|---|
| Qwen3.5-0.8B Chat | INT4 | 418 Mt | Metal GPU (MLX) | aufklarer/Qwen3.5-0.8B-Chat-MLX |
| Qwen3.5-0.8B Chat | INT8 | 981 Mt | Neural Engine (CoreML) | aufklarer/Qwen3.5-0.8B-Chat-CoreML |
Näytteenottoasetukset
let config = ChatSamplingConfig(
temperature: 0.7,
topK: 40,
topP: 0.9,
maxTokens: 128,
repetitionPenalty: 1.1
)
let response = try chat.generate(
messages: [ChatMessage(role: .user, content: "Explain gravity")],
sampling: config
)
| Parametri | Oletus | Tavaran kuvaus |
|---|---|---|
temperature | 0.6 | Satunnainen (0 = ahne, 1 = luova) |
topK | 50 | Pitäkää kärki-K-ehdokkaat |
topP | 0.95 | Nukleus-näytteenoton kynnysarvo |
maxTokens | 512 | Max vastaus kuponkia |
repetitionPenalty | 1.1 | Rangaista toistuvia rahakkeita |
disableThinking | väärä | Ohita ajattelutila |
maxThinkingTokens | 100 | Cap-ajattelurahat |
Monikäännöksen keskustelu
let chat = try await Qwen35MLXChat.fromPretrained()
let history = [
ChatMessage(role: .system, content: "Remember the user's name."),
ChatMessage(role: .user, content: "My name is Alex"),
ChatMessage(role: .assistant, content: "Nice to meet you, Alex!"),
ChatMessage(role: .user, content: "What's my name?")
]
let response = try chat.generate(messages: history)
print(response) // "Your name is Alex!"
chat.resetState() // Clear inference state for a new conversation
Muistinhallinta
// Check memory state
print(chat.isLoaded) // true
print(chat.memoryFootprint) // 438304768 (~418 MB)
// Free memory under pressure
chat.unload()
print(chat.isLoaded) // false
// Reload when needed
let chat = try await Qwen35MLXChat.fromPretrained()
On iPhone, purkaa LLM ennen TTS Päätelmä418 MB (INT4 MLX) tai981 MB (INT8 CoreML), estää jetsamin lopetus käynnissä täysi ASR → LLM → TTS putkistot.
Tulos
| Laite | Esitäyttö | Dekoodaa | Takit |
|---|---|---|---|
| M2 Suurin | ~50m | ~65m/tok | ~15 tonnia/s |
| iPhone 16 Pro | ~1,5s | ~450m/t | ~2,2 tonnia/s |
Muuntaminen
MLX painot muunnetaan alkuperäisestä Qwen3.5-0.8B- tarkistuspisteestä käyttäen MLX -muunnosskriptiä. CoreML:n malleissa käytetään erillistä konversioskriptia Neural Engine käyttöönotolle. Esimuunnettuja painoja on saatavilla HuggingFace at aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) ja aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).