教程# TVM 环境配置 MSC MSC 简介 动机 指南级解释 MSCGraph RuntimeManager MSCTools MSCProcessor MSCGym 参考级解释 核心概念: 编译过程: 模型翻译 MSCGraph 与 PyTorch 模型互转 转换为 relay 转换为 relax 翻译 Relay 代码 conv2d 翻译 PyTorch 代码 conv1d 前端模型 配置前端环境 PyTorch 前端环境 TensorFlow 前端环境 MXNET 前端模型 从 mxnet gluon 模型动物园下载模型 编译 Graph 在 TVM 上执行可移植 Graph 使用带有预训练权重的 MXNet Symbol TensorFlow 前端 Tensorflow1 前端 Tensorflow(pb) 转 ONNX Tensorflow 前端之 TF-slim TensorFlow1 推理 升级 TF1 为 TF2 检查点迁移 SavedModel TensorFlow 1:保存和导出 SavedModel TensorFlow 2:保存和导出 SavedModel 保存并导出使用 Keras 定义的 SavedModel 加载 SavedModel TensorFlow 1:使用 tf.saved_model.load 加载 SavedModel TensorFlow 2:加载使用 tf.saved_model 保存的模型 TensorFlow1 pb 推理 TensorFlow2 推理 TensorFlow2 Keras 推理 转换为 ONNX 模型 转换为 TFLite 模型 PyTorch 前端 原语库 深度学习框架是如何提供灵活性的? PyTorch 量化 ONNX 前端 ONNX 概述 访问 ONNX graph 序列化与反序列化 初始化器与默认值 节点属性 评估与运行时 评估节点 逐步评估 评估自定义节点 ONNX Runtime 概述 PyTorch 翻译为 ONNX ONNX 模型精简 torch.Tensor.expand() 转换 torch.Tensor.repeat() 转换 torch 索引转换 torch 切片转换 ONNX GatherND onnx ScatterND onnx flatten onnx conv+reshape onnx L2 范数 BN+conv Resize PyTorch 翻译为 ONNX(temp) PyTorch 算子测试 unsqueeze_constant embedding_bag index_put_slice torchvision 模型 resnet18 ONNX 测试样例 reshape double_reshape expand depth_to_space space_to_depth shape power range squeeze flatten unsqueeze unsqueeze_with_neg_axes gather dynamic_gather gatherelements scatter scatter_elements slice onnx_op_elementwise Caffe 前端 Caffe 简介 PyTorch Relax 前端 Roofline Model 测试 Roofline 模型 estimate_peak_flops_cpu estimate_peak_flops_gpu estimate_peak_bandwidth_cpu estimate_peak_bandwidth_gpu roofline_analysis PAPI PAPI 简介 部署入门 部署 TVM 模块 TVM 构建 Relay 构建 获取目标源码 Python 端部署 C++ 部署 方式 A 方式 B Relay 部署 量化 relay 定点乘法(C++) 定点乘法 relay 定点乘法 relay 逐通道定点乘法 解构 TVM 量化 自定义 TVM 自动量化 定义融合规则 为融合函数添加 QPartitionExpr 算子 消除计算图中的函数表达式 注解计算图 模拟量化 量化实现 测试 TVM 量化 重写 Relay 函数 DFPatternCallback 替换加法为减法 计算图分割 多节点编译 编译外部库 注解白名单 其他外部编译器支持 函数 lifting 注解常量折叠 多输出 计算图分割(old) mixed_single_multiple_outputs multiple_use_of_an_output 计算卷积带宽