当前位置:首页>面试真题>大模型 AI Infra 校招面试真题|Transformer、推理优化、CUDA......

大模型 AI Infra 校招面试真题|Transformer、推理优化、CUDA......

  • 2026-05-02 08:02:02
大模型 AI Infra 校招面试真题|Transformer、推理优化、CUDA......

本文聚焦大模型 AI Infra 校招核心考点,系统整理面试真题并做分类详解。

从 Transformer 基础架构、多头注意力底层逻辑切入,延伸解析大模型推理流程、KV Cache 加速与模型量化部署;同时涵盖 CUDA 算子优化、GPU 性能调优、llama.cpp 工程实践等硬核内容。

全文考点划分清晰、附带完整解析,非常适合同学们校招备考刷题使用。

本文经知乎作者 @张朱墨Jum0R 授权分享,原文如下:

01

Transformer 基础

Q1:介绍一下 Transformer

Transformer 主要分为两个部分:

  • Encoder:处理输入序列,输出上下文表示。内部是多层 Encoder Layer,每层包括 Multi-Head Self-Attention + Feed Forward + Layer Norm + Residual Connections。

  • Decoder:处理目标序列,输出预测。内部是多层 Decoder Layer,每层包括 Masked Multi-Head Self-Attention(自注意力,防止看到未来)+ Multi-Head Encoder-Decoder Attention(交叉注意力)+ Feed Forward + Layer Norm + Residual Connections。

额外组件:

  • Embedding:词嵌入 + 位置编码(Positional Encoding)

  • Output Layer:线性层

SHEN LAN

  Q2. Embedding 是什么,它在什么位置?

文本先由 tokenizer 将文本拆分成 token,然后根据词表(vocab)将 token 映射为整数 input_ids。模型维护一个可学习的 embedding 矩阵,通过查表得到 token 向量。位置在模型最前端,紧跟 tokenizer 之后、Transformer block 之前。

SHEN LAN

  Q3. 为什么要位置编码?好处是什么?

因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,使用位置编码保存单词在序列中的相对或绝对位置。

SHEN LAN

  Q4. Tokenizer 怎么做的?

利用特定算法(如BPEWordPiece)将连续的文本切分成一个个更小的单元,即 Token。这些 Token 可以是完整的单词、词根、词缀甚至单个字符。然后在一个预先构建好的”词汇表”中查找每个 Token,并将其映射为一个唯一的数字编号(Token ID)。最终,一段文本就被转换成一串由 Token ID 组成的序列,成为模型真正的输入。

SHEN LAN

  Q5. 手撕 Multi-Head Attention

import torchimport torch.nn as nnimport torch.nn.functional as Fclass MultiHeadAttention(nn.Module):    def __init__(self, hidden_size, num_heads):        super().__init__()        self.num_heads = num_heads        self.head_dim = hidden_size // num_heads        self.q_linear = nn.Linear(hidden_size, hidden_size)        self.k_linear = nn.Linear(hidden_size, hidden_size)        self.v_linear = nn.Linear(hidden_size, hidden_size)        self.o_linear = nn.Linear(hidden_size, hidden_size)    def forward(self, hidden_state, causal_mask=None,                past_key_value=None, use_cache=False):        batch_size = hidden_state.size(0)        query = self.q_linear(hidden_state)        key   = self.k_linear(hidden_state)        value = self.v_linear(hidden_state)        # 多头拆分        query = query.view(batch_size, -1self.num_heads, self.head_dim).transpose(12)        key   = key.view(batch_size,   -1self.num_heads, self.head_dim).transpose(12)        value = value.view(batch_size, -1self.num_heads, self.head_dim).transpose(12)        # 拼接 KV cache        if past_key_value is not None:            past_key, past_value = past_key_value            key   = torch.cat([past_key,   key],   dim=2)            value = torch.cat([past_value, value], dim=2)        new_past_key_value = (key, value) if use_cache else None        # 注意力打分        attention_scores = torch.matmul(query, key.transpose(-1, -2)) \                           / torch.sqrt(torch.tensor(self.head_dim, dtype=torch.float32))        if causal_mask is not None:            attention_scores += causal_mask * -1e9        attention_probs = F.softmax(attention_scores, dim=-1)        output = torch.matmul(attention_probs, value)        # 合并多头        output = output.transpose(12).contiguous() \                       .view(batch_size, -1self.num_heads * self.head_dim)        output = self.o_linear(output)        return (output, new_past_key_value) if use_cache else output

