Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Relph1119/mlc-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

16 Commits

Repository files navigation

《机器学习编译》的学习笔记

《机器学习编译》是陈天奇老师的MLC课程,主要包括机器学习编译、张量函数抽象、端到端模型整合、自动化程序优化、机器学习框架整合、自定义硬件后端、自动张量化、计算图优化、部署模型到服务环境、部署模型到边缘设备。基于TVMScript包,学习机器学习编译相关原理,主要围绕TensorIR介绍。

《机器学习编译》课程主页:https://mlc.ai/summer22-zh/

资料整理:https://share.weiyun.com/hrgu6AzE

个人笔记部分主要包括:

  1. 关键代码注释
  2. 分开的练习代码,不采用notebook方式
  3. 整理相关依赖包

运行环境配置

Python版本

Python 3.7.9 Windows环境

运行环境配置

安装相关的依赖包

pip install -r requirements.txt

项目结构

codes----------------------------------------------课程代码
| +---ch02-----------------------------------------第2章 张量程序抽象
| | +---lnumpy_mm_relu.py--------------------------全连接层的张量函数
| | +---lnumpy_mm_relu_v2.py-----------------------全连接层的张量函数V2
| | +---tensor_expression.py-----------------------用张量表达式生成TensorIR
| | +---tensor_program_abstraction.py--------------变换张量函数
| +---ch04-----------------------------------------第4章 端到端模型整合
| | +---end2end_lnumpy.py--------------------------端到端模型的底层Numpy实现
| | +---end2end_numpy.py---------------------------端到端模型的numpy实现
| | +---end2end_tvmscript.py-----------------------在TVMScript中构建端到端IRModule
| | +---mix_tensorir_lib.py------------------------将IRModule和运行时注册的函数混合执行
| | +---register_func.py---------------------------注册运行时函数
| +---ch05-----------------------------------------第5章 自动化程序优化
| | +---auto_schedule.py---------------------------单个元张量函数的自动调度
| | +---end2end_auto_optim_tensor_func.py----------在端到端模型中使用自动搜索和自动调优
| | +---random_transform.py------------------------单个元张量函数的随机调度变换
| | +---random_transform_search.py-----------------单个元张量函数的随机变换搜索
| | +---transform_signle_tensor_func.py------------变换单个元张量函数
| +---ch06-----------------------------------------第6章 与机器学习框架的整合
| | +---blockbuilder_create_irmodule.py------------用BlockBuilder创建IRModule
| | +---fashion_mnist_example.py-------------------FashionMNIST例子
| | +---pytorch_import_model.py--------------------从PyTorch导入模型转成IRModule
| | +---tensor_expression_create_tensorir.py-------Tensor表达式创建TensorIR
| +---ch07-----------------------------------------第7章 GPU 硬件加速 1
| | +---matrix_multiplication.py-------------------优化矩阵乘法
| | +---shared_memory_blocking.py------------------共享内存块
| | +---tensor_add_with_gpu.py---------------------向量加法的GPU加速
| | +---window_sum.py------------------------------滑动窗口求和(Window Sum Example)
| +---ch08-----------------------------------------第8章 GPU 硬件加速 2
| | +---lnumpy_tmm.py------------------------------矩阵乘法
| | +---matmul_block.py----------------------------带有张量化计算的block
| | +---matmul_blockization.py---------------------矩阵乘法的Blockization
| | +---matmul_tensor_intrin.py--------------------矩阵乘法的张量化
| +---ch09-----------------------------------------第9章 计算图优化:算子融合和内存优化
| | +---fasionmnist_computational_graph_optim.py---基于Fasionmnist数据集的计算图优化
| | +---fasionmnist_mlp_fused.py-------------------基于fasionmnist融合Linear和ReLU算子
| | +---pattern_match_modify.py--------------------模式匹配和改写(访问者模式)
| | +---reflect_tensor_ir_calls.py-----------------映射到TensorIR Calls
requirements.txt-------------------------------------运行环境依赖包

思考

1 TVM到底有什么用?

TVM的优势:

  1. 允许用户自定义torch/tensorflow中不存在的算子并生成高效实现
  2. 使用自动调度器,平台相关的(arm/AMD GPU/NVIDIA GPU/intel cpu)性能调优
  3. 对于部署,生成最小化的库,而不是需要依赖一个庞大的第三方库(例如cudnn)
  4. 可以做计算图层面的优化(算子融合等等),可以接受tf/pytorch导出的模型并做相应的计算图和算子调优,提高模型的推理性能(TensorRT等框架也可以做到相关事情)

About

《机器学习编译》的学习笔记和练习代码

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /