Maskinoversettelse · Engelsk original
Qwen3.5 Chat (på enhet LLM)
Qwen3.5-0.8B er en hybrid DeltaNet (lineær oppmerksomhet) + GatedAttention-modell med 24 lag (18 DeltaNet + 6 GatedAttention), kvantisert til INT4 for MLX (Metal GPU) og INT8 for CoreML (Neural Engine. Runs on Mac via MLX eller på iPhone og Mac via CoreML med streaming token generasjon. Designet for stemmerørledninger der en on-device LLM gir -brain - mellom ASR og TTS.
Qwen3.5 Chat integreres med SpeechCore VoicePipeline som LLM komponent i ASR → LLM → TTS kjeder. hybrid DeltaNet-arkitekturen gir effektiv lineær oppmerksomhet for lange sammenhenger.
Rask start
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 er en hybridmodell med 24 lag: 18 DeltaNet-lag (lineær oppmerksomhet med ported delta-regelrepetisjon og RMSNormGated) og 6 GatedAttentment lag (standard dot-produkt merksomhet). MLX backend kjører inferens på Metal GPU med sikkerhetsvekter. CoreML bakstykket bruker en dobbelmodel-arkitektur (prefill + dekode) optimalisert for Neural Engine. Begge støtter KV-cache med hurtig caching og konfigurerbar prøvetaking (temperatur, topp-k, topp-p, repetisjonsstraff).
Modell I/O
| Retning | Navn | Form | Beskrivelse |
|---|---|---|---|
| Inngang | input_ids | [1, KB_len] | Token ID-er (Int32) |
| Inngang | attention_mask | [1, KB_len] | Oppmerksomhetsmaske (Int32) |
| Inngang | kv_cache | per lag | Tilstand for nøkkelverdi-buffer |
| Utgang | logits | [1, 1, 151936] | Neste-token loggits (Float16) |
| Utgang | kv_cache_out | per lag | Oppdatert KV- cache |
Modell Varianter
| Variant | Kvantisering | Størrelse | Beregn | HuggingFace |
|---|---|---|---|---|
| Qwen3.5-0.8B Chat | INT4 | 418 MB | Metal GPU (MLX) | aufklarer/Qwen3.5-0.8B-Chat-MLX |
| Qwen3.5-0.8B Chat | INT8 | 981 MB | Neural Engine (CoreML) | aufklarer/Qwen3.5-0.8B-Chat-CoreML |
Samplingskonfigurasjon
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
)
| Parameter | Standard | Beskrivelse |
|---|---|---|
temperature | 0.6 | Randomness (0 = grådig, 1 = kreativ) |
topK | 50 | Hold topp K-kandidater |
topP | 0.95 | Nukleus prøvetakingsterskel |
maxTokens | 512 | Maks respons tokens |
repetitionPenalty | 1.1 | Straffe gjentatte polletter |
disableThinking | falsk | Hopp over tenkningsmodus |
maxThinkingTokens | 100 | Cap tenkning polletter |
Flervendingssamtale
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
Minneledelse
// 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()
På iPhone, lossing av LLM før TTS inferens frigjør ~418 MB (INT4 MLX) eller ~981 MB ( INT8 CoreML), hindre jetsam oppsigelse når kjører full ASR → LLM → TTS pipelines.
Ytelse
| Enhet | Prefill | Decode | Tokens/sek |
|---|---|---|---|
| M2 Maks | ~ 50ms | ~65ms/tok | ~15 tok/s |
| iPhone 16 Pro | ~1.5s | ~450ms/tok | ~2.2 tok/s |
Konvertering
MLX vekter konverteres fra den opprinnelige Qwen3.5-0.8B kontrollpunkt ved hjelp av MLX konverteringsskript. CoreML modeller bruker et separat konverteringsskript for Neural Engine distribusjon. Forkonverterte vekter er tilgjengelige på HuggingFace hos aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) og aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).