Tłumaczenie automatyczne · Oryginał angielski

Qwen3.5 Chat (On- Device LLM)

Qwen3.5-0.8B jest hybrydowym modelu DeltaNet (liniowa uwaga) + GathedUwaga z 24 warstwy (18 DeltaNet + 6 Uwaga), oznaczona ilościowo INT4 zamiast MLX (Metal GPU) oraz INT8 zamiast CoreML (Neural Engine). Biega Mac przez MLX lub na iPhone i Mac przez CoreML z generacją tokena strumieniowego. Przeznaczony do gazociągów głosowych, w których urządzenie pokładowe LLM zapewnia "mózg" pomiędzy ASR oraz TTS.

Gotowe pipeline głosowe

Qwen3.5 Chat integruje się z VoicePipeline SpeechCore jako komponentem LLM w ASR → LLM ® łańcuchy TTS. Hybrydowa architektura DeltaNet zapewnia efektywną liniową uwagę dla długich kontekstów.

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

Architektura

Qwen3.5-0.8B jest modelem hybrydowym z 24 warstwy: 18 Warstwy DeltaNet (uwaga liniowa z powtarzaniem się zasady delta i RMSNormGated) oraz 6 Warstwy GathedWatch (standardowy skalowany dot-produkt uwagi). MLX backend uruchamia wniosek na Metal GPU z ciężarem sejfów. CoreML backend wykorzystuje architekturę dual- model (prefill + decode) zoptymalizowany dla Neural Engine. Obie obsługują pamięci podręcznej KV z szybkim buforowaniem i konfigurowalnym pobieraniem próbek (temperatura, top- k, top-p, kara powtarzania).

Wzór I / O

KierunekNazwaKształtOpis
Wejścieinput_ids[1, seq _ len]Token ID (Int32)
Wejścieattention_mask[1, seq _ len]Maska uwagi (Int32)
Wejściekv_cachewarstwa permanentnaStan pamięci podręcznej o wartości klawiszowej
Wyjścielogits[1, 1, 151936]Logity next- token (Float16)
Wyjściekv_cache_outwarstwa permanentnaAktualizacja pamięci podręcznej KV

Warianty modelu

WariantIlościowanieRozmiarObliczHuggingFace
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

Konfiguracja pobierania próbek

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
)
ParametrDomyślneOpis
temperature0.6Przypadkowość (0 = chciwość, 1 = kreatywność)
topK50Zachowaj najlepszych kandydatów K
topP0.95Próg pobierania próbek Nucleus
maxTokens512Dekeny odpowiedzi maks. a.
repetitionPenalty1.1Kara powtarzanych żetonów
disableThinkingfalsePomiń tryb myślenia
maxThinkingTokens100Trzonek myślący żetony

Rozmowa wielokierunkowa

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

Zarządzanie pamięcią

// 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()
Wskazówka pamięci iOS

Na iPhone, rozładunku LLM przed TTS Zaproszenie jest wolne ~418 MB (INT4 MLX) lub ~981 MB (INT8 CoreML), zapobiegając zakańczaniu jetsam podczas pełnego biegu ASR → LLM → TTS rurociągi.

Wydajność

UrządzeniePrefillDekodowanieTokeny / sek
M2 Max~ 50 ms~ 65ms / tok- 15 toków.
iPhone 16 Pro~ 1,5 s~ 450ms / tok- 2,2 tok / s

Konwersja

Wagi MLX są konwertowane z oryginalnego punktu kontrolnego Qwen3.5-0.8B przy użyciu skryptu konwersji MLX. Modele CoreML używają oddzielnego skryptu konwersji dla wdrożenia Neural Engine, które są dostępne na HuggingFace aufklarer / Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) oraz aufklarer / Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB).