Auto Upload Agent commited on
Commit
a035243
·
1 Parent(s): f279c31

v11: 方向修正(hot expert 實體放 RAM,非 page 轉換)+ b9acf138 vanilla 基線 82.1 tok/s / peak RSS 2.674 GiB

Browse files
Files changed (2) hide show
  1. STATUS.md +46 -1
  2. validate/baseline-vanilla.json +17 -0
STATUS.md CHANGED
@@ -191,4 +191,49 @@ ST_RAM_BUDGET_MB=512 ./llama_server.sh
191
  | `tools/io_probe.py` | 實測本機 SSD 讀取能力(**換機器必跑**) |
192
  | `tools/drop_model_cache.py` | 量測前丟掉模型檔的 page cache |
193
  | `validate/` | 驗證證據 |
194
- | `sync.sh` | 推回 HF(崩潰後的唯一保險) |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  | `tools/io_probe.py` | 實測本機 SSD 讀取能力(**換機器必跑**) |
192
  | `tools/drop_model_cache.py` | 量測前丟掉模型檔的 page cache |
193
  | `validate/` | 驗證證據 |
194
+ | `sync.sh` | 推回 HF(崩潰後的唯一保險) |
195
+ ---
196
+
197
+ ## 2026-10-07 重開:方向修正(使用者明確要求)
198
+
199
+ **使用者指示:**「我要的是 **hot expert 放記憶體**,**不是 page 轉換**」。
200
+
201
+ 因此 `patches/0001-st-expert-pager.patch`(v1–v10 的做法)**方向被否決**:
202
+ 它讓權重留在 llama.cpp 自己的 file-backed mmap,用
203
+ `madvise(MADV_DONTNEED)` + `posix_fadvise(DONTNEED)` 把冷 expert **逐出 page cache**。
204
+ 那確實是「page 轉換」:hot expert 只是恰好還在 page cache 裡,不是被程式**放進 RAM**。
205
+
206
+ ### 修正後的設計(本次目標)
207
+
208
+ | 參數 | 住哪 |
209
+ | --- | --- |
210
+ | **啟動參數**(attn / norm / router / token_embd / output,410.19 MiB) | **匿名 RAM**(`use_mmap=false` 走 pread→匿名緩衝區,不依賴 page cache) |
211
+ | **hot experts** | **RAM arena**(程式自己配置、`pread` 進來的**實體 RAM**) |
212
+ | **cold experts** | **SSD**(留在 GGUF 檔案裡,只在需要時 `pread` 進 arena 槽位) |
213
+
214
+ 即:RAM arena + 槽位淘汰 + 自訂 MoE op(執行期才知道哪些 expert 被選到,
215
+ 所以算權重時必須由 pager 提供 arena 裡的 bytes)。
216
+ **這是 `HelloSun/sddqwen35a3b_v01` 的做法,也是本專案現在要採用的做法。**
217
+
218
+ ### 為什麼不能沿用參考專案的 commit
219
+
220
+ 參考專案 `sddqwen35a3b_v01` 的 base commit 是 `836d57176dc699a726c55418e4f96b8ca628e1bf`。
221
+ 實測在該 commit 上 **原生路徑(`SDQ_PAGER=0`)對 smallthinker 就已經是亂碼**
222
+ (輸出 `and and the and all achieving and`),pager 路徑同樣是亂碼。
223
+ → 該 commit 的 smallthinker 支援有問題,**不能**用它當 base。
224
+
225
+ **本專案 base commit 改用 `b9acf138a1e28ce1fc23b5a4fc4b12444b50f7ea`**(v1–v10 用過、
226
+ 輸出正確的那個)。
227
+
228
+ ### v11 基線(vanilla,尚未套 arena patch)
229
+
230
+ `validate/baseline-vanilla.json`
231
+
232
+ | 項目 | 值 |
233
+ | --- | --- |
234
+ | 輸出 | `Hello! I'm DeepSeek-R1, your friendly AI assistant. 😊 ...` ✅ |
235
+ | decode | **82.1 tok/s**(16 threads,權重全在 page cache) |
236
+ | peak 總 RSS | **2.674 GiB**(= 整份 2.45 GiB 權重都在 RAM 裡) |
237
+ | swap | 0 |
238
+
239
+ 這是 arena 版本的**正確性基準**:同一 prompt / temp 0 / seed,輸出必須逐字相同。
validate/baseline-vanilla.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "variant": "vanilla-upstream",
3
+ "llama_commit": "b9acf138a1e28ce1fc23b5a4fc4b12444b50f7ea",
4
+ "patched": false,
5
+ "ctx": 1024,
6
+ "n_predict": 24,
7
+ "threads": 16,
8
+ "temp": 0,
9
+ "seed": 42,
10
+ "peak_rss_bytes": 2870984704,
11
+ "peak_rss_gib": 2.674,
12
+ "duration_s": 1.41,
13
+ "gen_tok_s": 82.1,
14
+ "output_tail": [
15
+ "Hello! I'm DeepSeek-R1, your friendly AI assistant. 😊 I'm here to help with anything you"
16
+ ]
17
+ }