SHEN LAN

  Q6. Multi-Head Attention 和 Single-Head Attention 的区别?Multi-Head 有什么好处?

Multi-Head 把 hidden_size 拆成多个并行的子空间,每个 head 学习不同的关注模式(如语法、语义、位置等),再拼接回去。

好处:

  • 多角度建模:每个头关注不同的子空间特征

  • 表达能力更强:相比单头能捕获更丰富的依赖

  • 并行性好:多头之间天然并行

SHEN LAN

  Q7. Transformer 里的 Attention 和 Feed Forward 各自的作用?

  • Attention:在 token 之间做信息交互,捕获序列依赖关系(”谁关注谁”)。

  • Feed Forward (FFN):对每个 token 独立做非线性变换,提升模型表达能力,承担”知识存储”的作用。

SHEN LAN

  Q8. 大模型怎么处理梯度消失和梯度爆炸?

  • 残差连接(Residual Connection):保证梯度可以直通传到浅层

  • LayerNorm/RMSNorm:稳定每层的激活值分布

  • 更稳定的初始化:如 Xavier、Kaiming

  • 梯度裁剪(Gradient Clipping):防止梯度爆炸

  • 学习率 warmup + decay:避免训练初期发散

  • 混合精度训练+Loss scaling:解决FP16下梯度下溢出问题

SHEN LAN

02

大模型推理流程

  Q9. 大模型输入文本后怎么得到输出?/ Transformer 推理流程

  1. 文本输入,tokenizer 将文本切分成更小的单元,根据预先准备的词表映射成唯一的token id

  2. 通过Embedding和位置编码,将token id转化为带有位置信息的向量序列

  3. 进入Prefill阶段,模型并行计算输入序列的上下文信息并构建KV Cache

  4. Decode阶段,模型基于已生成的上文和缓存信息,预测下一个token的概率分布,选出概率最高的词后将其追加回输入序列,并更新缓存

  5. 如此反复迭代,直到生成结束符或达到长度限制

SHEN LAN

  Q10. 第一个token是怎么来的?

第一个生成的 token 来自 Prefill 阶段:用户输入经过 tokenizer + embedding 后整段并行送入模型,最后一层输出对应”输入末尾位置”的 hidden state,经过 LM Head(线性层)→ logits → 采样策略(greedy / top-k / top-p)→ 得到第一个生成的 token。

SHEN LAN

  Q11. 介绍一下PD分离(Prefill-Decode 分离)

Prefill 和 Decode 两个阶段的特性差异极大:

  • Prefill:长序列并行计算,Compute-Bound,能打满 GPU 算力

  • Decode:每次只算一个 token,Memory-Bound,瓶颈是 KV cache 和参数读写带宽

混合在一起会互相干扰:长prefill卡住短decode,导致延迟抖动。PD分离把两个阶段调度到不同的实例(甚至不同硬件),各自批处理,从而提升整体吞吐和SLA。

SHEN LAN

03

Attention 与 KV Cache

  Q12. KV Cache 原理?

利用”空间换时间“的策略,解决自回归生成过程中的重复计算问题。

在 Transformer 生成文本时,每次生成新 token 都需要关注之前的所有 token;如果没有缓存,模型必须不断重复计算历史序列的 Key 和 Value 向量,导致计算复杂度呈平方级增长。

KV Cache 通过在显存中保存已计算过的历史 Key 和 Value 状态,使得模型在生成下一个token时,只需计算当前token的Query和新的Key/Value,并直接复用缓存中的历史数据。

这一机制将推理的计算复杂度从 O(n²) 降低到 O(n),是大模型实现低延迟流式输出的关键。

