{"id":20673038,"url":"https://github.com/relph1119/mlc-learning","last_synced_at":"2025-07-22T09:34:17.660Z","repository":{"id":57753125,"uuid":"518044682","full_name":"Relph1119/mlc-learning","owner":"Relph1119","description":"《机器学习编译》的学习笔记和练习代码","archived":false,"fork":false,"pushed_at":"2022-09-04T14:56:19.000Z","size":413,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T18:49:09.286Z","etag":null,"topics":["mlc"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Relph1119.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-26T12:05:46.000Z","updated_at":"2024-10-19T01:55:12.000Z","dependencies_parsed_at":"2022-08-26T06:42:13.790Z","dependency_job_id":null,"html_url":"https://github.com/Relph1119/mlc-learning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Relph1119/mlc-learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relph1119%2Fmlc-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relph1119%2Fmlc-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relph1119%2Fmlc-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relph1119%2Fmlc-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Relph1119","download_url":"https://codeload.github.com/Relph1119/mlc-learning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Relph1119%2Fmlc-learning/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266465618,"owners_count":23933161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mlc"],"created_at":"2024-11-16T20:39:51.051Z","updated_at":"2025-07-22T09:34:17.620Z","avatar_url":"https://github.com/Relph1119.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 《机器学习编译》的学习笔记\n\n《机器学习编译》是陈天奇老师的MLC课程，主要包括机器学习编译、张量函数抽象、端到端模型整合、自动化程序优化、机器学习框架整合、自定义硬件后端、自动张量化、计算图优化、部署模型到服务环境、部署模型到边缘设备。基于TVMScript包，学习机器学习编译相关原理，主要围绕TensorIR介绍。\n\n《机器学习编译》课程主页：https://mlc.ai/summer22-zh/\n\n资料整理：https://share.weiyun.com/hrgu6AzE\n\n个人笔记部分主要包括：\n1. 关键代码注释\n2. 分开的练习代码，不采用notebook方式\n3. 整理相关依赖包\n\n## 运行环境配置\n### Python版本\nPython 3.7.9 Windows环境\n\n### 运行环境配置\n安装相关的依赖包\n```shell\npip install -r requirements.txt\n```\n\n## 项目结构\n\u003cpre\u003e\ncodes----------------------------------------------课程代码\n|   +---ch02-----------------------------------------第2章 张量程序抽象\n|   |   +---lnumpy_mm_relu.py--------------------------全连接层的张量函数\n|   |   +---lnumpy_mm_relu_v2.py-----------------------全连接层的张量函数V2\n|   |   +---tensor_expression.py-----------------------用张量表达式生成TensorIR\n|   |   +---tensor_program_abstraction.py--------------变换张量函数\n|   +---ch04-----------------------------------------第4章 端到端模型整合\n|   |   +---end2end_lnumpy.py--------------------------端到端模型的底层Numpy实现\n|   |   +---end2end_numpy.py---------------------------端到端模型的numpy实现\n|   |   +---end2end_tvmscript.py-----------------------在TVMScript中构建端到端IRModule\n|   |   +---mix_tensorir_lib.py------------------------将IRModule和运行时注册的函数混合执行\n|   |   +---register_func.py---------------------------注册运行时函数\n|   +---ch05-----------------------------------------第5章 自动化程序优化\n|   |   +---auto_schedule.py---------------------------单个元张量函数的自动调度\n|   |   +---end2end_auto_optim_tensor_func.py----------在端到端模型中使用自动搜索和自动调优\n|   |   +---random_transform.py------------------------单个元张量函数的随机调度变换\n|   |   +---random_transform_search.py-----------------单个元张量函数的随机变换搜索\n|   |   +---transform_signle_tensor_func.py------------变换单个元张量函数\n|   +---ch06-----------------------------------------第6章 与机器学习框架的整合\n|   |   +---blockbuilder_create_irmodule.py------------用BlockBuilder创建IRModule\n|   |   +---fashion_mnist_example.py-------------------FashionMNIST例子\n|   |   +---pytorch_import_model.py--------------------从PyTorch导入模型转成IRModule\n|   |   +---tensor_expression_create_tensorir.py-------Tensor表达式创建TensorIR\n|   +---ch07-----------------------------------------第7章 GPU 硬件加速 1\n|   |   +---matrix_multiplication.py-------------------优化矩阵乘法\n|   |   +---shared_memory_blocking.py------------------共享内存块\n|   |   +---tensor_add_with_gpu.py---------------------向量加法的GPU加速\n|   |   +---window_sum.py------------------------------滑动窗口求和(Window Sum Example)\n|   +---ch08-----------------------------------------第8章 GPU 硬件加速 2\n|   |   +---lnumpy_tmm.py------------------------------矩阵乘法\n|   |   +---matmul_block.py----------------------------带有张量化计算的block\n|   |   +---matmul_blockization.py---------------------矩阵乘法的Blockization\n|   |   +---matmul_tensor_intrin.py--------------------矩阵乘法的张量化\n|   +---ch09-----------------------------------------第9章 计算图优化：算子融合和内存优化\n|   |   +---fasionmnist_computational_graph_optim.py---基于Fasionmnist数据集的计算图优化\n|   |   +---fasionmnist_mlp_fused.py-------------------基于fasionmnist融合Linear和ReLU算子\n|   |   +---pattern_match_modify.py--------------------模式匹配和改写（访问者模式）\n|   |   +---reflect_tensor_ir_calls.py-----------------映射到TensorIR Calls\nrequirements.txt-------------------------------------运行环境依赖包\n\u003c/pre\u003e\n\n## 思考\n\n### 1 TVM到底有什么用？\nTVM的优势：  \n1. 允许用户自定义torch/tensorflow中不存在的算子并生成高效实现\n2. 使用自动调度器，平台相关的（arm/AMD GPU/NVIDIA GPU/intel cpu）性能调优\n3. 对于部署，生成最小化的库，而不是需要依赖一个庞大的第三方库（例如cudnn）\n4. 可以做计算图层面的优化（算子融合等等），可以接受tf/pytorch导出的模型并做相应的计算图和算子调优，提高模型的推理性能（TensorRT等框架也可以做到相关事情）","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelph1119%2Fmlc-learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelph1119%2Fmlc-learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelph1119%2Fmlc-learning/lists"}