Terjemahan mesin · Versi asli bahasa Inggris
Qwen3.5 Chat (On- Device LLM)
Qwen3.5-0.8B adalah hibrida DeltaNet (perhatian linear) + GatedAttention model dengan 24 lapis (18 DeltaNet + 6 GatedAttention), quantized to INT4 untuk MLX (Metal GPU) dan INT8 untuk CoreML (Neural Engine). Mac via MLX atau pada iPhone dan Mac via CoreML dengan menghasilkan streaming token. Dirancang untuk pipa suara dimana perangkat on- LLM menyediakan "otak" antara ASR dan TTS.
Qwen3.5 Menggabungkan percakapan dengan SpeechCore VoicePipeline sebagai LLM komponen dalam ASR → LLM → TTS hibrida arsitektur DeltaNet menyediakan pengetahuan yang efisien perhatian waktu untuk konteks panjang.
Cepat Mulai
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: "")
}
Arsitektur
Qwen3.5-0.8B adalah model hybrid dengan 24 lapis: 18 Lapisan DeltaNet (perhatian linear dengan aturan delta gated rekursi dan RMSNormGated) dan 6 Bidang GatedAttention (standard scaled dot- product attention). MLX backend berjalan inferensi pada Metal GPU dengan bobot safetensor. CoreML backend menggunakan sebuah arsitektur dual- model (prefill + decode) dioptimalkan untuk Neural Engine. Keduanya mendukung kV cache dengan cepat caching dan dapat diatur sampling (suhu, top-k, top-p, pengulangan penalti).
Model I / O
| Arah | Nama | Bentuk | Deskripsi |
|---|---|---|---|
| Masukan | input_ids | [1, seq _ len] | ID Token (Int32) |
| Masukan | attention_mask | [1, seq _ len] | Perhatian mask (Int32) |
| Masukan | kv_cache | lapis per- | Keadaan cache nilai-kunci |
| Keluaran | logits | [1, 1, 151936] | Next- token logits (Float16) |
| Keluaran | kv_cache_out | lapis per- | Singgahan KV terupdate |
Variants Model
| Varian | Kuantisasi | Ukuran | Komputer | 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 |
Konfigurasi Sampling
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 | Baku | Deskripsi |
|---|---|---|
temperature | 0.6 | Acak (0 = serakah, 1 = kreatif) |
topK | 50 | Pertahankan kandidat atas K |
topP | 0.95 | Ambang sampling Nucleus |
maxTokens | 512 | Token respon Max |
repetitionPenalty | 1.1 | Menghukum token berulang |
disableThinking | salah | Mode berpikir lewati |
maxThinkingTokens | 100 | Token pikiran cap |
Multi- turn Percakapan
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
Manajemen Memori
// 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()
Pada iPhone, bongkar LLM sebelum TTS incerensi membebaskan ~418 MB (INT4 MLX) atau ~981 MB (INT8 CoreML), mencegah penghentian jetsam ketika berjalan penuh ASR → LLM → TTS Jalur pipa.
Penampilan
| Perangkat | Prefill | Decode | Tokens / sec |
|---|---|---|---|
| M2 Max | ~ 50ms | ~ 65ms / tok | ~ 15 tok / s |
| iPhone 16 Pro | ~ 1.5s | ~ 450ms / tok | ~ 2.2 tok / s |
Konversi
Bobot MLX diubah dari pos pemeriksaan asli Qwen3.5-0.8B menggunakan skrip konversi MLX. Model CoreML memakai sebuah konversi terpisah untuk penyebaran Neural Engine terlebih dahulu tersedia pada HuggingFace di aufklarer / Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) dan aufklarer / Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).