SHEN LAN

  Q13. KV Cache 还有哪些其他优化手段?

  • PagedAttention(vLLM):把KV cache分块管理,避免显存碎片

  • Continuous Batching:动态拼batch MQA/GQA:多个Query head共享K/V,减少cache体积

  • 量化 KV cache:把KV从FP16量化到INT8/INT4

  • KV cache压缩/驱逐:H2O、StreamingLLM 等丢掉不重要的 token

  • Prefix Caching:相同前缀的请求复用 KV

SHEN LAN

04

Flash Attention

  Q14. Flash Attention 原理(目标+方法)

  • 目标:解决 Memory-Bound 问题,避免 attention 矩阵从 HBM 的反复读写

  • 方法

  • 通过分块计算(tiling),融合多个操作,减少中间结果缓存

  • 反向传播时,重新计算(recomputation)中间结果而非保存

SHEN LAN

  Q15. Flash Attention 不同版本之间有什么区别?

  • FA1:分块 + online softmax

  • FA2:改变了循环的嵌套顺序,先处理Q(外层),KV(内层),结束后统一归一化;减少非矩阵乘法计算,更好利用Tensor Core;如果一个Block 处于矩阵上三角部分(causal mask),不进行attention计算

  • FA3:针对Hopper架构,利用TMA和WGMMA,让Softmax和GEMM重叠执行,用Tensor Core的计算时间掩盖SFU(exp)的低吞吐

  • FA4:针对Blackwell架构,高速online softmax(如果最大值在一定范围就不更新);高效的exp,使用多项式拟合仿真指数操作,接近矩阵运算

SHEN LAN

  Q16. 应用Flash Attention时,如果mask是随机/不规则的怎么处理?

Flash Attention的高效来自于“整块跳过”——causal mask下右上三角的 block完全不算。如果mask是随机的:

  • Block-sparse 化:按 block 粒度判断是否全 0,全 0 的 block 直接跳过;非全 0 的 block 内部按元素应用 mask

  • 传 mask 索引:把”哪些 (Q-block, KV-block) 对需要计算”的列表传进 kernel(FlexAttention / FlashAttention 的 block-sparse 接口就是这种思路)

  • 在 kernel 里把 mask 加到 scores 上(scores += mask * -inf),让 softmax 自动屏蔽

  • 极不规则时,partial-block 的开销可能让收益打折,需要权衡

SHEN LAN

  Q17. Flash Attention 比较复杂,哪部分比较困难?

主要难点:

  • online softmax 的数值稳定性(max 的累积更新)

  • 分块大小的选择:要兼顾 SRAM 容量、寄存器压力、warp 调度

  • 反向传播的重计算逻辑与前向对齐

  • 多 batch / 多 head / 不同 head_dim 的边界处理

SHEN LAN

  Q18. 了解过其他 Attention 类的加速手段(论文)吗?

  • Multi-Query Attention (MQA) / Grouped-Query Attention (GQA):减少 KV head 数量

  • Sliding Window Attention(Mistral)

  • Linear Attention / Performer / Linformer:把复杂度降到 O(n)

  • PagedAttention(vLLM)

  • RingAttention:跨GPU切分长序列

  • FlexAttention:用编译器自动生成融合 kernel

SHEN LAN

05

量化

  Q19. 量化的原理?

量化是指将连续取值离散化成有限取值的过程。模型量化即将权重、激活值等从高精度转化成低精度的操作过程(如 FP32 → INT8)。

SHEN LAN

  Q20. 量化的好处(目的)?

  • 更小的模型尺寸:以 8bit 量化为例,与 32bit 浮点数相比,模型体积降低为原来的1⁄4

  • 更低的功耗:移动 8bit 数据比移动 32bit 浮点型数据效率高 4 倍

  • 更快的计算速度:大多数处理器都支持 8bit 数据的更快处理;二值量化更有优势

SHEN LAN

  Q21. 量化的分类?

  • 按量化阶段:量化感知训练(QAT)、训练后量化(PTQ)

  • 按量化对象:仅权重量化(weight-only)、权重和激活都量化(weight + activation)

  • 按量化类型:对称量化、非对称量化

  • 按实现方法:

  • PTQ:直接转换训练好的模型

  • QAT:训练时模拟量化过程

  • 混合精度量化:关键层保持高精度

