Text Generation
llama-cpp-python
GGUF
llama.cpp
Mixture of Experts
ssd-offload
smallthinker
expert-paging
low-ram
Instructions to use HelloSun/SmallThinker4b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use HelloSun/SmallThinker4b with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="HelloSun/SmallThinker4b", filename="{{GGUF_FILE}}", )output = llm( "Once upon a time,", max_tokens=512, echo=True ) print(output)
- Notebooks
- Google Colab
- Kaggle
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- STATUS.md +46 -1
- 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 |
+
}
|