从 reshape 到 einops:理解 Transformer 代码中的 Tensor Shape DSLAug 27, 2026·6243 words·13 minsDeep-Learning Einops CS336 PyTorch Transformer Ml-Infra起因 # 最近在做 CS336(Language Modeling from Scratch)的 Transformer 实现,代码里反复出现这种写法:
从线上模型切换问题理解 PyTorch CUDA Caching Allocator:为什么显存管理需要理解生命周期Aug 26, 2026·6437 words·13 minsDeep-Learning CUDA PyTorch Gpu-Memory Memory-Allocator Inference Ml-Infra起因 # 我们的线上推理系统中存在大量模型——MLP、GNN、MoE,以及它们的各种组合。这个 workload 有几个重要特点:
Lance 适合我们的训练特征存储吗?从 NumPy、mmap 到 GPFS I/O 的一次分析Aug 26, 2026·4556 words·10 minsDeep-Learning Ml-Infra Storage Lance Gpfs起因:一个来自运维同事的问题 # 前阵子运维同事找到我,大意是:
从 DataLoader 到 Remote DataLoader:如何让 GPU 不再等待数据Aug 23, 2026·4765 words·10 minsDeep-Learning Dataloader Ml-Infra 分布式系统 PyTorch起因:GPU 没吃满,但不是算力问题 # 最近组里有同学训练模型时,最直接的感受是:GPU utilization 上不去,step time 里总有一段在等数据。
从 Bytes 到 Tokens:我在 CS336 中实现 BPE TokenizerAug 23, 2026·8149 words·17 minsMooc CS336 Tokenizer BPE NLP LLM最近在做 Stanford CS336(Language Modeling from Scratch)的 Assignment 1,实现了一个 BPE Tokenizer。最初的 trainer 跑 TinyStories 要约 8 分钟,改完后降到约 36 秒。
从 AMP 到 Mixed Precision:训练和推理为什么不使用同一种精度Aug 21, 2026·5776 words·12 minsDeep-Learning Mixed-Precision AMP Quantization BF16 Inference Ml-Infra起因 # 以前在商汤做 CV 的时候,有一段时间在做目标检测模型的 INT8 量化。目标很直接:降低 inference latency,减少 model memory 和 bandwidth,同时利用 INT8 hardware throughput。
从 IEEE 754 到 BF16:理解 ML Infra 中的浮点精度选择Aug 19, 2026·6632 words·14 minsDeep-Learning Floating-Point BF16 FP16 TF32 Inference Ml-Infra起因 # 上一篇讨论模型显存时,我直接用了一张表:
从参数量到 Peak Memory:模型显存到底应该怎么算?Aug 17, 2026·5253 words·11 minsDeep-Learning Gpu-Memory Model-Scheduling Inference Training CS336 Ml-Infra起因 # 上一篇讨论了模型调度中的 Performance Constraint:一个模型放到 GPU 上以后,到底跑多快?
从 FLOPs 到 Latency:GPU 推理性能到底由什么决定?Aug 15, 2026·3136 words·7 minsDeep-Learning Gpu-Performance FLOPS Roofline Inference CS336 Ml-Infra起因 # 最近在做 CS336(Language Modeling from Scratch)的 resource accounting 作业,里面要求逐个列出 Transformer forward pass 中所有的 matmul,然后按 \(2MKN\) 计算 FLOPs。
从 CS336 的 xfail 看大型工程中的测试设计Aug 13, 2026·3497 words·7 minsDeep-Learning Pytest CS336 PyTorch Testing起因 # 最近在学 Stanford CS336(Language Modeling from Scratch),做 tokenizer 作业时,第一次在测试代码里见到了 pytest.mark.xfail。
MoE 结构学习笔记:Expert 与 Gate 的几种关系Aug 9, 2026·5555 words·12 minsDeep-Learning MoE LLM起因 # 机缘使然,最近在工作中接触到了 MoE(Mixture of Experts)。
[施工中] cupy与torch的导入顺序不同对计算结果的影响Dec 17, 2023·2486 words·5 minsDeep-Learning PyTorch Cupy Python背景 # 公司内部的基于torch的toolbox在某个版本之后,结果发生了偏移。通过一系列排查,发现当导入cupy和torch的顺序不同时,计算结果会有所差异。 也就是说,如下两段代码会导致模型训练等环节得到不同的计算结果。
使用 Bazel 集成 ONNX RuntimeJan 16, 2023·233 words·1 minDeep-Learning Onnxruntime Bazel记录在 Bazel 工程中引入 ONNX Runtime 预编译包时的动态库、头文件与依赖配置。
【施工中】gitlab ci docker executor指定用户执行Dec 10, 2022·966 words·2 mins工程 Gitlab CI Docker背景 # 需要在gitlab pipelines中跑一堆测试 其中某些测试需要与rancher交互,在训练集群上执行一个训练任务
[施工中]caffe 源码学习笔记(11) softmaxAug 6, 2022·430 words·1 minDeep-Learning Caffe背景 # 2022年惊讶的发现,当时竟然没有写关于softmax的笔记,因此来补充一下。
浅谈 Cpp Value CategoriesApr 12, 2022·925 words·2 mins工程 C++ Cpp Modern Cpp Value Category背景 # 每一个cpp expression都有一个type 和 value category 属性 前者大家都比较了解,但是后者却常常被忽视
levelDB 代码阅读笔记 05 arenaMar 20, 2022·1286 words·3 mins工程 Leveldbarena是levelDB中的内存池实现 接口 # 没有太多好说的,都非常直观。补了些注释