SHEN LAN

  Q22. 模型在运行时哪部分是动态量化、哪部分是静态量化?

  • 静态量化(权重):权重在部署前就已确定,离线量化好,运行时直接使用

  • 动态量化(激活值):激活随输入变化,运行时根据当前 batch 实时统计 min/max 来量化(也有提前用校准集统计好的“静态激活量化”)

SHEN LAN

  Q23. 为什么有的只量化weight,有的activation和weight都量化?

只量化权重

  • 权重被量化为 INT8,减少存储和带宽占用 激活保持 FP32/FP16,避免量化带来的精度损失

  • 计算时:INT8 权重会被反量化回 FP32/FP16,再与浮点输入运算

权重 + 激活都量化:

  • 权重和激活都量化为 INT8,计算完全在 INT8 进行

  • 计算时:输入先量化到 INT8,再与 INT8 权重进行纯整数计算

结论:只量化权重只减少模型大小,推理速度不会有明显提升;权重 + 激活量化能极大提升推理速度,但模型精度会有所下降。

SHEN LAN

  Q24. 量化踩过的坑?

精度陷阱:做分组量化时直接用 max/min 校准,但某些分组中会有个别离群值,导致整个分组的范围被拉得很宽,最终效果较差。

解决思路:截尾(如 percentile 校准)、SmoothQuant、AWQ、对离群通道单独处理。

SHEN LAN

  Q25. 模型蒸馏、模型剪枝、量化的区别?

维度
量化
剪枝
蒸馏
操作对象
数值精度
结构(权重/通道/层)
训练目标
是否改变模型结构
否(小模型独立)
是否需要训练
不一定(PTQ 不需要)
一般需要fine-tune
必须训练student
主要收益
显存+算力
参数量+FLOPs
用小模型逼近大模型

最重要的区别是:蒸馏改的是训练范式(让小模型学大模型),剪枝改的是网络拓扑(去掉不重要的连接),量化只改数值表示

SHEN LAN

  Q26. 如何对训练后的模型做量化?(Flow Matching 改了网络结构,原训练精度 BF16)

优先选择 PTQ(Post-Training Quantization):

  1. 采集一批校准数据

  2. 用模型跑前向,统计每一层的 activation 分布

  3. 对 weight 和 activation 做量化映射:BF16 → INT8

如果 PTQ 掉点严重,用 QAT(Quantization-Aware Training):

  • Flow Matching 天生对数值敏感,PTQ 容易崩

  • 在网络里插入伪量化节点

  • 用极小学习率微调 1~3 个 epoch

  • 保持原有 Flow Matching 损失函数不变 

可能遇到的问题:激活值离群点、不同分支量化范围不一致、扩散步数累积误差。

SHEN LAN

  Q27. 如果 INT8 掉点严重怎么办?

  • 切换到 QAT

  • 使用混合精度:敏感层(如最后输出层、首层)保留 BF16

  • 使用更细粒度的 per-channel / per-group 量化

  • 离群点处理:SmoothQuant(把激活的离群值迁移到权重)、AWQ

  • 检查校准集是否覆盖真实分布

SHEN LAN

  Q28. 为什么用 INT4?

  • 更高压缩比:相比 INT8 再缩 1/2,4B 模型可在端侧 4GB 显存运行

  • 带宽更友好:Decode 阶段是 Memory-Bound,权重读取量减半直接提速

  • 精度可控:通过分组量化(K-Quant、AWQ、GPTQ)能把精度损失压到很小

劣势:纯整数 INT4 GEMM 硬件支持有限(目前主流是 W4A16,权重 INT4 但激活 FP16),所以加速主要来自带宽减少而非算力翻倍。

SHEN LAN

  Q29. INT4 量化怎么降低时延和显存?

  • 显存:模型权重直接缩到 1/4(FP16 vs INT4)

  • 时延:Decode Memory-Bound 场景下,从 HBM 读权重的字节数减少 → 端到端延迟下降;解包的 ALU 开销远小于带宽节省的收益

SHEN LAN

  Q30. 了解过 FP8 量化吗?

FP8 有 E4M3 和 E5M2 两种格式:

  • E4M3:4位指数+3位尾数,动态范围小但精度高,常用于forward/weight

  • E5M2:5位指数+2位尾数,动态范围大,常用于 backward / gradient

