《0.8MB 跑通 Qwen:从零实现 ARM 零依赖纯 C 推理引擎》系列教程 · 总纲

简介: 本系列教程以开源引擎Kestrel为教材,30天90篇纯C实战,聚焦ARM边缘端LLM推理:从零实现mmap加载、NEON加速GEMM、q8 KV缓存、稀疏注意力、磁盘KV恢复、推测解码、OpenAI兼容服务及国密SM2/3/4全栈安全,全程代码驱动、调试验证。(239字)

《0.8MB 跑通 Qwen:从零实现 ARM 零依赖纯 C 推理引擎》系列教程 · 总纲

教学主线:Kestrel(vllm_kestrel)开源引擎(https://gitee.com/pei-xiaoguang/kestrel-llm)
教学法:知识点 → 对应源码 → 改动后果 → 学员动手调试(每章末引导下一章)
发布节奏:30 天 × 每天 3 篇 = 90 篇(平台按天连发,配套引流)
本文件是全部 90 篇的索引大纲;成稿时按此表逐篇展开为可发布文章。


0. 总则

0.1 定位与引流目标

  • 以开源代码为教材,不做泛泛的"手写 LLM"空谈:每篇知识点的"答案"都在本仓库某个 .c/.h/tools 里,学员跟着读、改、跑。
  • 引流动作(每篇固定收尾,复用同一模板):
    1. 本篇讲到的源码文件/函数一句话点名;
    2. 仓库链接 + "本系列所有代码已开源(AGPL-3.0-or-later 或商业许可,二选一)";
    3. 下一章预告一句(见每篇"承接")。
  • 诚实基调:不吹"从零造出 2B 模型",主线是"在边缘 ARM 上把 LLM 跑起来要解决哪些工程问题",开源仓库就是答案集。

0.2 每篇四段式结构(成稿模板)

  1. 知识点(先讲):概念/原理,尽量用图表与类比,控制在全文 40%;
  2. 对应代码:指出文件 + 函数/结构体/宏锚点,贴关键片段并逐行讲;
  3. 改动后果(先演示再总结):给一个"如果改错会怎样"的真实实验(多数为:编译期断言、KAT 失败、性能劣化、验签失败四类);
  4. 学员调试:留 1 个明确任务(在开源代码里加断点/改参数/跑自检),给出预期输出,便于自查。

0.3 环境(学员侧两档)

  • A 档(推荐,动手):RK3588 或任意 aarch64 Linux。板端流程:git clone → ./build_rk3588.sh → --test-l3 自检通过即环境 OK(Day 1 教)。
  • B 档(无板,纯读):x86 可交叉编译看构建链路,但 NEON 热路径与 serve 需 aarch64;B 档学员以源码精读 + 布局/格式实验为主,文章会标注"仅 A 档可跑"的实验。
  • 调试三件套贯穿全系列:gdb 断点、板端 ASan 构建(-fsanitize=address,复现命令见仓库技术文档 §3.2)、--test-l3/--bench-mixed 确定性自检门。

0.4 主线代码文件索引(90 篇锚点速查)

模块 锚点文件
构建/平台 CMakeLists.txt、build_rk3588.sh、cmake/toolchain-aarch64-rk3588.cmake、include/common/vllm_platform.h、vllm_device.c/.h
入口 src/main.c(参数分发/自检入口;vllm_kestrel_init/forward/generate/cleanup 生命周期)
线程池 include/core/vllm_tp.h、src/core/vllm_tp.c(vllm_tp_parfor 等)
GEMM/量化 src/model/vllm_safetensors.c(gemm_q8_0_8x8_neon 等热路径)、src/core/vllm_matmul.c、vllm_gguf.c、tools/llama_gemm_q4_0_4x4_asm.c
注意力/KV src/core/vllm_attention.c、vllm_transformer.c、vllm_scheduler.c、vllm_superpos.c、vllm_l3.c(sparse_attn_head、flash_attn_single_q_q8_neon)
权重格式 include/model/vqf_format.h(布局守卫 _Static_assert)、src/model/vqf.c(vqf_write/vqf_load/vqf_emit_enc)
分词/视觉/媒体 vllm_tokenizer_qwen.c、vllm_vision.c、vllm_media.c、src/media/(H.264 独立模块)
服务 src/serve/:vllm_http.c、vllm_server.c、vllm_batch.c、vllm_admin.c、embedded_web.c、admin/chat/convert.html
国密/安全 src/common/vllm_crypto.c(vc_sm3/vc_sm4/vc_sm2、KAT)、tools/vllm_vqf_sign.c、src/serve/vllm_attest.c、tools/verify_attest.py
工具/运维 tools/:gen_embedded_web.py、build_vocab_bin.py、extract_llama_asm.py、vllm_mgr.py、vllm_client.py

1. 90 篇逐篇大纲(30 天 × 3)

阶段一 · 地基与工程(Day 1–8)

Day 1 · 开场与工具链

  • 1-1《为什么有人要"手搓"推理引擎》(repo 亮点表导读;"800KB/2 秒冷启动"是怎么被逼出来的)→ 承接:那这些数字怎么验?→ 1-2
  • 1-2《ARM 工具链:原生编译与交叉编译,选哪个》锚点:build_rk3588.sh、CMakeLists.txt、vllm_platform.h;改动后果实验:把 -march=armv8.2-a+dotprod+fp16 去掉/改错 → vdotq_laneq_s32 编译报错(真实踩坑);学员任务:板端或 aarch64 容器跑通 ./build_rk3588.sh → 承接:编译过了,怎么知道对不对?→ 1-3
  • 1-3《自检门:PASS/FAIL 的确定性测试思想》锚点:main.c 自检分发、--test-l3、参考对拍实现;实验:篡改一个量化常量 → FAIL(红线演示);任务:跑通 --test-l3 并读全部分段 → 承接:对拍要可复现,先学"把数据按位摆对" → Day 2

Day 2 · C11 工程与整型纪律

  • 2-1《_Static_assert:让编译器守卫你的内存布局》锚点:vqf_format.h 中 VQFSig=200B/VQFHeader=432B/VQFTensor=64B 守卫;实验:把任一字段改大 1 字节 → 编译期报错"layout drift";承接:为什么布局不能漂?→ mmap 直挂,Day 3
  • 2-2《平台层:vllm_platform.h 在守护什么》锚点:平台宏、aarch64 约束与 x86 研究对照;改动后果:把非 aarch64 编译报错放开 → 后续 NEON 代码全线崩;承接:平台之下是设备画像 → 2-3
  • 2-3《设备画像 vllm_device.c:识别 RK3588 而非"猜"》锚点:设备名/核心数/内存画像;实验:伪造 CPU 名跑自检观察回退;任务:读懂自己的板被识别成什么 → 承接:识别完设备,数据怎么进内存?→ Day 3

Day 3 · 内存与文件

  • 3-1《mmap 直挂:为什么加载可以只要 1.2 秒》锚点:vqf.c vqf_load;改动后果实验:把 mmap 换成 malloc+fread 全量读 → 冷启动从 2s 涨到多少(真实计时)?承接:映射进来的是字节,格式错一比特就全错 → 3-2
  • 3-2《字节序与十六进制纪律》锚点:vqf_format.h 数值字段、safetensors 头解析(vllm_safetensors.c);实验:手改一个 u32 字段的字节序 → 引擎拒绝加载/数值爆炸;任务:用 xxd 对照解析一个真实 .vqf 头;承接:解析出来的是张量,张量要喂给 GEMM → Day 4
  • 3-3《自研 util:不引第三方也能活》锚点:vllm_util.h、vllm_utf8_utils.h;阅读任务:找 3 个你会在别的项目里"引库"的地方看它怎么自己写 → 承接:要跑得快还得有人并行 → Day 4

Day 4 · 线程池 vllm_tp

  • 4-1《为什么换掉 OpenMP:线程唤醒与亲和》知识点:并行区间分发成本、A76/A55 大小核;锚点:vllm_tp.h API 与注释;承接:接口长啥样?→ 4-2
  • 4-2《vllm_tp_parfor:spin-then-event + 调用线程参与》锚点:vllm_tp.c;断点任务:在 worker 等待处断下,观察调用线程也干活;改动后果:把"调用线程参与"注释掉 → 尾波延迟变长;承接:线程把活分了,活是什么?→ Day 5 GEMM
  • 4-3《核绑定实验:为什么"勿设 8 线程"》锚点:线程绑定代码、文档 §11.4;实验:VLLM_THREADS=8 跑 bench → A55 拖累现象(复现文档结论);任务:找出你板子的最佳线程数 → 承接:并行准备好了,该学"数怎么存才能少读内存" → Day 5

Day 5 · 量化地基

  • 5-1《为什么必须 Q4/Q8:边缘推理的带宽瓶颈》锚点:文档、safetensors 量化 flags;承接:量化是个"值 + 标定"问题 → 5-2
  • 5-2《Q8 对称量化:scale 从哪来》锚点:vllm_safetensors.c 量化/反量化路径;改动后果:把 scale 存成 int 丢精度 → 输出漂移;承接:量化完的矩阵要靠点积算 → 5-3
  • 5-3《参考实现对拍:naive C vs 手写内核》锚点:--bench-mixed 与对拍函数、rel err 输出;任务:读 rel err 数量级,理解 1e-7 意味着什么 → 承接:对拍过了,想更快只能上 NEON → Day 6

Day 6 · NEON 手写 GEMM

  • 6-1《ARMv8.2 dotprod:vdotq_s32 一条指令做 4 个点积》锚点:gemm_q8_0_8x8_neon(vllm_safetensors.c);对照实验:用 C 循环版替代 dotprod → 慢几倍(计时);承接:指令好了,数据要喂对 → 6-2
  • 6-2《8x8 布局重排:把"取数"提前到转换期》锚点:权重 repack 代码;改动后果:跳过 repack 直接跑 → 内存随机访问拖垮带宽;承接:x86 侧有更狠的 4x4 → 6-3
  • 6-3《4x4 asm 内核:从 llama.cpp 提取的 MIT 代码》锚点:tools/extract_llama_asm.py、llama_gemm_q4_0_4x4_asm.c、文件头署名;知识点:提取第三方代码的工程伦理与许可边界;任务:读提取脚本,理解"为什么只取这一小段" → 承接:矩阵会算了,两种精度怎么混用 → Day 7

Day 7 · Q4 与混合精度

  • 7-1《Q4_0 格式:与 GGUF 对齐的 4bit 布局》锚点:vllm_gguf.c 反量化路径、GGUF Q4_0 读取;承接:模型里有 Q4 也有 Q8 → 7-2
  • 7-2《混合精度路由:flags=0x3 决定谁用 Q8》锚点:batched QKV/gate+up/down+res 内核、--bench-mixed 分档;实验:把某层 flags 改掉 → bench 分档读数变化、精度变化;承接:快不快还要看线程是否预热 → 7-3
  • 7-3《预热与测量抖动》锚点:VLLM_Q8_8X8、预热函数、--bench-mixed 稳定读数方法;任务:同一 bench 连跑 3 次取中位(复现报告口径)→ 承接:矩阵算完要进注意力 → Day 8

Day 8 · 注意力与 KV 入门

  • 8-1《自注意力数学:Q·K^T / softmax / V》锚点:vllm_attention.c、vllm_transformer.c 前向;承接:softmax 是数值危险区 → 8-2
  • 8-2《在线 softmax:为什么不能先算完 e^x 再除》锚点:flash/online 参考实现;改动后果:用朴素两步 softmax → 大上下文数值漂移/NaN;承接:算注意力得先有"记忆" → 8-3
  • 8-3《KV 缓存结构:按 token 还是按头存》锚点:vllm_scheduler.c 分配、KV 布局;画图任务:手画 2 头 4 token 的内存布局并标出访存顺序 → 承接:KV 存 f16 太贵 → Day 9 q8 KV

阶段二 · 推理内核深潜(Day 9–16)

Day 9 · q8 KV 与单查询路径

  • 9-1《KV 也量化:q8 KV 省一半以上带宽》锚点:q8 KV 结构;承接:decode 每词只取一个 q → 9-2
  • 9-2《flash_attn_single_q_q8_neon:单 q 单遍扫全 KV》锚点:该函数逐段导读(量化 q、在线 rescale、累加);承接:为什么它能"恒定单遍"→ 9-3
  • 9-3《q8 KV 精度对照实验》任务:用对拍看 q8 KV 与 fp32 输出差多少(文档口径验证);承接:扫全量还是太贵,能不能不扫全部 → Day 10 稀疏

Day 10 · 稀疏注意力

  • 10-1《长上下文为什么必须稀疏:O(n²) vs O(n·k)》锚点:sparse 开关与文档 §;承接:怎么选"该看的块"→ 10-2
  • 10-2《sparse top-k 块选择:sparse_attn_head 的实现》锚点:sparse_attn_head、--sparse-k 参数;改动后果:sparse-k 设成 1 → 输出质量肉眼可见劣化;承接:稀疏有代价 → 10-3
  • 10-3《诚实的坑:哪些场景稀疏无收益/负优化》锚点:优化配置与边界说明文档;实验:短上下文(<1K)开/关稀疏对比读数;任务:找出你自己场景该不该开 → 承接:但更常见的是多轮对话的重复计算 → Day 11

Day 11 · 前缀复用

  • 11-1《多轮对话的浪费:前一轮的 prefill 全白算》知识点:TTFT 组成;锚点:prefix-KV 复用路径(默认开);承接:复用什么、怎么比 → 11-2
  • 11-2《前缀缓存键:怎么知道"一样"》锚点:缓存匹配代码、--no-prefix-kv 关闭实验;实验:第二轮 29 token 增量,同进程 TTFT 2.0s vs 6.63s(复现 3.3×);承接:进程内缓存,进程一崩就没了 → 12
  • 11-3《缓存的一生:内存、容量与淘汰》锚点:admin 状态页/内存统计;任务:跑两轮看内存里缓存涨跌 → 承接:要扛重启只能上磁盘 → Day 12

Day 12 · 磁盘 KV(L3)

  • 12-1《跨进程恢复:设备重启后会话还在》锚点:--disk-kv、vllm_superpos.c/vllm_l3.c 分层;改动后果:把磁盘 KV 目录设成只读 → 恢复失败路径观察;承接:落盘要定格式 → 12-2
  • 12-2《L3 快照格式与 mmap 落盘》锚点:L3 文件布局、DISKKV_MAX_TOKENS(8192) 钳制;实验:--disk-kv 跑一次看目录产物与 1.87GB 快照的来历;承接:存下来要能"接回去" → 12-3
  • 12-3《复现 13.1×:跨进程恢复实测怎么做》锚点:基准报告附录口径(15.4s vs 202s);任务:按附录自己复现一次;承接:单请求恢复了,生成还能更快吗 → Day 13

Day 13 · 推测解码

  • 13-1《decode 为什么慢:逐词、带宽、不可并行》锚点:generate 主循环;承接:能不能"赌"几个词 → 13-2
  • 13-2《草稿 + 验证:spec decode 的实现》锚点:--spec/--spec-k 4 对应路径(草稿、批量验证、接受/回退);改动后果:spec-k=0(关)对比速度;承接:赌错要能回退 → 13-3
  • 13-3《回退与收益边界》任务:在不同模型/温度下对比开关 spec 的吞吐与文本一致性;承接:单个请求能省,一堆请求呢 → Day 14 批处理

Day 14 · 批处理与调度

  • 14-1《连续批处理:iteration-level 调度思想》锚点:vllm_batch.c 线程模型;承接:批处理线程怎么和 HTTP 协作 → 14-2
  • 14-2《单 SSE 流与串行队列:引擎的"单机守则"》锚点:serve 线程模型、文档 §2.2;改动后果实验:把 HTTP worker 与推理并发乱配 → 线程模型图重画;承接:调度之上是主循环 → Day 15
  • 14-3《批处理正确性边界:文档里那句 margin 0.71 vs 0.032》锚点:诚实边界文档;阅读任务:理解"批量位级一致性不是普遍保证"为何诚实 → 承接:绕回主线,看入口怎么把这一切串起来 → Day 15

Day 15 · main.c 与引擎生命周期

  • 15-1《入口架构:参数 → 分发(serve/convert/自检)→ 退出》锚点:main.c 解析与分支;任务:gdb 打断点在 vllm_kestrel_init,看初始化顺序;承接:生命周期函数定了,核心循环在哪 → 15-2
  • 15-2《prefill 与 decode:两条路径为何分开》锚点:前向函数 prefill/decode 分支、batch;承接:路径分开,缓存怎么对齐 → 15-3
  • 15-3《单步走一次生成》断点任务:从 vllm_kestrel_generate 进到一次 decode,逐行看 token 循环、KV 追加;承接:跑通了整个生成,回头看权重格式本身 → Day 16

Day 16 · VQF 格式深潜 I:布局

  • 16-1《VQF 的野心:把量化与布局固化到文件》锚点:vqf_format.h 全文导读(页对齐 4096、dir_off=448);承接:一个头 432B,里面都放了啥 → 16-2
  • 16-2《逐字段解剖:VQFHeader/VQFSig/VQFTensor》锚点:结构体逐字段 + _Static_assert;实验:xxd dump 真实 .vqf 对照每个字段的十六进制;承接:字段摆好了,tensor 数据怎么编排 → 16-3
  • 16-3《tensor 目录与布局重排的落盘顺序》锚点:VQFTensor 64B、数据区顺序;任务:写 10 行 Python 解析 .vqf 头并打印 tensor 目录(零依赖)→ 承接:文件是读的,那文件是怎么写出来的 → Day 17

阶段三 · 数据面与服务化(Day 17–23)

Day 17 · VQF 深潜 II:转换路径

  • 17-1《safetensors → VQF:vqf_write 一次成型》锚点:vqf.c vqf_write、vllm_safetensors.c 量化;承接:转换与推理为何共用量化代码 → 17-2
  • 17-2《GGUF → VQF:Q4_0…Q8_K 反量化再量化》锚点:vllm_gguf.c、--convert-gguf;实验:同一权重走两条转换路,位级对拍;承接:位级一致是红线,也是教程的核心道具 → 17-3
  • 17-3《位级一致性实验:两次转换产物逐字节比对》任务:cmp/sha256 两个 .vqf 关键区;承接:权重进内存了,文本怎么变成 token → Day 18

Day 18 · 分词器与 mrope

  • 18-1《BPE 入门与 tokenizer.json》锚点:vllm_tokenizer_qwen.c 接口;承接:json 太慢,项目怎么处理 → 18-2
  • 18-2《tokenizer.json → vocab.bin:build_vocab_bin.py 在干嘛》锚点:tools/build_vocab_bin.py;实验:跑一次生成 vocab.bin,对照字节解码修复点;承接:Qwen 的特殊点:mrope → 18-3
  • 18-3《mrope:3D 位置编码给视觉的席位》锚点:mrope 计算代码;改动后果:把 mrope 维度改回 1D → 多模态输出错乱;任务:断点看位置编码注入 → 承接:图像 token 从哪来 → Day 19

Day 19 · 多模态:视觉塔

  • 19-1《ViT 编码:图片 → 视觉 token》锚点:vllm_vision.c、DeepStack/Merger;承接:图片预处理在哪里做 → 19-2
  • 19-2《vision_tokens 客户端预编码协议》锚点:vllm_server 多模态 prompt 构建、文档;实验:抓一次带图请求的协议体;承接:静态图会了,视频呢 → 19-3
  • 19-3《视频帧与媒体模块(默认不启用的 H.264)》锚点:vllm_media.c、src/media/(独立模块、默认构建不启用);阅读任务:理解"独立模块 + 默认不启用"的工程取舍 → 承接:数据全就位了,该对外服务了 → Day 20

Day 20 · 自研 HTTP

  • 20-1《极简 HTTP:socket/bind/select 轮询》锚点:vllm_http.c;任务:curl 一个 /health 抓 TCP 时序;承接:请求来了怎么分流 → 20-2
  • 20-2《路由与自研最小 JSON》锚点:vllm_server.c 路由表、JSON 解析器;改动后果:把某个 JSON 字段名改掉 → 兼容性断裂实验;承接:对话要流式输出 → 20-3
  • 20-3《SSE 流式:响应怎么写一半就发给客户端》锚点:SSE 事件格式;实验:curl -N 观察 token 一个个到;承接:传输层会了,业务层怎么组织 → Day 21

Day 21 · OpenAI 兼容服务层

  • 21-1《/v1/chat/completions:兼容协议的最小面》锚点:请求字段 → 引擎内部参数的映射(对照 OpenAI 文档);承接:模型字段与 system/角色 → 21-2
  • 21-2《对话模板与角色注入》锚点:prompt 构建代码;改动后果:模板换行符/分隔符改错 → 输出格式崩(经典事故);承接:工程层还有三个管理页 → 21-3
  • 21-3《内嵌 HTML:gen_embedded_web.py 怎么把页面塞进二进制》锚点:tools/gen_embedded_web.py、embedded_web.c 生成物;任务:改一句 admin.html 再重新生成 → 承接:页面功能对应 admin API → Day 22

Day 22 · 管理面与守护

  • 22-1《chat.html:前端如何消费 SSE》锚点:chat.html 的 fetch/EventSource 逻辑;任务:浏览器 DevTools 抓流式帧 → 承接:管理状态从哪来 → 22-2
  • 22-2《/admin API:状态、配置、加载、转换》锚点:vllm_admin.c 路由;实验:curl admin 接口读状态 JSON → 承接:服务得有人看着 → 22-3
  • 22-3《vllm_mgr.py:进程守护与看门狗》锚点:tools/vllm_mgr.py(start/stop/restart/状态页);运维实验:kill 引擎进程看守护拉起、观察"进程名精确匹配"的坑;承接:跑起来的引擎该做性能分析了 → Day 28(先到安全线 Day 23 前插?不,保持顺序:Day 23 安全筑基)

注:原计划 Day 23–27 为安全/国密专题,位于服务化之后、性能方法论之前,顺序合理(引擎已可跑、再谈"跑得可信",最后"跑得快")。

Day 23 · 国密 SM3

  • 23-1《国密标准与 KAT 红线:先有答案再写实现》锚点:vllm_crypto.c 自检(KAT 向量)、文档 §4;知识点:GM/T 0004、标准向量为何是"红线";承接:SM3 长啥样 → 23-2
  • 23-2《SM3 实现导读:填充、消息扩展、压缩轮》锚点:vc_sm3 逐段;承接:摘要不能防篡改 → 23-3
  • 23-3《篡改实验:改一个压缩常量看 KAT 崩》任务:把某个 IV/常量改 1,重跑自检 → FAIL 输出(红线价值可视化);承接:摘要之外要对称加密 → Day 24

Day 24 · SM4 与 VQF-Enc

  • 24-1《SM4-CTR:流式加密为什么选 CTR》锚点:vc_sm4 CTR 实现、文档;承接:加密只防偷看,防篡改要靠 → 24-2
  • 24-2《HMAC-SM3:密文 + tag 的原子认证》锚点:HMAC 实现与覆盖区间(引擎 vqf.c 中 tag 计算段);改动后果:只校验部分字节 → 篡改漏网演示;承接:加密密文存哪、何时解密 → 24-3
  • 24-3《VQF-Enc 单遍解密:mprotect + MAP_PRIVATE 写时复制》锚点:vqf.c vqf_emit_enc/vqf_load 解密路径(92s 成本口径);实验:加密 VQF 加载计时(明文 vs 密文);承接:加密挡住"拷走",挡不住"掉包" → Day 25

Day 25 · 公钥 SM2

  • 25-1《椭圆曲线公钥密码与 GM/T 0003 的 ZA/ID》锚点:vc_sm2、ID_A 约定("vllm-shs-vqf" 为何不能改:Z_A 参与签名);改动后果:改 ID → 旧签名全部验签失败;承接:签名怎么签 → 25-2
  • 25-2《工具链实操:vllm_vqf_sign.c 的 genkey/sign/verify》锚点:tools/vllm_vqf_sign.c;任务:生成密钥对 → 签名 → 验签闭环跑通;承接:k 必须随机 → 25-3
  • 25-3《随机源纪律:内核 CSPRNG 与 k 复用灾难》锚点:随机数获取(vc_secure_rand/getrandom);知识点:k 复用 → 私钥可解的经典攻击(讲原理,不演示);任务:读代码确认每个签名都重新取随机 → 承接:工具会用了,引擎怎么接入 → Day 26

Day 26 · 供应链签名接入

  • 26-1《信任根与验签闭环:发布方 → 设备》锚点:vqf_load 验签、VLLM_VQF_SIGN_PUB/VLLM_VQF_VERIFY 语义;承接:验的是什么 → 26-2
  • 26-2《签名覆盖分析:明文摘要 D 与 sig 回填按 0 参与》锚点:vqf_format.h 覆盖区间、vqf.c 回填逻辑;改动后果:把文件任意改 1 字节 → 加载被拒(亲手做掉包攻击);承接:验签过了怎么自证 → Day 27
  • 26-3《VQF v2 布局再回首:加密 + 签名如何共存不打架》锚点:vqf_format.h 432B 全图;画图任务:画"头/加密区/签名区/目录"总装图 → 承接:权重可信了,输出可信吗 → Day 27

Day 27 · 可验证推理(attestation)

  • 27-1《三问三防:权重、记录、出处》锚点:可验证推理方案文档、vllm_attest.c schema=3;承接:要把什么绑进摘要 → 27-2
  • 27-2《出证帧规范:body_sha 与输出文本的字节绑定》锚点:vllm_attest.c 帧序列(F(x)=len||x);改动后果:响应改一个字 → 离线验签 FAIL;承接:凭证怎么验 → 27-3
  • 27-3《端到端取证:打开 VLLM_ATTEST=1 → 收证 → verify_attest.py 离线验签》锚点:tools/verify_attest.py;任务:跑完整流程并截图 PASS;承接:引擎可信又可跑,该证明它快了 → Day 28

阶段四 · 性能、工程与结营(Day 28–30)

Day 28 · 性能方法论

  • 28-1《基准设计:同机串行、口径先行》锚点:基准报告附录(为什么"只报自己"是诚实);承接:看报告前先学会插桩 → 28-2
  • 28-2《分析工具:引擎日志时间戳、--perf-partA、--bench-users》锚点:perf 参数与日志分段;任务:跑一次 8K 长上下文拆解 prefill/decode;承接:数字出来要能复现 → 28-3
  • 28-3《复现核心三表:冷启动 / decode / KV 恢复》任务:按报告口径自己复现 2.0s、3.0×、13.1×(任一即可)→ 承接:跑得快也要能交付 → Day 29

Day 29 · 发布与工程化

  • 29-1《代码/文档/许可:AGPL 双许可为什么不是 source-available》锚点:LICENSE、LICENSING.md;知识点:copyleft 与源码可得的边界、为什么商业用途免费而闭源集成才要授权(引流合规课);承接:代码之外还有平台化 → 29-2
  • 29-2《ARM 通用 vs RK3588 画像:换板怎么验证》锚点:vllm_device.c、构建节平台约束(先自检再下结论的方法论);任务:若你手头不是 RK3588,完成一次换板自检报告 → 承接:交付前最后一道 → 29-3
  • 29-3《内存安全实践:复现 ASan 零错误》锚点:技术文档 §3.2 的 -fsanitize=address 复现命令;任务:板端 ASan 构建跑 --test-l3 看 0 报告;承接:你已具备读全套代码的能力 → Day 30

Day 30 · 收尾与引流

  • 30-1《文章矩阵:技术拆解 / 爆款文 / 本系列如何互相引用》锚点:仓库 README 内容导航;知识点:开源引流的"三层漏斗";承接:学了 30 天,去哪交流 → 30-2
  • 30-2《贡献指南:Issues、复现数据、如何报告你发现的坑》锚点:README 联系区、docs 文档清单;任务:提交第一条 Issue(复现日志或改进建议);承接:还有一个彩蛋 → 30-3
  • 30-3《结营:30 天之外——同态加密内核与论文预告》锚点:src/core/vllm_ckks.c(RNS-CKKS 研究内核,README 有述);诚实收尾:复述"30 天口径"(核心开发周期 vs 前期研究积累);CTA:仓库 Star/Issues/邮箱(398152090@qq.com)+ 双许可申明

相关文章
|
12天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
7950 15
|
11天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1753 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
11天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
1800 12
|
9天前
|
人工智能 编解码 并行计算
MiniMax-H3 一键整合包技术文档:8G 显存运行 AI 漫剧制作 —— 角色替换 / 动作迁移 / 文图生视频部署与调参指南
MiniMax H3 是 MiniMax 开源的全模态视频生成模型,支持文/图/音/视多条件输入,输出最高2K、15秒带双声道音频视频。本文档详述其Int8量化版在8GB显存下的本地一键部署、三段式工作流(EDIT/REPLACE/CONTINUE)、参数调优及常见问题排查。(239字)
|
25天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3800 10
|
19天前
|
缓存 IDE Java
【保姆级】Android Studio下载、安装和汉化教程(2026最新)
Android Studio 是 Google 官方推出的免费 Android 应用开发集成环境,基于 IntelliJ IDEA,内置模拟器、调试器、性能分析及 Compose 界面工具,功能全面,文档丰富,是安卓开发首选工具。(239字)
2029 1

热门文章

最新文章