目前狀態
核心推理
| 領域 | 狀態 | 備註 |
|---|---|---|
| Inspect | 運作中 | 含記憶體估算的 metadata 檢視 |
| Benchmark | 運作中 | Forward-only latency/throughput |
| 生成 | 運作中 | cached decode 為預設路徑 |
| Prefix caching | 運作中 | C++ 與 Python 公開 API |
| INT3 GEMM | 運作中 | 8 級,3 bits/weight。10 值/32-bit 字。轉換器 --bits 3。 |
| LoRA 放大效應 | 運作中(demo) | Loop block 的 rank-r LoRA 參數效率為 L 倍。 |
| JSON-RPC 服務 | 運作中 | 無依賴 TCP RPC 用於微服務部署。 |
| 基準測試套件 | 運作中 | L 掃描工具含解碼/預填延遲 + logit-lens 收斂分析。 |
| 動態 L 推理 | 運作中 | 同一模型 L=2..64。每請求、每 token、SLO 感知深度。架構獨有。 |
| 動態 L 評估 | 運作中 | tools/dynamic_l_eval.py — 每 L 一致性、Poisson-L 取樣、logit 穩定性。 |
| FP16 殘差流 | 運作中(opt-in) | TINYLOOP_FP16_RESIDUAL=1。52 個呼叫點透過 10 個分派輔助函式接線。所有路徑:decode、prefill、chunked、logit-lens、speculative、safety check。H100 驗證:FP32 4/4 回歸通過,FP16 score+generate+speculative 通過。 |
KV cache mode — 7 種模式
| 領域 | 狀態 | 備註 |
|---|---|---|
| Sliding-window | 運作中 | cache_window 限制 KV 儲存 |
| INT8 KV | 運作中 | KV VRAM −49% |
| Store-h (FP16) | 運作中 | Bit-exact,43–50% 節省 |
| Store-h (INT8) | 生產就緒 | 66–75% 節省 |
| Store-h (INT4) | 評估/排序安全 | 78% 節省 |
| Tensor-core 重建 | 推薦 | −37% decode + 相同節省 |
| Paged attention | 運作中 | 16-token 頁面,5.6% 額外開銷 |
推測式與自適應 decode
| 領域 | 狀態 | 備註 |
|---|---|---|
| Self-speculative | 運作中 | L=2 draft、L=8 verify,相同權重。2.77× 吞吐,零額外參數。 |
| Tree speculative | 運作中(greedy) | 一次 mask-gated forward 取代 K 次序列 verify。Bit-exact,零輔助頭。 |
| Warm-start | 運作中 | 從快取 iter-k 狀態恢復。−32.5% 壁鐘。N=1 次即損益平衡。 |
| Beam search | 運作中 | 每 beam 獨立 KV cache |
| 約束式解碼 | 運作中 | Regex NFA,JSON mode |
| L 排程 | 運作中 | 前 N token 淺深度,~3.3× 快。架構獨有。 |
| Rewind speculation | 運作中(telemetry) | 88.9% 命中率。架構獨有。 |
| 自適應推測深度 | 運作中 | Draft-ahead K 在 cached 和 uncached 路徑中自動調整。 |
| CUDA 記憶體池 | 運作中 | TINYLOOP_CUDA_POOL=1 — 減少配置開銷。 |
| SLO-aware L 降級 | 運作中 | Scheduler 在預測等待 > SLO 時降低 L 而非拒絕。架構獨有。 |
| Chrome trace 匯出 | 運作中 | tools/trace_to_chrome.py — chrome://tracing JSON。 |
| Token 軌跡可視化 | 運作中 | tools/trace_tokens.py — 每迭代 argmax 翻轉偵測。 |
| 效能回歸追蹤 | 運作中 | tools/perf_regression.py — 基線比較與閾值偵測。 |
| 一鍵轉換 | 運作中 | tools/convert.py — 自動偵測 fused/separate QKV、RoPE、GQA。 |
模型架構支援
| 領域 | 狀態 | 備註 |
|---|---|---|
| RoPE | 運作中 | 所有前向路徑 |
| GQA | 運作中 | 較少 KV heads,MQA 亦可 |
| GeLU | 運作中(opt-in) | GPT-2/BERT 風格 |
| Post-norm | 運作中(opt-in) | post-norm 模型 |
架構獨有功能
| 領域 | 狀態 | 備註 |
|---|---|---|
| 確定性誤差對消 | 運作中(v5 模型) | 偶數迭代標準 rounding,奇數套用 sign 校正。O(1) 誤差。TINYLOOP_CANCEL_ROUND=1。新穎。 |
| 每迭代安全檢查 | 運作中 | 每迭代計算 residual L2 norm。超過閾值即中止。每 token L 個檢查點。成本比 attention 便宜 2000×。新穎。 |
| L 排程 | 運作中 | 前 N token 以 warmup_L(如 L=2)執行,其餘以完整深度。快 ~3.3×。--l-warmup-tokens 16。 |
| Rewind speculation | 運作中(telemetry) | Draft 被拒時檢查中間深度是否一致。88.9% 命中率。--rewind-L 4。 |
| 雙位元權重交換 | 運作中 | INT2 副本 + INT4 副本。早期 INT2,晚期 INT4。快 3.2%。TINYLOOP_DUAL_BIT=1。新穎。 |
| 三位元權重交換 | 運作中 | 在雙位元基礎上加 INT8 副本(~68 MB)用於迭代 0。TINYLOOP_TRIPLE_BIT=1。第一迭代最高品質。 |
| L-aware 批處理 | 運作中(已驗證) | per_lane_loops=[4,16,32]。每 lane 獨立深度,bit-exact 一致。新穎。 |
基礎建設與服務
| 領域 | 狀態 | 備註 |
|---|---|---|
| Marlin INT4 | 運作中(Ampere/Ada) | 21× over naive |
| Static batching | 運作中 | 1.87× 吞吐 |
| HTTP 服務 | 運作中 | OpenAI 相容 + 原生 |
| Mmap 載入 | 運作中 | 直接 DMA |
| Memory arena | 運作中 | 零碎片 |
| NVTX profiling | 運作中 | NSight Systems 可視化 |
| 優先層級 | 運作中 | TINYLOOP_TIERS — tier 對應 loop 深度 |
| Trace CLI | 運作中 | tinyloop trace — 每迭代 argmax |
| 統一記憶體 | 運作中 | TINYLOOP_UNIFIED_MEMORY=1 — spill 到系統 RAM |
| 成本優先排序 | 運作中 | Scheduler 依 prompt_len × loops 自動計算。短便宜請求優先。架構獨有。 |
| SentencePiece | 運作中 | TINYLOOP_TOKENIZER_MODEL=path 用於 Llama。encode/decode/token_to_bytes。 |
| Tiktoken | 運作中 | TINYLOOP_TIKTOKEN_ENCODING=cl100k_base 用於 GPT-4/Claude。 |
| 自動 tokenizer | 運作中 | 依序嘗試 SentencePiece → Tiktoken → GPT-2 BPE。 |
| INT8 權重 GEMM | 運作中 | cuda/int8_gemm.cu — 每權重 1 byte,256 級。三位元路徑使用。 |
| 非同步 Python API | 運作中 | AsyncModel — asyncio.Lock + ThreadPoolExecutor。支援 generate、generate_stream、score*。 |
| Torch 原生包裝 | 運作中 | TorchModel — 透過零複製 from_numpy() 回傳 torch.Tensor。 |
| HuggingFace 整合 | 運作中 | TinyLoopForCausalLM.from_pretrained() 標準 HF generate() 介面。 |
| GGUF 讀取器 | 運作中 | tools/gguf_reader.py — 讀取 llama.cpp GGUF v2/v3 標頭 + tensor 資訊。 |
| 模型分片 | 運作中 | tools/model_shard.py — 分割 .tinyloop 為 N 片段含 JSON manifest。 |
| β 混合精度 | 運作中 | tools/beta_mixed_precision.py — 基於 β 的貪心位元配置。 |
| 一鍵轉換 | 運作中 | python tools/convert.py model.pt --bits 4。自動偵測 fused/separate QKV,支援 GQA。 |
| 自適應 L 流量 | 運作中 | AdaptiveLController — 離峰 L=32,尖峰 L=4。架構獨有。 |
| 模型編輯放大 | 運作中(demo) | Loop block 編輯效果是單層的 L×。 |
| 啟動轉向 | 運作中(demo) | 深度作為免梯度轉向旋鈕。 |
| 迭代啟動尺度 | 運作中 | 逐迭代啟動幅度下降 50%。 |
驗證覆蓋
- CUDA kernel/unit 測試
- cache parity
- CLI / tokenizer 生成 regression
- variable-L parity(bit-exact)
- 記憶體洩漏偵測(0 MB 成長)
- fuzzing(50 次迭代)
- KV-cache regression(27 點)
- 約束式解碼驗證
H100 效能數據
| 路徑 | 結果 |
|---|---|
| 預設低位元 benchmark | 30.48 ms |
| FP16-body benchmark | 2.82 ms |
| FP16 h + fp16_body decode | −38% vs baseline ⚡ |
| Warm-start resume | −32.5% vs fresh |
L 掃描解碼延遲 — 2B INT4,H100,32-token prompt,16 decode tokens
| L | 壁鐘時間 (ms) | 吞吐量 (tok/s) |
|---|---|---|
| 2 | 111.8 | 301 |
| 4 | 146.8 | 226 |
| 8 | 161.3 | 198 |
| 16 | 305.5 | 108 |
| 32 | 506.5 | 64 |
架構獨有:同一權重檔案在所有深度。品質是計算旋鈕。
多位元權重交換 — 2B INT4,H100,L=8
| 設定 | 解碼 ms | 吞吐量 | 備註 |
|---|---|---|---|
| 基準(INT4) | 86.9 | 184 tok/s | — |
| 雙位元(INT2+INT4) | 86.2 | 186 tok/s | 快 ~1% |
| 三位元(INT8+INT2+INT4) | 91.2 | 175 tok/s | 慢 ~5%,迭代 0 最高品質 |
誠實的 VRAM 比較(nvidia-smi,H100)
我們的 2B 單 block 模型 — 2 pre + 1 loop × L=8
| Runtime | VRAM | vs 展開 |
|---|---|---|
| PyTorch FP16(展開 10 層) | 2225 MB | 基線 |
| PyTorch FP16(權重共享 2+1) | 798 MB | 少 2.8× |
| TinyLoop INT4 | 737 MB | 少 3.0× |
| TinyLoop INT4 + FP16 body | 1187 MB | 少 1.9×(最快) |
2.8× 的節省來自權重共享(架構特性),不是 runtime 的功勞。TinyLoop 的 INT4 額外只省 ~1.1×。
Ouro 1.4B — 24 個獨立層 × 4 UT 步
| Runtime | VRAM | vs PyTorch |
|---|---|---|
| PyTorch FP16 | 3457 MB | 基線 |
| TinyLoop FP16 | 3343 MB | 差不多 |
| TinyLoop INT8 | 1983 MB | 少 1.7× |
| TinyLoop INT4 | 1263 MB | 少 2.7× |
Ouro 有 24 個獨立層權重 — 沒有權重共享節省。VRAM 差異純粹來自量化,任何推理引擎都能做到。
誠實的評估
- 權重共享省 VRAM — 但這是架構特性,不是 TinyLoop 的優勢。PyTorch 用相同共享權重也差不多。
- INT4 量化省 VRAM — 但任何量化引擎(llama.cpp、vLLM)都能做到。
- TinyLoop 真正的優勢:L 作為 runtime 旋鈕、self-speculative decode、每請求不同深度、架構獨有功能(誤差對消、安全檢查、雙位元)。這些是其他 runtime 做不到的。
安全主張
- TinyLoop 是真正的 looped-transformer runtime,100% CTest 通過
- Cached decode 已實作並預設啟用
- L 是真正的 runtime 參數:同一模型 L=2..64
- 多 block loop 支援:Ouro-1.4B 可載入執行(輸出品質進行中)
需謹慎的主張
- 生產級 hosted serving(無 continuous batching)
- 與 PyTorch 的廣泛品質等價(Ouro 輸出品質尚未匹配)
- 「比 PyTorch 少 X× VRAM」而不說明權重共享是架構特性
- 效能聲明未標註 CUDA context 開銷(H100 ~500 MB)