H100 / Blackwell 原生支持 FP8 Tensor Core。相比 INT8,FP8 的浮点性质让它对激活的离群值更友好,几乎不需要复杂的校准。

SHEN LAN

  Q31. 量化后的权重怎么参与计算?

以 llama.cpp Q4_K_M 为例:

从块中解包 4-bit 权重,用 scale + min 反量化回 FP16,得到 FP16 权重矩阵,和 FP16 激活做矩阵乘法(当场解包,当场丢弃)。

w_fp16 = q4 * (scale * d) - (minv * dmin)

其中:

  • d:全局 scale(FP16,整个 256 维超块共用)

  • dmin:全局 min(FP16,整个 256 维超块共用)

  • scale:子块局部 scale(6-bit,32 维子块用)

  • minv:子块局部 min(6-bit,32 维子块用)

SHEN LAN

  Q32. 如何评估量化损失是可以接受的?精度损失大时如何定位?

评估指标

  • 语言模型:PPL(Perplexity)、下游任务准确率(MMLU、CEVAL 等)

  • 视觉模型:FID、PSNR、mAP

定位方法:

  • 逐层替换法:每次只量化一层,跑评测,找出敏感层

  • 激活分布对比:FP 和量化版本对比每层输出的余弦相似度 / KL 散度

  • 离群值检测:看哪些通道激活值跨度过大

SHEN LAN

06

GPU / CUDA 优化

  Q33. MatMul 怎么优化的?计算瓶颈在哪里?

瓶颈:访存(从 GMEM 读取矩阵)和算力。

常见优化手段:

  • 分块 (Tiling):按 M、N、K 分块加载到 SMEM

  • 寄存器分块 (Warp Tiling):每个线程持有更大的输出 tile

  • double buffering:计算和访存 overlap

  • Tensor Core 利用:用 wmma / mma 指令

  • 避免 bank conflict:合理 padding SMEM 布局

  • vectorized load:float4 一次加载 16 字节

SHEN LAN

  Q34. 矩阵乘有根据 N、M、K 分块吗?

是。三个维度都要分:

  • M、N 方向:决定每个 block 算输出的哪一块

  • K 方向:累加方向,决定每次从 GMEM 读多少进 SMEM

典型的 BLOCK 大小:BM=128, BN=128, BK=8/16/32(依架构而定)。

SHEN LAN

  Q35. Bank Conflict 是什么?

同一个 warp 里的不同线程从同一个 bank 里取数据就会造成 bank conflict,内存读取效率偏低(被串行化)。

GPU SMEM 通常分为 32 个 bank,每个 bank 4 字节。解决方法:调整数据布局加 padding(如 [N+1] 而非 [N]),或者 swizzle。

SHEN LAN

  Q36. GPU 的两种瓶颈是什么?

  • Compute-Bound:算力打满(如大矩阵乘 prefill)

  • Memory-Bound:访存打满(如 decode 阶段读权重、KV cache)

SHEN LAN

  Q37. GPU 运行的时候是如何将数据从 CPU 搬到 GPU 的?

通过 PCIe 总线进行的跨域传输。

流程:

  1. Host 上分配 pinned memory(避免 swap)

  2. cudaMemcpyAsync 把数据 DMA 拷贝到 GPU 显存

  3. 配合 CUDA Stream 实现拷贝与计算 overlap

  4. 现代架构有 NVLink / GPUDirect 可以绕过 CPU

SHEN LAN

  Q38. 如何理解 CPU 和 GPU 的内存层次?

CPU:设计目标是最小化单线程延迟——通过 L1/L2 应对局部性,L3 解决多核数据共享与内存墙问题。深层 cache 是核心。

GPU:专注吞吐量优化——凭借海量线程隐藏延迟,显存带宽优势和大规模寄存器资源使其无需深度缓存层级。层级是 Register → SMEM/L1 → L2 → HBM。

二者差异本质是在延迟敏感与吞吐优先之间的架构权衡。

SHEN LAN

  Q39. 如何优化 RMSNorm 算子?解决什么瓶颈?

RMSNorm 是 Memory-Bound(计算量小,但要读整个 hidden state)。

