Appearance
ds4.c 学习知识地图
项目概览
- ds4.c:antirez 编写的 DeepSeek V4 Flash 推理引擎
- ~58,000 行代码(C + Objective-C + Metal Shading Language + CUDA)
- 零外部依赖:JSON、HTTP、分词器全部手写
- 目标平台:Apple Silicon Mac(Metal)、NVIDIA GPU(CUDA)、AMD GPU(ROCm 分支)
- GGUF 量化工具:
gguf-tools/提供 imatrix 收集和 HF-to-GGUF 量化(~3000 行) - 贡献指南:
CONTRIBUTING.md(142 行)含回归测试流程(make test、CUDA regression、质量评分)
知识索引
C 语言知识点
| 概念 | 主题 | 对应文件 |
|---|---|---|
| Makefile / 编译流程 | Part 1 | Makefile |
| malloc/free / xmalloc | Part 1 | ds4.c |
| mmap 零拷贝 | Part 1 | ds4.c |
| __thread TLS | Part 1 | ds4.c |
| struct 对齐 / static_assert | Part 1 | ds4.c |
| 字节序 / 二进制解析 | Part 1 | ds4.c |
| 哈希表(开放寻址) | Part 2 | ds4.c |
| 字符串操作 | Part 2 | ds4.c |
| 浮点运算 / softmax | Part 2 | ds4.c |
| union 类型转换 | Part 2 | ds4.c |
| opaque type 设计 | Part 3 | ds4.h |
| 位操作 / 量化 | Part 3 | ds4.c |
| 多维数组索引 | Part 3 | ds4.c |
| 指针数组 | Part 3 | ds4.c |
| volatile / 信号 | Part 4 | ds4.c |
| pthread 线程池 | Part 4 | ds4.c |
| mutex / condvar | Part 4 | ds4.c |
| POSIX socket | Part 5 | ds4_server.c |
| poll I/O 多路复用 | Part 5 | ds4_server.c |
| 文件 I/O / SHA1 | Part 5 | ds4_server.c |
| JSON 手写解析 | Part 5 | ds4_server.c |
| ObjC 互操作 | Part 6 | ds4_metal.m |
LLM 知识点
| 概念 | 主题 | 对应文件 |
|---|---|---|
| 推理引擎是什么 | Part 1 | README.md |
| 模型文件格式 (GGUF) | Part 1 | ds4.c |
| BPE 分词 | Part 2 | ds4.c |
| 采样策略 | Part 2 | ds4.c |
| Transformer 权重结构 | Part 3 | ds4.h |
| 模型量化 | Part 3 | ds4.c |
| imatrix 重要性矩阵 | — | gguf-tools/ |
| GGUF 量化工具 | — | gguf-tools/ |
| Self-Attention | Part 3 | ds4.c |
| KV Cache | Part 3 | ds4.c |
| MLA (压缩注意力) | Part 3 | ds4.c |
| MoE (混合专家) | Part 3 | ds4.c |
| SwiGLU 激活 | Part 3 | ds4.c |
| RoPE 位置编码 | Part 4 | ds4.c |
| prefill vs decode | Part 4 | ds4.c |
| 自回归生成 | Part 4 | ds4.c |
| 推理并行性 | Part 4 | ds4.c |
| SSE 流式响应 | Part 5 | ds4_server.c |
| Responses API (/v1/responses) | Part 5 | ds4_server.c |
| KV Cache 持久化 | Part 5 | ds4.c |
| OpenAI/Anthropic API | Part 5 | ds4_server.c |
| Tool Calling | Part 5 | ds4_server.c |
| Live Tool Continuation | Part 5 | ds4_server.c |
| KV Cache 命中衰减与驱逐 | Part 5 | ds4_server.c |
| KV Cache 用量报告 | Part 5 | ds4_server.c |
| ds4-eval 能力评估 | Part 5 | ds4_eval.c |
| DeepSeek V4 模型卡 | Part 1 | MODEL_CARD.md |
| GPU 加速 / Flash Attention | Part 6 | metal/ ds4_cuda.cu |
| CUDA Managed KV Cache | Part 6 | ds4_cuda.cu |
学习进度
| 天 | 日期 | 状态 | 对应主题 |
|---|---|---|---|
| 1 | 2025-05-09 | 已完成 | Part 1: 构建与加载 |
| 2 | 2025-05-09 | 已完成 | Part 1: 构建与加载 |
| 3 | 2025-05-09 | 已完成 | Part 1: 构建与加载 |
| 4 | 2025-05-09 | 已完成 | Part 2: 分词与采样 |
| 5 | 2025-05-09 | 已完成 | Part 2: 分词与采样 |
| 6 | 2025-05-09 | 已完成 | Part 3: 模型架构 |
| 7 | 2025-05-09 | 已完成 | Part 3: 模型架构 |
| 8 | 2025-05-09 | 已完成 | Part 3: 模型架构 |
| 9 | 2025-05-09 | 已完成 | Part 3: 模型架构 |
| 10 | 2025-05-09 | 已完成 | Part 4: 推理流程 |
| 11 | 2025-05-09 | 已完成 | Part 4: 推理流程 |
| 12 | 2025-05-09 | 已完成 | Part 5: 服务层 |
| 13 | 2025-05-09 | 已完成 | Part 5: 服务层 |
| 14 | 2025-05-09 | 已完成 | Part 5: 服务层 |
| 15 | 2025-05-09 | 已完成 | Part 6: GPU 加速 |