Qwen3.5-4B:SSD Streaming 低記憶體 CPU 推理

本 repo 是推論專案(patch、量測工具與驗證證據),不包含模型權重。模型位於 unsloth/Qwen3.5-4B-GGUF, 使用 Qwen3.5-4B-Q4_K_M.gguf(約 2.553 GiB)。

這是 dense/hybrid 模型的 SSD Streaming + KV SSD Paging 實作,不是 MoE expert paging,也不是 EPQ。權重透過 mmap 與背景 reclaim 留在 SSD,KV cache 可使用檔案 mmap;RAM 只保留運算所需資料。

核心實測

測試設定為 1 GiB 總 RAM、swap=0、1024 context:

配置 峰值總 RSS Decode Prefill 結果
權重保留 page cache(建議) 0.384 GiB 2.67 tok/s 7.72 tok/s ✅
權重頁全丟回 SSD 0.226 GiB 0.12 tok/s 0.94 tok/s ✅
權重常駐 RAM、KV SSD 2.77 GiB 2.82 tok/s 6.21 tok/s ❌ 超過 1 GiB

在這台測試機上,權重保留 page cache 仍符合約束,且比全丟 SSD 快約 22 倍。 解除記憶體限制只快約 6%,但 RSS 增加到 7 倍以上。這是單一機器與 workload 的實測,不是跨硬體保證。

模型架構與記憶體

Qwen3.5 是 hybrid 架構:32 層中 8 層為 full attention,其餘 24 層為 linear/SSM。 在 1024 context 時:

資料 位置
Q4_K_M 權重,2.553 GiB SSD mmap
f16 KV,約 32 MiB SSD-backed mmap
SSM state、compute buffer、執行檔 RAM

262144 context 的 KV 即使使用 q4_0 也約 2.25 GiB,超過 1 GiB 部署預算; 目前文件只對 1K context 的驗證結果負責。

使用方法

git clone https://huggingface.co/HelloSun/qwen35-4b-ssd-streaming
cd qwen35-4b-ssd-streaming

# 編譯、下載模型、啟動並驗證 1K context
./installpi.sh

# 只驗證
./installpi.sh --validate-only

# 重新跑 benchmark matrix
./bench.sh

可調整的主要環境變數:MEMORY_LIMIT_GB、LLAMA_THREADS、LLAMA_CONTEXT、 LLAMA_MMAP_RELEASE、LLAMA_KV_SSD。公開模型不需要 HF token;若設置 HF_TOKEN,只應以環境變數傳給下載工具。

Patch 與限制

Patch 功能
0001-ssd-mmap-release.patch 背景釋放 mmap 權重頁
0002-kv-ssd-pager.patch 將 KV cache 放到 SSD 檔案 mmap

llama.cpp 固定 commit 為 0504396140d1c882f5f6ee34466a42db7ae90114。 總 RSS、page cache 與 swap 必須在實際部署主機上量測;單看匿名 RSS 不足以證明合規。

證據

參考

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support