优化手段

  • 算子融合:和前后的 residual / linear 融合,减少 HBM 往返

  • vectorized load:float4 加载

  • warp-level reduction:用 __shfl_xor_sync 做归约,避免 SMEM 同步

  • block-level 时:先 warp reduce,再 SMEM 跨 warp 聚合

  • 单步算 sum(x²),避免 mean/var 两遍扫数据

SHEN LAN

  Q40. 你会用 ncu 优化性能,会关注哪些指标?

  • SM Occupancy:占用率

  • Memory Throughput / DRAM Throughput:访存带宽利用率

  • Compute (SM) Throughput:算力利用率 

  • L1/L2 Cache Hit Rate

  • Warp Stall Reasons:哪种原因导致 stall(long scoreboard / barrier / mio_throttle…)

  • Achieved vs Theoretical Bandwidth 

  • Roofline 分析:判断 kernel 是 Compute-Bound 还是 Memory-Bound

根据指标判断:

  • DRAM 吃满 → Memory-Bound,优化访存(融合、量化、tiling)

  • SM 利用率高但算力低 → 指令组合不好,考虑 Tensor Core

  • 占用率低 → 调整 block 大小、寄存器使用

SHEN LAN

  Q41. Latency Bound 问题、Occupancy 相关问题?

  • Latency Bound:指 kernel 因为指令依赖(long scoreboard、barrier)等待,没法发射新指令。可以增加并行(提高 Occupancy)来掩盖

  • Occupancy 不一定越高越好:寄存器多/SMEM 多 → 占用率降低,但单线程效率高,往往整体更快

SHEN LAN

  Q42. Ada 升级到 Blackwell 架构,软硬件层面有哪些变化?

硬件层面:

  • 第二代 Transformer Engine,原生支持 FP4 / FP6

  • 更大的 NVLink 带宽(NVL72 拓扑)

  • 更高的 HBM 带宽和容量

  • 第五代 Tensor Core

软件层面:

  • CUDA 12.x 新增 FP4 数据类型支持

  • cuBLAS / cuDNN 适配新 mma 指令

  • FA4 利用新硬件特性

SHEN LAN

  Q43. 嵌入式平台/资源受限平台部署小模型vsGPU大模型推理的区别?

可复用:

  • 量化(INT8/INT4)思路

  • 算子融合

  • KV cache 优化

  • 整体的推理流水线设计

需要注意的差异:

  • 嵌入式更受限于内存带宽和功耗,不是算力 

  • CPU/NPU 没有 SIMT,需要用 SIMD(NEON)/ NPU 专用指令

  • 内存分配粒度更小,不要频繁 malloc 

  • 算子要重写适配(NPU 通常只支持白名单算子)

  • 数据搬运优化更关键:减少 CPU↔NPU 拷贝、用 zero-copy 内存

SHEN LAN

  Q44. 你是用什么方法解决数据搬运和提高速度的?

  • 内存池 / KV Cache 池:预分配,避免运行时频繁 malloc

  • Pinned memory + 异步拷贝

  • Stream 并行:拷贝、计算 overlap

  • 算子融合:减少 kernel launch 和中间结果落盘

  • 量化:减少要搬运的数据量

SHEN LAN

  Q45. PyTorch 显存管理是怎么做的?

PyTorch 用 caching allocator

  • 第一次申请向 CUDA 要大块(按 2MB / 20MB 分级)

  • 释放时不还给 CUDA driver,而是放回内部 free list

  • 下次申请优先从 free list 复用,按 size 匹配

  • 这样避免频繁 cudaMalloc/cudaFree 的高开销

  • 副作用:nvidia-smi 看到的显存比实际占用高

SHEN LAN

  Q46. 有做过 PyTorch 自定义算子吗?

典型路径:写CUDA kernel → C++ wrapper → TORCH_LIBRARY 注册 → Python端torch.ops.mylib.myop调用;或者用 torch.utils.cpp_extension.load_inline

SHEN LAN

  Q47. 之前有做过建模类型的工作吗?分层看激活值的优化?

思路:用hook注入每层激活,统计 min/max/distribution,对比量化前后的差异,定位敏感层

