תרגום מכונה · המקור באנגלית
Qwen3.5 Chat (On-Device LLM)
Qwen3.5-0.8B דלתא היברידית (לתשומת לב לינארית) + מודל ל- GatedAttention עם 24 שכבות (18 DeltaNet + 6 תשומת לב, כפיית INT4 עבור MLX (Metal GPU(ו) INT8 עבור CoreML (Neural Engine(ריצה) Mac באמצעות MLX או על iPhone ו Mac באמצעות CoreML עם הדור הזרמת טוקן, מיועד לצינורות קוליות שבו על-יד LLM מספק את "המוח" בין ASR ו TTS.
Qwen3.5 Chat משלב עם VoicePipeline כרכיב LLM ב ASR LLM TTS. ארכיטקטורת דלתא היברידית מספקת תשומת לב לינארית יעילה להקשרים ארוכים.
התחלה מהירה
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: "")
}
ארכיטקטורה
Qwen3.5-0.8B הוא מודל היברידי עם 24 שכבות: 18 דלתאNet שכבות (התשומת לב לינארית עם הישנות חוק שערה ו-RMSNormGated) 6 שכבות של ריצוף (הופנה מהדף Dot-product Attention) MLX הגב רץ בהקצאה על Metal GPU עם משקלים בטוחים יותר CoreML backend משתמשת אדריכלות דוגמנית כפולה (prefill + decode) מותאם עבור Neural Engineשניהם תומכים KV cache עם קליגה מהירה ו- sampling (temperature, העליון-k, העליון-p, עונש החזרה).
מודל I/O
| כיוון | שם השם | צורה | תיאור תיאור |
|---|---|---|---|
| Input | input_ids | [1, Sq_len] | ken IDs (Int32) |
| Input | attention_mask | [1, Sq_len] | מסכת קשב (Int32) |
| Input | kv_cache | per-layer | המונחים: key-value cache |
| Output | logits | [1, 1, 151936] | הבא-token logits (Float16) |
| Output | kv_cache_out | per-layer | CV cache |
מודלים
| משתנה | המונחים | גודל | המונחים | 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 |
בלבול
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 | Default | תיאור תיאור |
|---|---|---|
temperature | 0.6 | אקראיות (0 = חמדן, 1 = יצירתיות) |
topK | 50 | עקבו אחרי Kמועמדים |
topP | 0.95 | Nucleus sampling סף |
maxTokens | 512 | Max Response tokens |
repetitionPenalty | 1.1 | עונשים חוזרים |
disableThinking | שקר כוזב | מצב החשיבה |
maxThinkingTokens | 100 | תגית: Tokens |
שיחות מרובות-turn
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
ניהול זיכרון
// 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()
ב-iPhone, Unloading LLM לפני TTS המונחים:418 MB (MB)INT4 MLX(או)981 MB (MB)INT8 CoreMLלמנוע הפסקת סילון כאשר ריצה מלאה ASR → LLM → TTS צינורות.
ביצועי ביצועים
| התקן | Prefill | Decode | Tokens/sec |
|---|---|---|---|
| M2 Max | 50ms | 65ms/tok | 15 Tok /s |
| אייפון 16 Pro | 1.5 | 450ms/tok | 2.2 tok /s |
המונחים:
MLX משקלים מומרים מהמקור Qwen3.5-0.8B מחסומים באמצעות MLX תסריט המרה CoreML המודלים משתמשים בתסריט ההמרה נפרד Neural Engine פריסה: משקלים מראש זמינים HuggingFace at at Aufklarer / Qwen3.5-0.8B-Chat-MLX (INT4: 418 MB) Aufklarer / Qwen3.5-0.8B-Chat-CoreML (INT8: 981 MB)