在 Ubuntu 上用 Strata 部署 SC117:从下载、独立打包到文本与视觉实测的完整教程
不重装引擎、不覆盖原版配置:在跑通的原版 Strata 环境上新增 SC117 模型,成套管理资源,完成文本与视觉实测

在 Ubuntu 上用 Strata 部署 SC117:从下载、独立打包到文本与视觉实测的完整教程
本文整理自 2026 年 10 月 17 日的一次实际部署过程。目标不是重装 Strata,而是在原版模型已经正常运行的基础上,新增 SC117 模型,保留原版配置与启动入口,并完成文本及图片理解验证。
本文中的“SC117”指 Hugging Face 仓库
SC117/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF提供的模型资源,不是另一个推理引擎。核心原则:模型分片、native pack、tokenizer、MTP 运行时和配置文件应成套管理;新增模型时,不覆盖已经跑通的原版环境。
一、本文最终实现了什么
本次部署完成了以下工作:
- 准备 SC117 的两个 IQ2_XS GGUF 分片。
- 下载 SC117 提供的四个 MTP 运行时文件。
- 使用 Strata 的
iq_pack.py生成独立 native pack。 - 从原版 JSON 生成 SC117 专用配置。
- 创建独立启动脚本。
- 成功启动 131072-token 上下文配置的服务。
- 完成两轮文本生成。
- 完成一次“详细描述图片并生成文生图提示词”的视觉任务。
实际生成日志报告:
| 测试 | 输出 token 数 | 日志耗时 | 引擎报告速度 | 结束状态 |
|---|---|---|---|---|
| 文本请求一 | 393 | 9 s | 51.9 tok/s | stop, cancel=False |
| 文本请求二 | 604 | 9 s | 69.9 tok/s | stop, cancel=False |
| 图片描述与提示词 | 1994 | 37 s | 58.8 tok/s | stop, cancel=False |
这些数据来自本次实操日志,不是标准化 benchmark,也不是所有电脑上的性能保证。
另外,必须区分三个结论:
- 服务声明上下文为 131072 tokens,不等于已经完成实际 128k 长输入压力测试。
- 图片任务成功,不等于所有图片细节识别完全准确。
- 使用了 MTP 配置,不等于已测出 MTP 的独立加速收益。
二、适用前提:这是一篇“增量部署”教程
本文建立在以下已有环境之上:
/data/Strata其中已经存在:
.venv/bin/python
engine/strata
engine/strata-vision
serve/server.py
tools/iq_pack.py
strata-iq2_xs.json
run-iq2_xs.sh原版模型及视觉投影器位于:
/data/Strata-data/models/原版 pack 位于:
/data/Strata-data/packs/iq2_xs/原版 MTP 运行时位于:
/data/Strata-data/mtp/rt/此前的安装记录包含 Ubuntu、NVIDIA GeForce RTX 4070 12 GB、IQ2_XS、128k 配置和视觉功能的运行记录,也记录了这台机器的调优过程。因此,本文选择继承原配置,而不是重新猜测一组参数。
本文不包含从零安装 CUDA、编译 Strata 或配置 Python 环境。没有上述基础环境的读者,应先完成基础安装,不能只复制本文最后的 JSON 就期待启动成功。
三、先搞清楚:这次需要哪些资源
本次部署涉及三类主要资源,以及一组沿用的视觉资源。
3.1 主模型:两个 GGUF 分片
Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf
Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00002-of-00002.gguf本次路径约定:
/data/Strata-data/sc117/IQ2_XS/两个分片都要保留。
在本次配置中:
- 第一个分片用于
--native。 - 第二个分片用于
--ple-gguf。 - 打包时向
iq_pack.py传入第一个分片,工具实际识别了两个分片。
不要把两个分片手动拼接成一个文件。
3.2 主模型 native pack
通过以下工具生成:
/data/Strata/tools/iq_pack.py本次独立输出位置:
/data/Strata-data/packs/sc117_iq2_xs/配置还会使用其中的:
/data/Strata-data/packs/sc117_iq2_xs/tokenizer/注意:主模型 native pack 与 MTP 运行时不是同一套资源。
3.3 MTP 运行时:四个文件
仓库中的目录为:
strata/rt/本次使用四个文件:
dense.bin
dense.txt
draft_vocab.bin
experts.bin保存位置:
/data/Strata-data/sc117/strata/rt/本次仓库页面显示的近似大小如下:
| 文件 | 页面显示大小 |
|---|---|
dense.bin | 116 MB |
dense.txt | 1.88 kB |
draft_vocab.bin | 425 kB |
experts.bin | 708 MB |
这些大小只能辅助检查,不能替代哈希校验。
本次配置的 --mtp 指向这个目录,不是指向某个 .bin,也不是指向中间格式的 mtp-q2_0.gguf。
已有安装记录也显示,Strata 的 MTP 准备流程会将 MTP GGUF 转换为运行时目录;本文使用的是 SC117 已提供的运行时资源,不需要再照搬原版的转换步骤。
3.4 视觉资源:本次沿用原版投影器
本次保留:
/data/Strata-data/models/mmproj-Qwen3.8-Flash-Next-BF16.gguf但视觉配置中的 model 改为 SC117 第一个分片。
这里的结论仅限于:这组组合在本次图片任务中完成了实际生成。不能由此推导出其他模型、其他投影器也可以随意混用。
四、最终目录规划
部署完成后的关键目录如下:
/data/
├── Strata/
│ ├── .venv/
│ ├── engine/
│ │ ├── strata
│ │ └── strata-vision
│ ├── serve/
│ │ └── server.py
│ ├── tools/
│ │ └── iq_pack.py
│ ├── data/
│ │ └── expert-profile.bin
│ ├── strata-iq2_xs.json
│ ├── strata-sc117-iq2_xs.json
│ ├── run-iq2_xs.sh
│ └── run-sc117-iq2_xs.sh
│
└── Strata-data/
├── models/
│ ├── IQ2_XS/
│ │ └── 原版两个 GGUF 分片
│ └── mmproj-Qwen3.8-Flash-Next-BF16.gguf
├── mtp/
│ └── rt/
│ └── 原版 MTP 运行时
├── packs/
│ ├── iq2_xs/
│ └── sc117_iq2_xs/
└── sc117/
├── IQ2_XS/
│ ├── Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf
│ └── Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00002-of-00002.gguf
└── strata/
└── rt/
├── dense.bin
├── dense.txt
├── draft_vocab.bin
└── experts.bin这套结构的好处是:原版和 SC117 的资源分开,切回原版不需要改回一串路径。
五、第一步:准备 SC117 模型与 MTP 文件
5.1 创建目录
mkdir -p /data/Strata-data/sc117/IQ2_XS
mkdir -p /data/Strata-data/sc117/strata/rt5.2 下载主模型两个分片
如果已经通过浏览器下载并放好,跳过这一步。
如果环境中已经安装可用的 Hugging Face hf 命令,可以按本次仓库路径下载:
hf download SC117/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF \
--include "IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-*.gguf" \
--local-dir /data/Strata-data/sc117这里的命令用于复现准备过程;本次对话中明确记录的实际验证,是后续打包工具识别到了两个本地分片。
下载后查看:
ls -lh /data/Strata-data/sc117/IQ2_XS/应能看到两个文件名分别以:
00001-of-00002.gguf
00002-of-00002.gguf结尾。
5.3 下载整个 MTP 运行时目录
hf download SC117/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF \
--include "strata/rt/*" \
--local-dir /data/Strata-data/sc117或者在浏览器中逐个下载四个文件,放进:
/data/Strata-data/sc117/strata/rt/检查:
ls -lh /data/Strata-data/sc117/strata/rt/不要因为 dense.txt 很小就漏掉,也不要只下载两个大文件。
六、第二步:生成 SC117 独立 native pack
执行:
cd /data/Strata
.venv/bin/python tools/iq_pack.py \
--gguf "/data/Strata-data/sc117/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf" \
--out "/data/Strata-data/packs/sc117_iq2_xs"注意输出目录:
/data/Strata-data/packs/sc117_iq2_xs不是原版的:
/data/Strata-data/packs/iq2_xs6.1 本次实际输出
model shards: Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf, Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00002-of-00002.gguf
index.txt: 1079 tensors, 302 served natively, 0 in extra.bin, arena 1.43 GiB
tokenizer/: vocab 248320, merges 247587, pre qwen35, specials {'tokenizer.ggml.eos_token_id': 248046, 'tokenizer.ggml.padding_token_id': 248044, 'tokenizer.ggml.bos_token_id': 248044}随后正常返回终端提示符。
6.2 如何理解这段输出
| 输出 | 本次可以确认的内容 |
|---|---|
model shards 列出两个文件 | 工具识别到了两个分片 |
1079 tensors | 工具报告索引包含 1079 个张量 |
302 served natively | 工具报告 302 个张量采用原生读取方式 |
0 in extra.bin | 工具报告没有张量放入 extra.bin,本身不是报错 |
arena 1.43 GiB | 打包工具报告的 arena 大小,不是整个模型总显存 |
tokenizer/ | 输出了 tokenizer 相关信息 |
不要把“打包成功”直接写成“模型已成功推理”。打包、启动、完成请求是三个不同的验证阶段。
七、第三步:从原版配置生成 SC117 配置
本次原配置:
/data/Strata/strata-iq2_xs.json新配置:
/data/Strata/strata-sc117-iq2_xs.json采用复制后定点修改,而不是重新手写所有参数。
这样能保留已经调过的配置:
--max-context 131072
--kv int8
--kv-resident 32768
--vram-reserve-mib 1500
--pcie-frac 0.00
--spec-min-p 0.70
--adapt-every 1
--adapt-swaps 80
--adapt-decay 0.97
--adapt-async 1这些参数来自现有运行环境;此前记录中有对应的调优及配置过程,但不能把它们称为所有硬件通用的最优设置。
7.1 自动生成脚本
执行:
cd /data/Strata
.venv/bin/python - <<'PY'
import json
from pathlib import Path
src = Path("/data/Strata/strata-iq2_xs.json")
dst = Path("/data/Strata/strata-sc117-iq2_xs.json")
cfg = json.loads(src.read_text(encoding="utf-8"))
model_dir = Path("/data/Strata-data/sc117/IQ2_XS")
model_1 = model_dir / "Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf"
model_2 = model_dir / "Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00002-of-00002.gguf"
pack = Path("/data/Strata-data/packs/sc117_iq2_xs")
mtp = Path("/data/Strata-data/sc117/strata/rt")
required = [
model_1,
model_2,
pack / "index.txt",
pack / "tokenizer",
mtp / "dense.bin",
mtp / "dense.txt",
mtp / "draft_vocab.bin",
mtp / "experts.bin",
]
missing = [str(p) for p in required if not p.exists()]
if missing:
raise SystemExit(
"未写入配置,以下路径不存在:\n" + "\n".join(missing)
)
replacements = {
"--pack": str(pack),
"--native": str(model_1),
"--ple-gguf": str(model_2),
"--mtp": str(mtp),
}
args = cfg["args"]
for flag in replacements:
if args.count(flag) != 1:
raise SystemExit(
f"未写入配置:参数 {flag} 缺失或重复"
)
for flag, value in replacements.items():
args[args.index(flag) + 1] = value
cfg["tokenizer"] = str(pack / "tokenizer")
cfg["model_name"] = "qwen3.8-flash-next-sc117-iq2_xs"
cfg["log"] = "/data/Strata/strata-sc117-iq2_xs.log"
cfg["vision"]["model"] = str(model_1)
with dst.open("x", encoding="utf-8") as f:
json.dump(cfg, f, ensure_ascii=False, indent=2)
f.write("\n")
print(f"配置已生成:{dst}")
print("原版配置未修改。")
print(f"模型名称:{cfg['model_name']}")
print(f"服务端口:{cfg['port']}")
PY本次实际输出:
配置已生成:/data/Strata/strata-sc117-iq2_xs.json
原版配置未修改。
模型名称:qwen3.8-flash-next-sc117-iq2_xs
服务端口:8080脚本使用:
dst.open("x", encoding="utf-8")因此,新配置已存在时不会直接覆盖。重复执行出现文件已存在错误,应先查看现有文件,而不是立即删除它。
这个检查只确认路径存在,并不进行文件哈希或模型语义兼容性验证。
7.2 实际改动清单
| 配置项 | SC117 使用的资源 |
|---|---|
--pack | SC117 独立 pack |
--native | SC117 第一个分片 |
--ple-gguf | SC117 第二个分片 |
--mtp | SC117 的 strata/rt |
tokenizer | SC117 pack 中的 tokenizer |
model_name | SC117 专用名称 |
log | SC117 独立日志路径 |
vision.model | SC117 第一个分片 |
保留不变的项目包括:
- 原版
expert-profile.bin。 - 原版
mmproj。 - 引擎程序和服务程序。
- GPU 编号与 CUDA 库路径。
- 端口 8080。
- 128k 上下文配置。
- KV、显存预留和已有调优参数。
- 2048-token 默认思考预算。
这里保留 expert profile 和 mmproj 的意义是尽量减少变量;本次成功运行不能证明它们对 SC117 最优。
八、完整 SC117 JSON,便于知识库留档
以下是根据本次原配置与替换规则得到的完整结构。已经执行自动生成脚本的读者,无需再次手动写入。
{
"exe": "/data/Strata/engine/strata",
"args": [
"--pack",
"/data/Strata-data/packs/sc117_iq2_xs",
"--native",
"/data/Strata-data/sc117/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf",
"--ple-gguf",
"/data/Strata-data/sc117/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00002-of-00002.gguf",
"--expert-profile",
"/data/Strata/data/expert-profile.bin",
"--expert-cache",
"auto",
"--prefill",
"auto",
"--spec",
"4",
"--mtp",
"/data/Strata-data/sc117/strata/rt",
"--max-context",
"131072",
"--kv",
"int8",
"--kv-resident",
"32768",
"--vision",
"--vram-reserve-mib",
"1500",
"--pcie-frac",
"0.00",
"--spec-min-p",
"0.70",
"--adapt-every",
"1",
"--adapt-swaps",
"80",
"--adapt-decay",
"0.97",
"--adapt-async",
"1"
],
"cwd": "/data/Strata",
"tokenizer": "/data/Strata-data/packs/sc117_iq2_xs/tokenizer",
"model_name": "qwen3.8-flash-next-sc117-iq2_xs",
"log": "/data/Strata/strata-sc117-iq2_xs.log",
"lib_dirs": [
"/usr/local/cuda/bin",
"/usr/local/cuda/lib64"
],
"port": 8080,
"gpu": 0,
"gpus_asked": true,
"reasoning_budget_tokens": 2048,
"vision": {
"exe": "/data/Strata/engine/strata-vision",
"mmproj": "/data/Strata-data/models/mmproj-Qwen3.8-Flash-Next-BF16.gguf",
"model": "/data/Strata-data/sc117/IQ2_XS/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ2_XS-00001-of-00002.gguf",
"gpu": true,
"max_tokens": 1024
}
}8.1 校验 JSON 语法
cd /data/Strata
./.venv/bin/python -m json.tool \
strata-sc117-iq2_xs.json >/dev/null \
&& echo "SC117 JSON 格式检查通过"本次实际输出:
SC117 JSON 格式检查通过语法检查通过只能说明 JSON 格式合法,不代表所有参数已经被引擎成功加载。
九、第四步:确认启动器,再创建独立入口
本次先读取原启动脚本:
cat /data/Strata/run-iq2_xs.sh实际内容:
#!/bin/sh
cd "/data/Strata"
exec "/data/Strata/.venv/bin/python" "/data/Strata/serve/server.py" "--engine" "strata" "--config" "/data/Strata/strata-iq2_xs.json" "--port" "8080" "--open"这一步很重要:JSON 是由 serve/server.py 读取的,不能在不知道调用方式的情况下,直接猜测引擎如何接收这个配置。
9.1 创建 SC117 启动脚本
cd /data/Strata
cat > run-sc117-iq2_xs.sh <<'SH'
#!/bin/sh
cd "/data/Strata" || exit 1
exec "/data/Strata/.venv/bin/python" "/data/Strata/serve/server.py" "--engine" "strata" "--config" "/data/Strata/strata-sc117-iq2_xs.json" "--port" "8080" "--open"
SH
chmod +x run-sc117-iq2_xs.sh此命令会写入 SC117 启动脚本;如果已经对这个新脚本做过自定义修改,应先备份。它不会修改原版 run-iq2_xs.sh。
9.2 启动 SC117
先停止正在使用 8080 的原版服务,再执行:
cd /data/Strata
./run-sc117-iq2_xs.sh不要同时运行两个都占用 8080 的实例。
十、第五步:检查启动日志
本次实际启动过程:
loading the vision encoder ...
loading the model (the first start takes a minute or two) ...
[strata] starting the engine: reading the model's weights ...
[strata] loading the experts into RAM (about 40 GB) and locking part of them for the GPU.
YOUR PC CAN BE SLOW OR STOP RESPONDING FOR 1-3 MINUTES NOW - this is normal.
Please wait and don't close this window; the browser opens when it is ready.
[strata] experts loaded: 33.02 GiB at 3.78 GiB/s (18 s so far)
[strata] filling the GPU's expert cache (660 experts, 0.90 GiB of VRAM) ...
[strata] almost ready ...
[strata] thinking budget: 2048 tokens (reasoning_budget_tokens; a request can set its own)
ready: http://127.0.0.1:8080/v1服务还报告:
OpenAI: /v1/chat/completions
Anthropic: /v1/messages
context 131072 tokens
images on浏览器聊天入口:
http://127.0.0.1:8080/10.1 重点关注哪些信息
| 日志信息 | 作用 |
|---|---|
experts loaded | 确认专家权重加载阶段完成 |
filling the GPU's expert cache | 查看当次专家缓存分配 |
thinking budget: 2048 tokens | 确认默认思考预算 |
ready | 确认服务进入可接收请求状态 |
context 131072 tokens | 确认服务声明的上下文配置 |
images on | 确认视觉入口开启 |
10.2 不要误读内存和显存数字
本次看到:
33.02 GiB这是专家权重加载日志中的数据,不是整个进程的总内存。
本次看到:
660 experts, 0.90 GiB of VRAM这是 GPU 专家缓存,不是整个服务只占 0.90 GiB 显存。
打包时的:
arena 1.43 GiB也不能直接等同于总显存。
这几个数字描述的是不同对象,不能互相替代。
十一、第六步:完成文本生成验证
本次两轮文本生成的结束日志分别为:
[strata] done: 393 tokens in 9 s (51.9 tok/s) (stop, cancel=False), expert cache 45.2% hit[strata] done: 604 tokens in 9 s (69.9 tok/s) (stop, cancel=False), expert cache 46.9% hit这两条日志确认:
- 服务能接收文本请求。
- 模型能完成思考与回答。
- 请求正常结束。
- 本次没有取消。
- 本次输出没有显示引擎崩溃。
但不能根据两次不同请求直接认定:
- 第二次一定因为缓存而变快。
- SC117 一定比原版更快。
- 当前参数就是最优参数。
- MTP 带来了某个确定百分比的提升。
这些结论都需要控制输入与设置后再测试。
十二、第七步:完成图片理解实测
12.1 本次测试任务
上传一张带中文文字的室内生活场景图,要求:
详细描述这张图片,然后给我文生图的提示词。图中包括:
- 左上“今天先 / 好好活下去”。
- 左下“老岩 / 梦行志”。
- 木桌上的白粥、蒸汽、水杯、银色电脑和笔记本。
- 左侧吉他。
- 窗边背对镜头的人物。
- 蓝灰窗帘和暖色光线。
12.2 本次模型完成了什么
模型输出分为:
- 图片详细描述。
- 中文文字识别。
- 光线与色调描述。
- 前景物体与背景人物描述。
- 构图及氛围分析。
- 英文文生图提示词。
- 中文文生图提示词。
- 可选风格词和负面提示词。
这说明测试已经从“视觉功能初始化”推进到“实际完成图片相关任务”。
12.3 本次视觉任务日志
[strata] reading the prompt: 768 of 1,089 tokens, 2 s so far
[strata] reading the prompt: 1,088 of 1,089 tokens, 3 s so far
...
[strata] thinking: 637 of budget 2048 (max 129975) tokens, 57.1 tok/s, 14 s
...
[strata] done: 1994 tokens in 37 s (58.8 tok/s) (stop, cancel=False), expert cache 42.2% hit记录结果:
| 项目 | 本次观察 |
|---|---|
| 提示词规模 | 1089 tokens |
| 提示词读取 | 约第 3 秒接近完成 |
| 最后一条思考进度 | 637 tokens |
| 输出总计 | 日志报告 1994 tokens |
| 日志总耗时 | 37 s |
| 引擎报告速度 | 58.8 tok/s |
| 专家缓存命中率 | 42.2% |
| 结束状态 | 正常结束,未取消 |
637 是最后打印出来的思考进度,不应写成经过精确测量的完整思考 token 总数。
12.4 图片理解并非完全准确
本次回答也出现了几个值得记录的小问题:
- 将圆角矩形桌描述成“圆桌”。
- 对笔记本线圈位置的描述不够准确。
- 中文写“大半杯水”,英文提示词却写
half-filled。 - 将部分并不锐利的吉他细节描述得过于清晰。
- 将“清晨”“35mm”“f/2.8”等推断或创作参数混入提示词。
这不是部署失败,而是模型输出质量层面的限制。
知识库中应分别记录:
工程验证:服务是否能正常完成图片任务?
内容验证:描述是否忠实于原图?前者在本次已通过,后者仍需人工复核。
12.5 更适合后续复测的提示词
以下是针对这次观察整理的复测模板,不是本次已经执行过的新测试:
请根据图片完成以下任务:
一、客观描述
只描述图片中实际可见的内容,包括文字、物体、位置关系、
前后景、颜色、光线和构图。
二、不确定信息
将无法确认的内容单独列出。
不要把人物性别、具体时间、镜头焦段、光圈或作者身份
当成已经确定的事实。
三、中文文字识别
逐行抄录图片中文字;看不清的字注明不确定。
四、文生图提示词
分别提供中文和英文版本。
保持物体数量、桌面形状、空间关系、画幅比例和原图一致。
将“无文字画面提示词”和“文字排版要求”分开。这个模板便于区分模型的观察、推断和创作扩展。
十三、浏览器出现“断开的管道”,是否需要重装
本次启动浏览器时出现:
Failed sending zygote boot message: 断开的管道 (32)
write: 断开的管道 (32)但后续发生了:
- 服务读取提示词。
- 进入思考。
- 输出回答。
- 两轮文本请求正常结束。
- 图片任务也正常结束。
因此,本次记录只能支持:
这两行浏览器相关错误没有阻断本次模型服务与生成任务。不能扩大成:
所有断开的管道错误都可以忽略。排查时要看错误发生在哪个进程、服务是否退出,以及请求是否实际失败,不要只看到 ERROR 就重新打包模型。
十四、常见问题与本次避坑记录
14.1 只修改主模型路径,够不够
本文的部署方式不只修改主模型路径,而是同时更新:
--pack
--native
--ple-gguf
--mtp
tokenizer
vision.model
model_name
log这样能避免配置里一部分是原版、一部分是 SC117,而自己没有意识到。
14.2 MTP 的四个文件是不是主模型 pack
不是。
本次使用的是两个不同目录:
主模型 pack:
/data/Strata-data/packs/sc117_iq2_xs
MTP 运行时:
/data/Strata-data/sc117/strata/rt不要相互替代。
14.3 还需要把 mtp-q2_0.gguf 写进配置吗
本次成功配置中没有这样做。
--mtp 指向:
/data/Strata-data/sc117/strata/rt因此,本文复现路线不要求把中间 MTP GGUF 写入配置。
14.4 为什么还保留原版 expert-profile.bin
本次采用最小改动策略,原配置已经使用该文件,因此保留。
这只说明当前组合能够运行,不证明它是 SC117 最优的专家缓存初始化方案。
14.5 为什么不重新校准所有参数
为了先建立一个可工作的 SC117 基线。
此前原环境已经记录了调优过程,本次先保留调优参数,避免把“换模型”和“重新调参”混在一起。
后续若要优化,应在可复现测试下逐项修改,而不是同时改多个参数后凭体感判断。
14.6 为什么 JSON 检查通过,仍要看启动日志
因为两者验证范围不同:
| 验证阶段 | 能确认什么 |
|---|---|
| 文件路径检查 | 目标路径存在 |
| JSON 语法检查 | 配置格式合法 |
ready | 服务完成启动 |
| 文本请求完成 | 文本推理链路可用 |
| 图片请求完成 | 图片相关链路实际完成任务 |
| 长上下文压力测试 | 才能验证相应长度下的运行表现 |
不要跳过中间层级直接下结论。
14.7 58.8 tok/s 为什么不等于 1994 ÷ 37
引擎报告的速度与日志中整数秒总耗时不是同一个可直接互算的指标口径。
本文保留原始字段,不自行替换为“端到端速度”。这段日志没有给出完整计时实现,也没有单列视觉编码耗时,因此不进一步推测精确公式。
十五、日常使用与切回原版
15.1 启动 SC117
cd /data/Strata
./run-sc117-iq2_xs.sh15.2 停止 SC117
在运行该服务的终端中按:
Ctrl+C等待停止完成。
15.3 启动原版
cd /data/Strata
./run-iq2_xs.sh两套入口:
| 模型 | 配置 | 启动脚本 |
|---|---|---|
| 原版 | strata-iq2_xs.json | run-iq2_xs.sh |
| SC117 | strata-sc117-iq2_xs.json | run-sc117-iq2_xs.sh |
两者仍使用 8080,因此本文采用顺序切换,不是同时运行。
15.4 日志检查
新配置中指定的日志路径:
/data/Strata/strata-sc117-iq2_xs.log文件已经生成时,可以查看:
tail -n 100 /data/Strata/strata-sc117-iq2_xs.log持续观察:
tail -f /data/Strata/strata-sc117-iq2_xs.log如果该文件没有出现,先以启动终端输出为准,不能仅凭 JSON 中存在 log 字段就认定日志已成功写入。
十六、哪些结论尚未验证
为了避免知识库把一次成功运行写成全面评测,以下项目明确留作后续工作:
| 项目 | 当前状态 |
|---|---|
| SC117 文本生成 | 已完成两次实际请求 |
| SC117 单图描述与提示词生成 | 已完成一次实际请求 |
| 原视觉投影器与本次 SC117 的组合 | 已在这一次图片任务中运行成功 |
| 实际接近 128k 的输入 | 未完成压力测试 |
| 多图输入 | 未验证 |
| 扫描文档、小字 OCR | 未系统验证 |
| MTP 草稿接受率 | 日志未提供 |
| MTP 开关的对照收益 | 未测试 |
| SC117 与原版同输入性能对比 | 未测试 |
| SC117 长时间连续运行 | 未系统验证 |
| 拒答行为变化、能力变化 | 未在本文测试 |
| 当前 expert profile 是否最优 | 未验证 |
仓库名中的 abliterated 不能替代实测,本文也不据此宣称“完全不拒答”“能力一定提升”或“速度必然更快”。
十七、部署验收清单
完成后,逐项核对:
- SC117 两个 GGUF 分片均已保存。
- MTP 四个文件位于同一个
strata/rt目录。 - SC117 native pack 已独立生成。
- tokenizer 路径指向 SC117 pack。
- 原版 JSON 未被覆盖。
- SC117 JSON 语法检查通过。
--native与--ple-gguf分别对应 SC117 两个分片。--mtp指向 SC117 运行时目录。vision.model已改为 SC117 第一个分片。- 原版启动脚本保留。
- SC117 启动脚本引用正确 JSON。
- 启动后出现
ready。 - 服务声明上下文为 131072 tokens。
- 至少一个文本请求正常结束。
- 至少一个图片请求正常结束。
- 性能记录保留原始日志口径。
- 未将 128k 配置等同于 128k 压力测试通过。
- 未将 MTP 配置存在等同于已测得加速收益。
这次部署最值得保留的,不只是一条启动命令,而是一条可以重复检查的证据链:资源准备 → 独立打包 → 配置生成 → 语法校验 → 服务启动 → 文本请求 → 图片任务。每一步都有明确输入、输出和验证边界,后续升级或排错时才能知道问题发生在哪一层。
梦行志