AI infra 合集
TensorRT
ncnn
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。 ncnn 从设计之初深刻考虑手机端的部署和使用。 无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。 基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行, 开发出人工智能 APP,将 AI 带到你的指尖。 ncnn 目前已在腾讯多款应用中使用,如:QQ,Qzone,微信,天天 P 图等。Github
- 读 ncnn 源码笔记:从 sample 到
Net::load_param的完整链路 - 读 ncnn 源码(Ⅱ):层工厂与“覆盖机制”,以及 CPU 端的指令集优选
- 读 ncnn 源码(Ⅲ):ParamDict 解析、featmask 按层屏蔽、词法器与 blob 索引(含解析实录)
- 读 ncnn 源码(Ⅳ):Convolution 基类与 x86/FMA 特化 —— 参数到算子的全链路
- 读 ncnn 源码(Ⅴ):Param 读取闭环——从 token 到图,再到 I/O 名单
- 读 ncnn 源码(Ⅵ):模型权重加载链路 —— DataReader / ModelBin / create_pipeline
- 读 ncnn 源码(Ⅶ):以卷积层为例——权重加载与 x86/FMA pipeline 选路
- 读 ncnn 源码(Ⅷ):核心算法细讲——Activation 工厂、CPU 后端选择、im2col+GEMM 权重打包与分块
- 读 ncnn 源码(Ⅸ):im2col+GEMM 原理与
Mat::reshape(w,h,c)的对齐与 cstep - 读 ncnn 源码(Ⅹ):Winograd F(2×2,3×3) 的内核变换、选路与打包(含对比 packed sse)
- 读 ncnn 源码(Ⅺ):Packed Kernel Transform 的“通性”
- 读 ncnn 源码(Ⅻ):图像预处理流水线——从像素到张量的“最后一公里”
- 读 ncnn 源码(XIII):
Extractor::extract——触发推理的引擎核心 - 读 ncnn 源码(XIV):
convert_layout——层间数据格式的“翻译官” - 读 ncnn 源码(XV):Pimpl 惯用法——解耦接口与实现的 C++ 设计基石
- 读 ncnn 源码(XVI):
ncnnoptimize——神经网络图优化的“炼金术” - 读 ncnn 源码(XVII):
fuse_convolution_batchnorm——融合 BN,轻装前行 - 读 ncnn 源码(XVIII):
fuse_convolution_mul——融合逐通道乘法,优化线性计算链 - 读 ncnn 源码(XIX):
fuse_convolution_add——融合逐通道加法,进一步合并线性计算 - 读 ncnn 源码(XX):
fuse_convolutiondepthwise_batchnorm——为深度可分离卷积“减负” - 读 ncnn 源码(XXI):
fuse_convolutiondepthwise_mul——为深度可分离卷积“乘”胜追击 - 读 ncnn 源码(XXII):
fuse_convolutiondepthwise_add——合并深度卷积的偏置链 - 读 ncnn 源码(XXIII):
fuse_deconvolution_batchnorm——反卷积层的 BN 融合 - 读 ncnn 源码(XXIV):
fuse_deconvolution_mul——反卷积层的乘法融合 - 读 ncnn 源码(XXV):
fuse_deconvolution_add——合并反卷积层的偏置链 - 读 ncnn 源码(XXVI):
fuse_deconvolutiondepthwise_batchnorm——深度反卷积的 BN 融合 - 读 ncnn 源码(XXVII):
fuse_innerproduct_batchnorm——全连接层的 BN 融合 - 读 ncnn 源码(XXVIII):
fuse_innerproduct_add——合并全连接层的偏置链 - 读 ncnn 源码(XXIX):
fuse_innerproduct_dropout——推理时移除 Dropout - 读 ncnn 源码(XXX):
replace_reduction_with_global_pooling——算子替换:识别低效模式 - 读 ncnn 源码(XXXI):
replace_prelu_with_leaky_relu——算子退化:用高效实现替换冗余 - 读 ncnn 源码(XXXII):
fuse_convolution_activation——将“激活”压入计算核心 - 读 ncnn 源码(XXXIII):激活融合——
ConvDW、Deconv与InnerProduct的“一体化”改造 - 读 ncnn 源码(XXXIV):
fuse_memorydata_binaryop——将“常量”烘焙进“算子” - 读 ncnn 源码(XXXV):
fuse_binaryop_eltwise——识别加权求和并替换为 Eltwise - 读 ncnn 源码(XXXVI):算子消除——
eliminate_dropout/pooling1x1/noop/split - 读 ncnn 源码(XXXVII):
eliminate_orphaned_memorydata——图优化的“垃圾回收” - 读 ncnn 源码(XXXVIII):消除冗余塑形——
eliminate_flatten/reshape的瘦身之道 - 读 ncnn 源码(XXXIX):消除冗余塑形(下)——
eliminate_reshape_before_binaryop - 读 ncnn 源码(XL):算子替换——当“卷积”退化为“全连接”
- 读 ncnn 源码(XLI):
shape_inference——图优化的“沙盘推演”与“状态重整” - 读 ncnn 源码(XLII):
ncnnoptimize的“编排艺术”——优化 Pass 的依赖与顺序 (ncnnoptimize 完结篇)
AI System
Mini-Infer
- Mini-Infer 架构深潜 (1): 构建高性能、可扩展的
Tensor基石 - Mini-Infer 架构深潜 (2): 抽象
Backend层 - 解耦异构计算 - Mini-Infer 架构深潜 (3): Operator 抽象与“自注册”工厂
- Mini-Infer 架构深潜 (4): Graph 与 Node - 编织计算“神经网”
- Mini-Infer 架构深潜 (5):
Engine- 联结万物的“总指挥” - Mini-Infer (6): 点亮引擎!实现
infer_shape,ReLU与GEMM抽象 - Mini-Infer (7): 高性能“内核注册表” (A TensorRT-Style Kernel Registry)
- Mini-Infer (7.5): 架构的“魔鬼细节” - 深入辩论“内核注册”
- Mini-Infer (7.6): 架构重构 - 用“模板元编程”消除内核注册的“样板戏”
- Mini-Infer (8): Im2Col算法完全讲解
- Mini-Infer (9): 打造高性能算子的基石 — RAII
Buffer与noexcept极致优化 - Mini-Infer (10): 卷积的终极形态 -
Conv2D实现与BiasKernel集成 - Mini-Infer (11): 下采样利器 —
Pooling算子与架构复用之美 - Mini-Infer (12): 特征提取的收缩 —
Pooling算子与架构复用 - Mini-Infer (13): 端到端验证 — LeNet-5 实战与 PyTorch 对齐
- Mini-Infer (14): 迈向 ONNX —
Flatten算子与零拷贝视图 - Mini-Infer (15):
OnnxParser架构设计 - Mini-Infer (16): 模型导入的核心 —
ImporterContext与OperatorRegistry - Mini-Infer (17): 深入字节流 —
WeightImporter与权重加载 - Mini-Infer (18): 编排导入流程 —
ModelImporter与AttributeHelper - Mini-Infer (19): 内置算子导入实战 — Conv, ReLU, Pooling 与 Flatten
- Mini-Infer (20): 优化器的骨架 —
Pass Manager架构设计 - Mini-Infer (21): 图优化实战 — TensorRT 风格的
FusionPass与延迟删除
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 James的成长之路!
评论