SHEN LAN

07

llama.cpp

  Q48. llama.cpp 是不是只是单 batch 的情况?

历史上是单 batch 为主(端侧场景为主),但目前已经支持 batched decoding(llama_batch)和并行序列。不过相比vLLM这类serving框架,它的多batch调度仍然较为简单。

SHEN LAN

  Q49. llama.cpp 除了算子优化以外,还有什么方法降低延迟?核心优化能力是什么?

  • K-Quant 系列量化(Q2_K ~ Q8_K,超块 + 子块两级量化)

  • GGUF 格式:mmap 直接加载,减少冷启动时间 CPU + GPU 混合推理(-ngl 控制 offload 层数)

  • 持续 batch 优化

  • prompt cache:相同 prompt 复用 KV 跨平台 backend:Metal / CUDA / SYCL / Vulkan

核心优化能力:极致的端侧量化部署+跨平台兼容+极小依赖(纯 C/C++)。

SHEN LAN

  Q50. K-Quant 量化方法是什么?

量化流程(4 步)

  1. 分块:权重矩阵按行优先展平,每 256 维为一个超块,再拆为 8 个 32 维子块

  2. 算局部参数:对每个 32 维子块,用 make_qkx1_quants(5 次迭代 K-Means)求最优 scale/min,最小化重构误差

  3. 算全局参数:取 8 个子块的最大 scale 作为全局 scale(d = max_scale / 63),最大 min 作为全局 min 尺度(dmin = max_min / 63)

  4. 编码存储:

  • 子块 scale/min 量化为 6-bit,紧凑存入 scales[12](前 4 个直接存,后 4 个拆高低位)

  • 4-bit 权重按 qs[i] = q[2i] | (q[2i+1] << 4) 打包入 qs[128]

反量化(推理时)

对每个 32 维子块:

  1. 从 scales 解码 6-bit scale/min,乘全局 d/dmin 得实际 scale/dm

  2. 解包 4-bit 权重(q = (qs[l] & 0xF) 或 (qs[l] >> 4))

  3. 反量化:x = d * q - dm(FP16 计算)

SHEN LAN

  Q51. llama.cpp 里比较精妙的技巧是什么?

  • GGUF + mmap:模型按需加载,启动快、内存可被多进程共享

  • Q-format 的紧凑编码:scale 和量化值的 packing 设计极致省内存

  • 统一的 ggml 张量抽象:跨后端只换 backend op

  • SIMD 内核手工优化:每种量化格式都有 AVX2/AVX-512/NEON/Metal/CUDA 的专门实现

  • graph 重用 + scratch buffer:每步推理复用同一块工作内存

SHEN LAN

08

