一门"把开源代码当教材"的连载课:每天 3 篇,30 天带你读通、改懂、跑熟一个真正在 RK3588 上 2 秒冷启动的纯 C11 推理引擎------Kestrel(vllm_kestrel) 。全部代码已开放:https://gitee.com/pei-xiaoguang/kestrel-llm
1. 这门课是什么,不是什么
是:一份可以"对着源码逐行验证"的工程教材。每个知识点后面都跟着仓库里真实存在的代码、可复现的"改动后果"实验、以及给你留的调试任务。
不是:又一篇"三小时从零写大模型"的标题党。推理引擎是个系统工程,我们把它拆成 30 天可消化的台阶,答案都在开源仓库里,你跟着读、改、跑。
课程主线用的引擎 vllm_kestrel 有这些"先验"特征(也都是后面 90 篇文章会逐一拆解的问题):
- 28 个 C 文件、单可执行文件,Release 产物约 0.8 MB(板端实测 818,872 B);
- RK3588(aarch64)板端冷启动约 2 秒(spawn→HTTP ready 实测 2.01 s);
- 零第三方运行时依赖:NEON 量化 GEMM、线程池、HTTP、国密 SM3/SM4/SM2 全部自研;
- 跑 Qwen3-VL 2B/8B 纯文本与图片/视频多模态,OpenAI 兼容 API。
2. 30 天课题一览
| 天 | 主题 | 你会学到 / 会读到的代码 |
|---|---|---|
| D1 | 开场与工具链 | 为什么要手搓;原生 vs 交叉编译(build_rk3588.sh、CMakeLists.txt);确定性自检门 |
| D2 | C11 工程与整型纪律 | _Static_assert 布局守卫(vqf_format.h);平台层与设备画像(vllm_platform.h、vllm_device.c) |
| D3 | 内存与文件 I/O | mmap 直挂为什么快(vqf.c vqf_load);字节序;自研 util |
| D4 | 线程池 vllm_tp | 为什么换掉 OpenMP;parfor 实现;核绑定(A76/A55 大小核) |
| D5 | 量化地基 | 带宽瓶颈;Q8 对称量化标定;参考实现对拍 |
| D6 | NEON 手写 GEMM | ARMv8.2 dotprod(vdotq_s32);8x8 布局重排;llama 4x4 asm 提取件 |
| D7 | Q4 与混合精度 | GGUF Q4_0 对齐;flags=0x3 混合路由;预热与测量 |
| D8 | 注意力与 KV 入门 | Q·K/softmax/V;在线 softmax;KV 缓存布局 |
| D9 | q8 KV 与单查询 | KV 量化;flash_attn_single_q_q8_neon 单遍扫描 |
| D10 | 稀疏注意力 | O(n²) vs O(n·k);sparse top-k 块选择;诚实边界 |
| D11 | 前缀复用 | 多轮对话防重复 prefill;缓存键;TTFT 3.3× 复现 |
| D12 | 磁盘 KV(L3) | 跨进程恢复;快照格式;13.1× 复现 |
| D13 | 推测解码 | 草稿+验证;回退与收益边界 |
| D14 | 批处理与调度 | 连续批处理;单 SSE 流串行队列 |
| D15 | main.c 与生命周期 | 参数分发;prefill/decode 分路;gdb 单步一次生成 |
| D16 | VQF 格式 I:布局 | 432B 头/200B 签名/64B 张量目录;xxd 对照真实文件 |
| D17 | VQF 格式 II:转换 | safetensors/GGUF → VQF;位级一致实验 |
| D18 | 分词器与 mrope | BPE;vocab.bin 工具;3D 位置编码 |
| D19 | 多模态视觉塔 | ViT 编码;vision_tokens 协议;视频帧 |
| D20 | 自研 HTTP | socket/select;路由与最小 JSON;SSE 流式 |
| D21 | OpenAI 兼容层 | /v1/chat/completions 映射;对话模板;内嵌 HTML 生成器 |
| D22 | 管理面与守护 | chat.html 消费 SSE;/admin API;vllm_mgr.py 看门狗 |
| D23 | 国密 SM3 | 标准 KAT 红线;压缩轮实现;篡改实验 |
| D24 | SM4 与 VQF-Enc | CTR 流加密;HMAC-SM3 原子认证;单遍 COW 解密 |
| D25 | 公钥 SM2 | GM/T 0003 与 ZA/ID;签名工具链;随机源纪律 |
| D26 | 供应链签名接入 | 信任根闭环;签名覆盖分析;亲手"掉包"被拒 |
| D27 | 可验证推理 | schema=2 帧规范;端到端出证取证 |
| D28 | 性能方法论 | 基准设计;日志插桩;复现三表 |
| D29 | 发布与工程化 | 双许可;ARM 通用 vs RK3588;ASan 复现 |
| D30 | 结营与引流 | 文章矩阵;贡献指南;FHE 研究内核预告 |