Maskinöversättning · Engelskt original

Qwen3.5 Chatt (On-Device LLM)

Qwen3.5-0.8B är en hybrid DeltaNet (linjär uppmärksamhet) + GatedAttention modell med 24 lager (så)18 DeltaNet + 6 GatedAttention), kvantiserad till INT4 för MLX (Metal GPU) och INT8 för CoreML (Neural Engine) Körs på Mac via via MLX eller på iPhone och Mac via via CoreML med streaming token generation. Designad för röstledningar där en on-device LLM ger "hjärnan" mellan ASR och TTS.

Röst Pipeline redo

Qwen3.5 Chat integreras med SpeechCore VoicePipeline som LLM-komponenten i ASR LLM → TTS kedjor. Hybrid DeltaNet-arkitekturen ger effektiv linjärtidsuppmätning för långa sammanhang.

Snabbstart

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: "")
}

Arkitektur

Qwen3.5-0.8B är en hybridmodell med 24 Lager: 18 DeltaNet lager (linjär uppmärksamhet med gated delta regel återkommande och RMSNormGated) och 6 GatedAttention skikt (standardskalad dot-produkt uppmärksamhet). MLX backend kör inferens på Metal GPU med säkrare vikter. CoreML backend använder en dual-modell arkitektur (prefill + decode) optimerad för Neural EngineBåda stöder KV cache med snabb cachning och konfigurerbar provtagning (temperatur, top-k, top-p, repetition straff).

Modell I/O

RiktningNamnnamnShapeBeskrivning
Inputinput_ids[1, seq_len]Token IDs (Int32)
Inputattention_mask[1, seq_len]Uppmärksamhetsmask (Int32)
Inputkv_cacheper-layerKey-value Cache State
Outputlogits[1, 1, 151936]Next-token logits (Float16)
Outputkv_cache_outper-layerUppdaterad KV-cache

Modellvarianter

VariantKvantiseringStorlekBeräkningHuggingFace
Qwen3.5-0.8B ChatINT4418 MBMetal GPU (MLX)aufklarer/Qwen3.5-0.8B-Chat-MLX
Qwen3.5-0.8B ChatINT8981 MBNeural Engine (CoreML)aufklarer/Qwen3.5-0.8B-Chat-CoreML

Sampling Configuration

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
)
ParameterStandardBeskrivning
temperature0.6Slumpmässighet (0 = girighet, 1 = kreativ)
topK50Håll topp K kandidater
topP0.95Nucleus provtagning tröskelvärde
maxTokens512Max svar tokens
repetitionPenalty1.1Penalize upprepade tokens
disableThinkingfalska lögnerSkip Think Mode
maxThinkingTokens100Cap Think Tokens

Multi-turn Conversation

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

Memory Management

// 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()
iOS Minne Tips

På iPhone, lossning av LLM innan före TTS Inference Frees418 MB (MB)INT4 MLXeller ~981 MB (MB)INT8 CoreML), förhindra jetsam uppsägning när du kör full ASR → LLM → TTS pipelines.

Prestanda

EnhetPrefillDecodeTokens/Sec
M2 Max~50ms~65ms/tok~15 tok/s
iPhone 16 Pro~1.5S~450ms/tok~2.2 tok/s

Konvertering

MLX vikter omvandlas från den ursprungliga Qwen3.5-0.8B checkpoint med MLX konverteringsskript. CoreML modeller använder en separat omvandling skript för Neural Engine utplacering. Förkonverterade vikter finns på HuggingFace vid ZXQXZ på aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) och aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).