# Local inference capacity kit

本入口把“模型能否放下”和“模型能否完成任务并满足延迟”分成两个模块。名义权重估算只用于早期预算；真实容量必须使用固定模型 digest 和任务评测。

## 模块

| 模块                | 入口                                       | 最小命令                                    | 输出                                          |
| ------------------- | ------------------------------------------ | ------------------------------------------- | --------------------------------------------- |
| 名义权重存储估算    | `labs/model-memory-estimator/README.md`    | `npm run lab:model-memory -- --format json` | 16/8/4-bit 理想 GiB 与明确排除项              |
| Ollama 流式任务基线 | `labs/local-inference-benchmark/README.md` | `npm run lab:inference:test`                | 模型 digest、逐任务正确性、TTFT、总耗时和吞吐 |

## 复用顺序

1. 用参数量与位宽估算名义权重存储，排除明显不可行的硬件路线。
2. 从 Ollama `/api/tags` 取得模型 digest，并通过 `--expected-digest` fail closed 固定身份。
3. 用 `--model`、`--base-url` 和 `--rounds` 运行同一任务合同；package script 的输出固定在 `/tmp/younis-ai-lab-qwen3-8b.json`。
4. 在质量门槛成立后再增加并发、上下文、冷启动、持续负载和资源指标。

示例：

```bash
npm run lab:inference:benchmark -- --model qwen3:8b --expected-digest 500a1f067a9f782620b40bee6f7b0c89e17ae61f686b92c24933e4ca4b2b8b41 --rounds 2
```

需要自定义输出路径时，直接运行 `node labs/local-inference-benchmark/src/benchmark.mjs` 并只传一次 `--out`。CLI 对重复参数和非 64 位小写十六进制 digest fail closed。

历史工件只代表记录机器、模型和 14 次串行短请求。新模型、新 digest 或新任务必须生成新观察，不覆盖旧结果。
