Strata 是一款专为大 MoE(混合专家)模型打造的开源本地推理引擎,能让一台配备 12-24GB 显存的消费级游戏电脑跑起 1250 亿参数的 Qwen3.8-Flash-Next,并以 OpenAI 与 Anthropic 双协议对外提供本地 API。本教程完整记录从硬件自检、环境准备、模型下载、引擎安装、启动验证,到接入 AI 编程 Agent、量化档位与上下文调优的全过程,所有步骤均在一台 RTX 2080 Ti 22G + 32GB 内存的实机上跑通,实测出字速度 35-41 tokens/s,可直接作为同档位机器的部署蓝本。
前置教程
如想快速开始学习本教程,你可能需要先完成以下前置教程:
- llama.cpp本地部署Qwen3.8大语言模型完整教程,Qwen3.8 模型家族与 GGUF 格式的背景知识,本教程部署的是同家族的 125B 旗舰 MoE 版本。
- OpenAI兼容API的概念与用法详解,Strata 对外暴露的正是 OpenAI 兼容接口,理解它是接入各类客户端的前提。
- Ollama本地部署大语言模型完整教程,本地大模型部署的入门视角,与本教程的 MoE 引擎路线互为参照。
资源下载
- Strata 部署资源包(引擎 + strata-dl 多连接下载器 + 双档位配置样例):夸克网盘整理中,上传后本区块更新直链
- Strata 官方仓库,开源项目主页(MIT 协议),备选获取渠道
- 模型分片(IQ1_M 约 58GB、Q2_0 约 66GB):体积较大,随资源包分卷打包后一并提供
1. 认识 Strata 与 Qwen3.8-Flash-Next
1.1 这个项目解决什么问题
主流大模型的参数量越大,对显存的要求越高,125B 级别的模型通常被认为是数据中心设备专属。Strata 的思路是把 MoE 模型拆成两部分对待:稀疏激活的专家权重按量化档位切成分片,一部分常驻显存、一部分驻留内存;稠密权重与注意力结构则完整放进显存高速计算。配合 MTP(多 token 预测)投机解码,消费级平台就能以每秒几十 token 的速度驱动 125B 模型。
1.2 量化档位与资源需求
Strata 为 Qwen3.8-Flash-Next 提供六个官方档位,核心指标是专家总量(arena)——它决定了显存与内存的分配策略。写作本教程时引擎版本为 v0.1.38,各档位官方数据如下:
| 档位 | 下载体积 | 专家总量 | 内存需求 | 质量定位 |
|---|---|---|---|---|
| IQ1_M(Coder) | 58.4 GB | 23.4 GB | 32 GB | 保留 256/512 个编码相关专家,存储精度相当于 3.5 bit,编码场景特化 |
| Q2_0 | 66.4 GB | 34.0 GB | 48 GB | 2-bit 全量专家,速度最快的全专家档 |
| IQ2_XS | 68.0 GB | 35.5 GB | 48 GB | 2-bit 改进版,质量略优 |
| IQ3_XXS | 75.8 GB | 42.9 GB | 60 GB | 3-bit,质量再上一级,CPU 侧计算量增大 |
| IQ3_S | 83.6 GB | 50.3 GB | 62 GB | 3.5-bit,官方口径追平原版 BF16 模型 |
| UD-Q4_K_XL | 111.3 GB | 77.0 GB | 48 GB(预算模式) | 4-bit 动态量化,质量最高的实验档 |
内存需求一列的含义:64GB 内存的机器全档位可跑;48GB 可跑 Q2_0 与 IQ2_XS;32GB 机器的对应选择是 Coder 档。内存不足时引擎会进入低内存驻留模式——显存能装多少专家就装多少,其余驻留内存并按需搬运,这正是 32GB 内存机器也能跑 125B 模型的关键。
1.3 硬件与系统要求
| 项目 | 要求 | 说明 |
|---|---|---|
| 显卡 | NVIDIA RTX 20/30/40/50 系,12GB 起步 | 8GB 可启动但明显变慢;预编译引擎内置 sm_75/86/89/120 四种架构代码 |
| 内存 | 32GB 起步,64GB 推荐 | 双通道对速度影响显著,后文调优章节有实测 |
| CPU | x86-64 并支持 AVX2 | 近八年的主流处理器均满足 |
| 磁盘 | 80-120GB 空闲 | 模型分片 + 拼装后的模型包 + MTP 草稿层 |
| 系统 | Windows 10/11 或 Linux | Windows 提供一键脚本 |
| 驱动 | NVIDIA 驱动 580 以上 | 引擎依赖的 CUDA 运行库随安装自动配置 |
2. 部署前自检
2.1 官方自检命令
获取项目代码后(见第 3 章),先运行自检,引擎会给出这台机器适配哪些档位的官方判定:
git clone https://github.com/Niko1221/Strata.git
cd Strata
START-HERE.bat --check
在一台 RTX 2080 Ti 22G + 32GB 内存的实机上,判定结果如下:
[ok] GPU: NVIDIA GeForce RTX 2080 Ti, 22.0 GB VRAM, compute capability 7.5, driver 591.86
[ok] RAM: 31 GB
[ok] CPU: AMD Ryzen 5 5600G with Radeon Graphics (AVX2)
Q2_0 fits in the low-RAM mode (the GPU holds ~50% of its experts)
IQ2_XS fits in the low-RAM mode (the GPU holds ~48% of its experts)
IQ3_XXS does not fit
IQ3_S does not fit
IQ1_M fits in the low-RAM mode (the GPU holds ~73% of its experts)
UD-Q4_K_XL does not fit
This PC can run Strata. Run it again without --check to install.
2.2 判读要点
does not fit 的档位不要强上:32GB 内存的机器硬跑 IQ3 档会进入 SSD 兜底读取,实测仅 7-8.5 tokens/s。32GB 内存机器的建议路径是先跑 Coder 档;升级内存前先对照 1.2 节的档位表估算需求,规则是内存 ≥ 专家总量 + 10GB 系统预留:Q2_0 与 IQ2_XS 需 48GB、IQ3_XXS 需 60GB、IQ3_S 需 62GB,4-bit 档要全速运行需 87GB 以上(77GB 专家 + 系统预留)。自检通过后,按官方提示选择档位进入安装流程。
3. 获取项目与环境准备
3.1 获取项目代码
国内网络优先从资源下载区的网盘包获取项目代码与引擎,解压到任意空间充足的目录(下文以 C:\ProgramMine\Strata 为例)。备选方式是官方仓库克隆:
git clone --depth 1 https://github.com/Niko1221/Strata.git
3.2 一键安装脚本做了什么
项目根目录的 START-HERE.bat 是总入口,首次运行会依次完成:检测并安装 Python 3.12(用户级安装,无需管理员)→ 创建项目私有虚拟环境 .venv → 调用 setup.py 走完安装全流程。后续每次双击它就直接启动模型。
setup.py 的安装流程共七步:硬件检查 → 档位选择 → Python 依赖 → 引擎获取 → 模型下载 → 模型包拼装 → 生成启动脚本。全程幂等,中断后重跑只会补齐缺失部分。
引擎默认使用官方预编译版本(约 124MB 的 zip),内置四种显卡架构的支持,无需本地安装 CUDA 编译工具链。安装过程还会通过 pip 拉取约 0.4GB 的 NVIDIA CUDA 运行库。另一个约 40MB 的工具源码包走国际线路,下载偏慢属正常现象,耐心等待即可。
3.3 手动准备环境的注意事项
希望精细控制流程的读者可以绕过一键脚本手动建环境,此时有一个已知坑:Windows 的 py -3 可能指向 Python 3.14,而依赖清单中的 numpy 尚无对应版本的预编译包,安装会报错。解决方法是显式使用 3.12 创建虚拟环境:
py -0p
py -V:Astral/CPython3.12 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
4. 模型分片下载与放置
4.1 从网盘获取模型
模型分片体积在 58-112GB 之间,统一从资源下载区的网盘链接获取。以 Coder 档为例,下载后得到两个分片文件与一个可选的视觉编码器文件,放入模型目录(本教程约定 C:\models\ 下按档位建目录):
C:\models\Qwen3.8-Flash-Next-GSQ-RCO-Coder-IQ1_M\
├── Qwen3.8-Flash-Next-GSQ-RCO-IQ1_M-00001-of-00002.gguf
├── Qwen3.8-Flash-Next-GSQ-RCO-IQ1_M-00002-of-00002.gguf
└── mmproj-Qwen3.8-Flash-Next-BF16.gguf
分片文件名必须保留原名,安装脚本按 -0000i-of-0000N 的命名规则识别分片顺序并校验完整性。各档位的第二分片是全档位共用的查找表(28.8GB),如果同时部署多个档位也无法省略,每个档位的目录需要各自完整。
4.2 大文件下载的断点续传工具
网盘客户端中断后可续传。如果需要从镜像源直接下载数十 GB 的大文件,推荐使用本教程资源包中的 strata-dl 多连接下载器:单连接下载大文件往往只有 2-5 MB/s,该工具把文件切成 512MB 的块、以 16 连接并行抓取,实测能稳定跑到 15-18 MB/s,且支持断点续传与失败重试。
用法(三个必填参数:镜像源地址前缀、输出目录、文件清单):
python strata_dl.py --url-base "https://你的镜像源地址/仓库路径/" --out "C:\models\Qwen3.8-Flash-Next-GSQ-RCO-Coder-IQ1_M" --file "IQ1_M/Qwen3.8-Flash-Next-GSQ-RCO-IQ1_M-00001-of-00002.gguf" --file "IQ1_M/Qwen3.8-Flash-Next-GSQ-RCO-IQ1_M-00002-of-00002.gguf"
其核心逻辑是按块记录进度文件,每块下载完成后校验,全部到齐后按序合并并核对总大小。下面是并行调度部分的核心片段:
def download(remote, final):
total = head_size(url)
n_chunks = (total + CHUNK - 1) // CHUNK
parts = [(i, OUT / f"{final}.part{i:04d}") for i in range(n_chunks)]
with ThreadPoolExecutor(THREADS) as ex:
futures = []
for i, p in parts:
start = i * CHUNK
end = min(total, start + CHUNK) - 1
futures.append(ex.submit(fetch_range, url, start, end, p, i))
for fu in futures:
fu.result()
merge_parts(fpath, parts)
完整代码请查看 strata-dl/strata_dl.py。该脚本仅依赖 Python 标准库,无需安装第三方包。
4.3 校验与放置
分片下载完成后核对两点:文件字节数与网盘说明一致;目录内无 .part 后缀的残留临时块。安装脚本在拼装前还会读取 GGUF 文件头做二次校验,缺字节或截断的分片会被拒绝并提示重新下载对应文件。
5. 安装引擎与模型包拼装
5.1 安装命令
模型分片就位后,运行安装命令把它注册为可启动的档位。以 Coder 档为例:
cd /d C:\ProgramMine\Strata
.venv\Scripts\python.exe setup.py --family coder --model IQ1_M --gguf-dir "C:\models\Qwen3.8-Flash-Next-GSQ-RCO-Coder-IQ1_M" --context 262144 --kv q4_0 --no-start --yes
关键参数说明:
| 参数 | 作用 |
|---|---|
--family coder --model IQ1_M |
选择档位,原版全专家模型用 --family qwen --model Q2_0 |
--gguf-dir |
指向已下载的分片目录,安装脚本就地取材不再联网下载 |
--context 262144 |
上下文长度,可选 8K 至 512K,详见调优章节 |
--kv q4_0 |
KV 缓存量化精度,可选 int8 或 q4_0 |
--no-start |
仅安装不启动 |
--yes |
全部采用推荐配置,跳过交互问答 |
5.2 拼装过程发生了什么
安装脚本会把 GGUF 分片重新整理为引擎专用的模型包(核心是一个按专家组织、便于显存缓存随机存取的 experts.bin),并从原始模型检查点获取约 5GB 的 MTP 草稿层——它是投机解码的加速器,能带来约两倍的出字速度提升。全程约需 10-20 分钟,主要耗时在 25-35GB 模型包的写入。
完成后项目根目录会生成两样东西:配置文件 strata-<档位>.json 和启动脚本 run-<档位>.bat。不同档位的模型包可以共存,各自独立启动。
6. 启动与基础使用
6.1 启动与首次加载
双击 run-coder-iq1_m.bat(或对应档位的启动脚本),首次加载需要一到两分钟。启动日志中出现下面两行属正常现象:
[strata] loading the experts the GPU does not hold into RAM ... YOUR PC CAN BE SLOW OR STOP RESPONDING FOR 1-3 MINUTES NOW - this is normal.
[strata] filling the GPU's expert cache (6838 experts, 13.01 GiB of VRAM) ...
第二行是显存专家缓存的建立结果,括号里的容量就是后续调优时重点关注的数字。加载完成后命令行显示 ready:,浏览器会自动打开 http://127.0.0.1:8080/ 聊天首页。关闭命令行窗口即停止服务。
6.2 三种使用方式
| 方式 | 地址 | 说明 |
|---|---|---|
| 网页聊天 | http://127.0.0.1:8080/ |
自带对话界面,会话记录仅保存在浏览器本地(localStorage 键 strata.chat),点 New chat 清空,或在控制台执行 localStorage.removeItem("strata.chat") 彻底清除 |
| OpenAI 兼容 API | http://127.0.0.1:8080/v1/chat/completions |
API Key 与模型名均可随意填写,服务端不校验 |
| Anthropic 兼容 API | http://127.0.0.1:8080/v1/messages |
供以 Anthropic 协议接入的客户端与 Agent 使用 |
用任意 OpenAI 客户端验证服务的例子:
import urllib.request, json
body = json.dumps({"model": "strata", "messages": [{"role": "user", "content": "自我介绍一下"}], "max_tokens": 500}).encode()
req = urllib.request.Request("http://127.0.0.1:8080/v1/chat/completions", data=body, headers={"Content-Type": "application/json"})
r = json.load(urllib.request.urlopen(req, timeout=300))
print(r["choices"][0]["message"]["content"])
6.3 实测性能基线
实机(RTX 2080 Ti 22G + 32GB 双通道内存)的验证数据,供同档位机器对照:Coder 档预热后稳定 35 tokens/s、显存专家缓存命中率 95%;Q2_0 档首请求即达 41.3 tokens/s、命中率 76.5%。低于此量级时优先检查后文调优章节的显存占用项。
7. 接入 AI 编程 Agent
7.1 ZCode 的配置方法
Strata 的本地 API 可以直接充当 AI 编程 Agent 的模型后端。以 ZCode 桌面版为例,其模型配置存放在 C:\Users\<用户名>\.zcode\v2\provider_config.json(注意与 CLI 的 config.json 是两套配置),在 providerConfigRules 中新增一个服务商条目:
{
"providerId": "strata-local",
"providerName": "strata-local",
"config": {
"group": "standard-personal",
"access": { "type": "api-key", "apiKey": "strata" },
"api": { "type": "openai-chat-completions", "baseUrl": "http://127.0.0.1:8080/v1" },
"personalModelIds": ["qwen3.8-flash-next"],
"modelOrder": ["qwen3.8-flash-next"]
}
}
同时在 modelConfigRules 的 providerModelRules 中为该模型声明上下文窗口,数值与启动配置一致(引擎 262144 时此处填 256000 至 262144 均可,声明略小更安全,客户端会提前压缩长对话而不是撞上硬限制):
{
"modelId": "qwen3.8-flash-next",
"providerId": "strata-local",
"config": { "enabled": true, "properties": { "contextWindow": 256000 } }
}
保存后重启 ZCode,模型列表里即可看到本地模型。使用前确认 Strata 服务正在运行,否则客户端会报连接失败。
7.2 必须同步修改的两个服务端开关
Agent 类客户端有一个共同行为:按「最大输出额度」请求 max_tokens,提示词加上这个额度很容易超出上下文上限,服务端按设计返回 400,客户端则渲染为「Model request exceeded the provider context window」。解决方法是在 strata-<档位>.json 中加入两个顶层配置:
"fit_max_tokens": true,
"reasoning_budget_tokens": 16384
fit_max_tokens 让服务端把超限的 max_tokens 自动收缩到剩余空间,不再拒绝请求;reasoning_budget_tokens 给思考型模型的思考过程设置 16384 token 的硬上限,防止输出配额被思考阶段全部消耗、正文为空。修改后重启启动脚本生效。
排障线索:如果客户端报上下文类错误但引擎日志里没有任何 error 记录,优先检查配置文件是否漏加这两项,以及客户端声明的窗口值与引擎实际值是否一致。
8. 量化档位与上下文调优
8.1 双档位组合策略
实机最终的形态是双档位并存:Coder 档负责编码场景,Q2_0 档负责通用问答。两个档位的模型包共存于磁盘,切换时停掉当前启动脚本、再运行另一个即可(同一个 8080 端口,客户端零改动)。两档的实测对照:
| 维度 | Coder IQ1_M | Q2_0 |
|---|---|---|
| 出字速度(实测) | 35 tokens/s | 41.3 tokens/s |
| 内存驻留 | 约 8 GB,可同时挂微信 | 约 19 GB,需关闭大内存程序 |
| 显存专家缓存命中 | 95% | 76.5% |
| 适用场景 | 编码、工具调用、Agent 后端 | 通用问答、写作、知识面 |
8.2 KV 缓存量化的账目
KV 缓存随上下文线性增长,是长上下文场景的最大变量。该模型为 13 层 KV 结构,两种精度的账目如下:
| 上下文 | int8 KV | q4_0 KV |
|---|---|---|
| 每 token | 约 13.4 KB | 约 7.3 KB |
| 128K | 1.8 GB | 1.0 GB |
| 256K | 3.6 GB | 2.0 GB |
32GB 内存机器的 KV 只能住显存(内存被专家占满),因此 q4_0 是长上下文场景的推荐精度——它把开 256K 的显存代价从 3.6GB 降到 2.0GB,相当于专家缓存只缩小 0.6GB 而不是 1.6GB。v0.1.38 起 q4_0 的提示词预填充走 tensor core,长提示处理速度无损。内存升级到 64GB 以上后 --kv-streaming auto 会自动把 KV 搬进内存,显存完全腾空,届时 int8 的检索精度优势可以找回来。
8.3 上下文档位的边界
上下文档位共七档:8K、32K、64K、128K、256K、384K、512K。其中 256K(262144)是模型训练的原生上限,设置时无需任何外推;384K 与 512K 由 yarn 旋转位置编码外推 1.5 倍与 2 倍实现,远距离检索精度会有可见下降。超过 512K 官方不再提供档位。日常编码建议 128K 或 256K,512K 留给整仓库、超长文档的一次性分析任务。
8.4 显存专家缓存的腾挪
显存专家缓存越大,命中率越高,出字越快。三个不花钱的抓手:
- 跑 Strata 时关闭游戏、ComfyUI 等显存大户,桌面程序能省 1-2GB
- 用过一段时间后执行
--expert-profile-save,引擎会按你的真实工作负载把热点专家固定在显存 - 观察
ready:行括号里的缓存容量,它就是当前显存富余量的直接体现
8.5 内存双通道的实测方法
内存带宽决定驻留专家向显存搬运的速度,而很多整机存在两根内存条插在同一通道的单通道问题。不装任何工具的验证方法:用 numpy 对大数组做拷贝计时,单通道实测约 18-19 GB/s(读加写),双通道约 32-36 GB/s。低于 20 GB/s 时关机把一根内存条挪到另一通道(常见主板双条标准位为第 2、4 槽)。实机修正双通道后带宽提升 71%,模型出字速度随之受益。
9. 总结
9.1 核心内容回顾
- Strata 通过「显存专家缓存 + 内存常驻 + MTP 投机解码」三层结构,让 12-24GB 显存的消费级电脑跑起 125B MoE 模型
- 部署五步:自检、取码、放分片、setup 安装、双击启动;分片文件名与字节数必须完整保留
- 32GB 内存机器首选 Coder 档,量化与上下文按「q4_0 KV + 256K」组合性价比最高
- 接入 Agent 必须同步加
fit_max_tokens与reasoning_budget_tokens,否则必遇上下文报错与空回复 - 双档位(Coder + Q2_0)覆盖编码与通用两类场景,切换零成本
- 内存双通道、显存腾挪、专家热度画像是不花钱的三板斧
9.2 常见问题与解答
问:启动后电脑卡住一两分钟正常吗?
答:正常。低内存驻留模式要把约 19GB 的专家数据一次性载入内存并锁定,系统在装载期间响应变慢属预期行为,日志里也有明确提示,等待即可。
问:客户端报「Model request exceeded the provider context window」怎么办?
答:这是 Agent 类客户端按满额输出额度请求导致提示词加 max_tokens 超限。在 strata-<档位>.json 中加入 "fit_max_tokens": true 并重启服务即可,服务端会自动收缩额度而不是拒绝请求。
问:回复的 content 字段是空的?
答:思考型模型把输出配额全部消耗在思考阶段了。两种解法:客户端调大 max_tokens(800 以上);或在服务端配置 "reasoning_budget_tokens": 16384 强制为正文保留空间。
问:手动创建虚拟环境后安装 numpy 失败?
答:py -3 可能指向尚无对应预编译包的过新 Python 版本,显式用 Python 3.12 创建虚拟环境即可,参见 3.3 节。
问:8080 端口被占用或想同时开两个档位?
答:启动配置中修改 "port" 字段换端口。但不建议同时启动两个档位,显存与内存都无法支撑双模型并存,实际用法是停一个启另一个。
问:想清空网页聊天的历史记录?
答:会话记录仅存于浏览器 localStorage(键 strata.chat),点页面上的 New chat 即可清空当前会话,彻底清除则在开发者工具控制台执行 localStorage.removeItem("strata.chat") 后刷新。
举手提问