Automatische vertaling · Engels origineel

Qwen3.5 Chat (op apparaat LLM)

Qwen3.5-0.8B is een hybride DeltaNet (lineaire aandacht) + GatedAttention model met 24 lagen (18 DeltaNet + 6 GatedAttention), gequantiseerd tot INT4 voor MLX (Metal GPU) en INT8 voor CoreML (Neural Engine). Mac via MLX of op iPhone en Mac via CoreML met streaming token generatie. Ontworpen voor spraakleidingen waar een op-apparaat LLM levert de "hersenen" tussen ASR en TTS.

Spraakpijpleiding gereed

Qwen3.5 Chat integreert met de SpeechCore VoicePipeline als LLM component in ASR → LLM →TTS ketens. De hybride DeltaNet architectuur zorgt voor efficiënte lineaire aandacht voor lange contexten.

Snel starten

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

Architectuur

Qwen3.5-0.8B is een hybride model met 24 lagen: 18 DeltaNet-lagen (lineaire aandacht met gated delta regel herhaling en RMSNormGated) en 6 GatedAttention lagen (standaard geschaalde punt-product aandacht). De MLX backend loopt gevolg op de Metal GPU met safetensors gewichten. De CoreML backend gebruikt een dual-model architectuur (prefill + decode) geoptimaliseerd voor de Neural Engine. Beide ondersteunen KV cache met snelle cache en configureerbare sampling (temperatuur, top-k, top-p, herhalingsstraf).

Model I/O

Richting Naam Vorm Omschrijving
Invoerinput_ids[1, se_len]Token ID's (Int32)
Invoerattention_mask[1, se_len]Attentiemasker (Int32)
Invoerkv_cacheper laagStatus sleutelwaarde-cache
Uitvoerlogits[1, 1, 151936]Logits van volgende tonen (Float16)
Uitvoerkv_cache_outper laag Bijgewerkte KV-cache

Model Varianten

VariantKwantisering GrootteBerekenenHuggingFace
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

Steekproefconfiguratie

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 Standaard Omschrijving
temperature0.6Willekeurigheid (0 = hebzuchtig, 1 = creatief)
topK50Top K-kandidaten behouden
topP0.95 Drempelwaarde voor nucleusbemonstering
maxTokens512 Maximale respons tokens
repetitionPenalty1.1 Herhaalde tokens straffen
disableThinkingonwaar Denkmodus overslaan
maxThinkingTokens100Cap-denktekens

Multi-turn gesprek

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

Geheugenbeheer

// 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 Geheugentop

Op iPhone, het lossen van de LLM voor TTS gevolggeving vrij ~418 MB (INT4 MLX) of981 MB (INT8 CoreML), het voorkomen van jetsam beëindiging bij vollopen ASR → LLM → TTS pijpleidingen.

Prestaties

Apparaat VoorvullingDecoderenTokens/sec
M2 Max~50ms~65ms/tok~15 tok/s
iPhone 16 Pro~1.5s~450ms/tok~2,2 ton/s

Omrekening

MLX gewichten worden omgezet van het originele Qwen3.5-0.8B controlepunt met behulp van het MLX conversie script. CoreML modellen gebruiken een aparte conversie script voor Neural Engine implementatie. Voorgeconverteerde gewichten zijn beschikbaar op HuggingFace op aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) en aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).