性能与部署
logits 对上、生成对上、量化也做了(04 到 08),这一部分回答剩下的两个问题:搬过来以后跑多快,交付出去的东西长什么样。体积、冷启动和峰值内存的基本对比已经在什么时候选 candle里量过,这里不重复,只往下拆。
- 速度:203 个 token 的 prefill 和 128 步 decode,torch CPU(1 和 8 线程)、MPS(f32、f16)对 candle CPU(有无 accelerate)、Metal(f32、f16、bf16)、GGUF(Q8_0、Q4_K_M);CPU decode 慢在线程交接(
RAYON_NUM_THREADS=1、Device::with_context各快 21% 和 14%,合用 24%),CPU prefill 慢在where_condmask,Q4_K_M 慢在没有向量化的 Q5_0,MPS 的 decode 慢在 Python 一侧的调度。 - 部署:一个读 stdin、流式输出的最小服务;九种 release profile 的大小、构建时间和速度(只有
strip值得开);otool -L只有系统框架;Linux 上缺什么,交叉编译卡在onig;权重放旁边、mmap 还是include_bytes!。
flowchart TB model["SmolLM2 推理"] --> speed["速度"] model --> ship["部署"] speed --> cpu["CPU 线程 mask"] speed --> gpu["Metal 对 MPS"] speed --> q["GGUF 格式"] ship --> prof["release profile"] ship --> link["链接与平台"] ship --> w["权重怎么带"]
Metal 着色器的编译和计时方法见源码卷的 Metal 第一次运行要好几秒和 Metal 上计时几乎为零;CPU 上的几个线程池见源码卷的 CPU 后端。
💬 关联讨论
发起讨论加载中...