数据表示

  Q52. FLOPS 和 FLOPs 和吞吐量分别是什么?

    FLOPS(Floating Point Operations Per Second,每秒浮点运算次数):

    • 衡量硬件理论峰值计算能力的标准单位

    • 比较不同硬件理论算力天花板的主要指标

    • 常用 TFLOPS、PFLOPS 表示

    FLOPs(Floating Point Operations,浮点运算次数):

    • 衡量一个模型执行一次前向(或前向+反向)所需的总浮点运算量

    • 表示模型的计算复杂度

    • 是估算训练/推理资源和时间的基础

    吞吐量(Throughput):

    • 系统在单位时间内处理的数据量或完成的任务量

    • 训练:tokens/s 或 samples/s

    • 推理:requests/s(QPS)或 tokens/s 衡量实际性能的关键指标

    SHEN LAN

    文章来源:@张朱墨Jum0R 知乎作者授权分享 https://zhuanlan.zhihu.com/p/2031444649823449112

    欢迎关注『深蓝职通车』

    SHEN LAN

    推荐阅读

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-05-03 16:57:57 HTTP/2.0 GET : https://15386.cn/a/465654.html
    2. 运行时间 : 0.098982s [ 吞吐率:10.10req/s ] 内存消耗:4,788.38kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=8e0b0236ea6cb09eaae4fd44862cebbe
    1. /yingpanguazai/ssd/ssd1/www/no.15386.cn/public/index.php ( 0.79 KB )
    2. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/autoload.php ( 0.17 KB )
    3. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_real.php ( 2.49 KB )
    4. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/platform_check.php ( 0.90 KB )
    5. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
    6. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/composer/autoload_static.php ( 4.90 KB )
    7. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
    8. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
    9. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
    10. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
    11. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
    12. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
    13. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
    14. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
    15. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
    16. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
    17. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
    18. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
    19. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
    20. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
    21. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
    22. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/provider.php ( 0.19 KB )
    23. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
    24. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
    25. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
    26. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/common.php ( 0.03 KB )
    27. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
    28. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
    29. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/app.php ( 0.95 KB )
    30. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cache.php ( 0.78 KB )
    31. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/console.php ( 0.23 KB )
    32. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/cookie.php ( 0.56 KB )
    33. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/database.php ( 2.48 KB )
    34. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
    35. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/filesystem.php ( 0.61 KB )
    36. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/lang.php ( 0.91 KB )
    37. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/log.php ( 1.35 KB )
    38. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/middleware.php ( 0.19 KB )
    39. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/route.php ( 1.89 KB )
    40. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/session.php ( 0.57 KB )
    41. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/trace.php ( 0.34 KB )
    42. /yingpanguazai/ssd/ssd1/www/no.15386.cn/config/view.php ( 0.82 KB )
    43. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/event.php ( 0.25 KB )
    44. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
    45. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/service.php ( 0.13 KB )
    46. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/AppService.php ( 0.26 KB )
    47. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
    48. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
    49. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
    50. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
    51. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
    52. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/services.php ( 0.14 KB )
    53. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
    54. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
    55. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
    56. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
    57. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
    58. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
    59. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
    60. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
    61. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
    62. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
    63. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
    64. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
    65. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
    66. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
    67. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
    68. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
    69. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
    70. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
    71. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
    72. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
    73. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
    74. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
    75. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
    76. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
    77. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
    78. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
    79. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
    80. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
    81. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
    82. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
    83. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/Request.php ( 0.09 KB )
    84. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
    85. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/middleware.php ( 0.25 KB )
    86. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
    87. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
    88. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
    89. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
    90. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
    91. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
    92. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
    93. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
    94. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
    95. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
    96. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
    97. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
    98. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
    99. /yingpanguazai/ssd/ssd1/www/no.15386.cn/route/app.php ( 1.72 KB )
    100. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
    101. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
    102. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
    103. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/controller/Index.php ( 4.81 KB )
    104. /yingpanguazai/ssd/ssd1/www/no.15386.cn/app/BaseController.php ( 2.05 KB )
    105. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
    106. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
    107. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
    108. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
    109. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
    110. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
    111. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
    112. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
    113. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
    114. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
    115. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
    116. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
    117. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
    118. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
    119. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
    120. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
    121. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
    122. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
    123. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
    124. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
    125. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
    126. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
    127. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
    128. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
    129. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
    130. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
    131. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
    132. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
    133. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
    134. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
    135. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
    136. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
    137. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
    138. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
    139. /yingpanguazai/ssd/ssd1/www/no.15386.cn/runtime/temp/97c957f747c268aee476c4e16775dd7c.php ( 12.06 KB )
    140. /yingpanguazai/ssd/ssd1/www/no.15386.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
    1. CONNECT:[ UseTime:0.000575s ] mysql:host=127.0.0.1;port=3306;dbname=no_15386;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000808s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000343s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000357s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000679s ]
    6. SELECT * FROM `set` [ RunTime:0.000251s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000648s ]
    8. SELECT * FROM `article` WHERE `id` = 465654 LIMIT 1 [ RunTime:0.000562s ]
    9. UPDATE `article` SET `lasttime` = 1777798677 WHERE `id` = 465654 [ RunTime:0.006328s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000428s ]
    11. SELECT * FROM `article` WHERE `id` < 465654 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000642s ]
    12. SELECT * FROM `article` WHERE `id` > 465654 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000450s ]
    13. SELECT * FROM `article` WHERE `id` < 465654 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000907s ]
    14. SELECT * FROM `article` WHERE `id` < 465654 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000888s ]
    15. SELECT * FROM `article` WHERE `id` < 465654 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009170s ]
    0.100617s