Qwen3.5 Chat (cihaz üzeri LLM)

Qwen3.5-0.8B; 24 katmandan oluşan (18 DeltaNet + 6 GatedAttention) hibrit bir DeltaNet (doğrusal attention) + GatedAttention modelidir. MLX için INT4'e (Metal GPU) ve CoreML için INT8'e (Neural Engine) niceleştirilmiştir. Mac üzerinde MLX ile veya iPhone ile Mac üzerinde CoreML ile çalışır; tokenleri streaming olarak üretir. ASR ile TTS arasında "beyin" görevini gören cihaz üzeri bir LLM için ses pipeline'larına uygun şekilde tasarlanmıştır.

Ses pipeline'ına hazır

Qwen3.5 Chat; ASR → LLM → TTS zincirlerinde LLM bileşeni olarak SpeechCore VoicePipeline ile entegre olur. Hibrit DeltaNet mimarisi, uzun bağlamlar için verimli doğrusal zamanlı attention sağlar.

Hızlı başlangıç

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

Mimari

Qwen3.5-0.8B, 24 katmanlı bir hibrit modeldir: 18 DeltaNet katmanı (gated delta rule yinelemesi ve RMSNormGated ile doğrusal attention) ve 6 GatedAttention katmanı (standart scaled dot-product attention). MLX backend'i, safetensors ağırlıklarıyla Metal GPU üzerinde çıkarım yürütür. CoreML backend'i ise Neural Engine için optimize edilmiş çift modelli mimari (prefill + decode) kullanır. Her ikisi de prompt caching ile KV cache ve yapılandırılabilir sampling (temperature, top-k, top-p, repetition penalty) destekler.

Model giriş/çıkış

YönAdŞekilAçıklama
Girişinput_ids[1, seq_len]Token kimlikleri (Int32)
Girişattention_mask[1, seq_len]Attention maskesi (Int32)
Girişkv_cachekatman başınaKey-value cache durumu
Çıkışlogits[1, 1, 151936]Sonraki token logits (Float16)
Çıkışkv_cache_outkatman başınaGüncellenmiş KV cache

Model varyantları

VaryantNiceleştirmeBoyutİşlemHuggingFace
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 yapılandırması

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
)
ParametreVarsayılanAçıklama
temperature0.6Rastgelelik (0 = greedy, 1 = yaratıcı)
topK50İlk K adayı tut
topP0.95Nucleus sampling eşiği
maxTokens512Yanıt için maksimum token sayısı
repetitionPenalty1.1Tekrarlanan tokenleri cezalandır
disableThinkingfalseDüşünme modunu atla
maxThinkingTokens100Düşünme tokenlerini sınırla

Çok turlu konuşma

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

Bellek yönetimi

// 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 bellek ipucu

iPhone'da TTS çıkarımından önce LLM'i boşaltmak, ~418 MB (INT4 MLX) ya da ~981 MB (INT8 CoreML) bellek serbest bırakır; bu sayede tam ASR → LLM → TTS pipeline'larını çalıştırırken jetsam'in işlemi sonlandırması önlenir.

Performans

CihazPrefillDecodeToken/saniye
M2 Max~50ms~65ms/tok~15 tok/s
iPhone 16 Pro~1.5s~450ms/tok~2.2 tok/s

Dönüştürme

MLX ağırlıkları, MLX dönüştürme betiği kullanılarak orijinal Qwen3.5-0.8B checkpoint'inden dönüştürülür. CoreML modelleri Neural Engine üzerinde dağıtım için ayrı bir dönüştürme betiği kullanır. Önceden dönüştürülmüş ağırlıklar HuggingFace'te aufklarer/Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) ve aufklarer/Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB) adreslerinde mevcuttur.