Awtomatikong salin · Orihinal sa Ingles
Qwen3.5 Chat (On-Device LLM)
Qwen3.5-0.8B ay isang hybrid DeltaNet (linear attention) + Gated Attension model na may model 24 mga suson (18 DeltaNet + 6 Gated Attension), quadified to INT4 para sa MLX (Metal GPU) at INT8 para sa CoreML (Neural Engine). tumatakbo Mac sa pamamagitan MLX o sa iPhone at Mac sa pamamagitan CoreML may kasamang umaagos na "watawat na salinlahi. " na dinisenyo para sa mga tubo ng boses kung saan isang on-device LLM nagbibigay ng "brain" sa pagitan ng ASR at TTS.
Qwen3.5 Ang Chat Inuugnay sa Tinig ng Pagsasalita Bilang ang Boses LLM bahagi sa ASR → LLM → TTS Mga kadena. Ang hybrid DeltaNet arkitektura ay nagbibigay ng mahusay na linear-time na pansin para sa mahabang mga konteksto.
Mabilis na Pasimula
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: "")
}
Arkitektura
Qwen3.5-0.8B ay isang hybrid model na may 24 mga patong: 18 Ang mga suson ng DeltaNet (linear attention na may gated delta rule region at RMSNormGated) at RM 6 Gated Attension layers (stard scaled dot-product attention). MLX Ang backend ay tumatakbo nang pabaligtad Metal GPU na may ligtas na mga pabigat. CoreML Ang backend ay gumagamit ng isang dual-model na arkitektura (prefill + decode) na ginawang optimisado para sa Neural Engine. Parehong sumusuporta sa KV cache na may agarang caching at configurable na mga halimbawa (temperature, toper-k, toper stap-p, parusang pag-uulit).
Modelo I/O
| Tagubilin | Pangalan | Hugis | Paglalarawan |
|---|---|---|---|
| Ilagay | input_ids | [1, seq_len] | Token IDs (Int32) |
| Ilagay | attention_mask | [1, seq_len] | maskarang pang - pansin (Int32) |
| Ilagay | kv_cache | per-layer | Ang key-halaga cache state |
| Ilabas | logits | [1, 1, 151936] | Susunod-token logits (Float16) |
| Ilabas | kv_cache_out | per-layer | Binagong "KV cache " |
Modelong mga Variante
| Kaurian | Pagiging Kuwalente | Laki | Pag - aaral | 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 |
Nakapangingilabot na Pagsang - ayon
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 | Pagkawasak | Paglalarawan |
|---|---|---|
temperature | 0.6 | Randomness (0 = sakim, 1 = mapanlikha) |
topK | 50 | Panatilihin ang nangungunang mga kandidato sa K |
topP | 0.95 | Pasimula ng mga Nuclearus |
maxTokens | 512 | Max tugon ay nagmememorya |
repetitionPenalty | 1.1 | Isulat ang paulit - ulit na mga paunawa |
disableThinking | bulaan | Paraan ng pag - iisip sa pamamagitan ng Skip |
maxThinkingTokens | 100 | Mga tanda ng pag - iisip ng Cap |
Multi - Pag - uusap ng Pagbabago
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
Pangangasiwa ng Alaala
// 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()
Sa iPhone, i-unload ang LLM bago TTS Ang Di - maipaliwanag na mga Kalayaan ay umaalpas sa Eksperimento418 MB (MBINT4 MLX) o girl981 MB (MBINT8 CoreML), paghadlang sa pag - aalis ng jetsam kapag tumatakbong ganap ASR → LLM → TTS Mga tubo.
Pag - aasikaso
| Kalagan | Patiunang Pagganap | Decode | Mga Token/sec |
|---|---|---|---|
| M2 Max | EX50ms | xi65ms/tok | °15 tok/s |
| IPhone 16 Pro | °1.5 | EX450ms/tok | EX2.2 tok/s |
Pagkumberte
MLX Ang mga pabigat ay ginagawa mula sa orihinal Qwen3.5-0.8B Talaan ng mga Nilalaman MLX Sulat para sa pangungumberte. CoreML gumagamit ang mga modelo ng hiwalay na sulat para sa pangungumberte Neural Engine Paglalagay. May magagamit na pre-converted na mga pabigat sa HuggingFace sa Aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) at Aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).