首页 > 其他分享 >机器学习编译MLC

机器学习编译MLC

时间:2024-04-03 11:25:12浏览次数:11  
标签:MLC 机器 模型 张量 学习 编译

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

机器学习编译概述

1.1 什么是机器学习编译

机器学习编译 (machine learning compilation, MLC) 是指,将机器学习算法从开发阶段,通过变换和优化算法,使其变成部署状态。

开发形式 是指我们在开发机器学习模型时使用的形式。典型的开发形式包括用 PyTorch、TensorFlow 或 JAX 等通用框架编写的模型描述,以及与之相关的权重。

部署形式 是指执行机器学习应用程序所需的形式。它通常涉及机器学习模型的每个步骤的支撑代码、管理资源(例如内存)的控制器,以及与应用程序开发环境的接口(例如用于 android 应用程序的 java API)。
img

机器学习编译通常有以下几个目标:

  • 集成与最小化依赖 部署过程通常涉及集成 (Integration),即将必要的元素组合在一起以用于部署应用程序。 例如,如果我们想启用一个安卓相机应用程序来检测猫,我们将需要图像分类模型的必要代码,但不需要模型无关的其他部分(例如,我们不需要包括用于 NLP 应用程序的embedding table)。代码集成、最小化依赖项的能力能够减小应用的大小,并且可以使应用程序部署到的更多的环境。
  • 利用硬件加速 每个部署环境都有自己的一套原生加速技术,并且其中许多是专门为机器学习开发的。机器学习编译的一个目标就是是利用硬件本身的特性进行加速。 我们可以通过构建调用原生加速库的部署代码或生成利用原生指令(如 TensorCore)的代码来做到这一点。
  • 通用优化 有许多等效的方法可以运行相同的模型执行。 MLC 的通用优化形式是不同形式的优化,以最小化内存使用或提高执行效率的方式转换模型执行。

1.2 为什么学习机器学习编译

对于机器学习科学家,学习机器学习编译可以更深入地了解将模型投入生产所需的步骤。机器。机器学习编译使机器学习算法科学家有机会了解背后的基本原理,并且知晓为什么我的模型的运行速度不及预期,以及如何来使部署更有效。对于硬件厂商,机器学习编译提供了一种构建机器学习软件栈的通用方法,能够最好地利用他们构建的硬件。重要的是,机器学习编译技术并不是孤立地使用的。许多 MLC 技术已被应用或正在整合到常见的机器学习框架和机器学习部署流程中。 MLC 在塑造机器学习框架生态系统的 API、架构和连接组件方面发挥着越来越重要的作用。最后,学习 MLC 本身很有趣。

1.3 机器学习编译的关键要素

张量 (Tensor) 是执行中最重要的元素。张量是表示神经网络模型执行的输入、输出和中间结果的多维数组。

张量函数 (Tensor functions) 神经网络的“知识”被编码在权重和接受张量和输出张量的计算序列中。我们将这些计算称为张量函数。值得注意的是,张量函数不需要对应于神经网络计算的单个步骤。部分计算或整个端到端计算也可以看作张量函数。

1.4 抽象和实现

我们使用抽象 (Abstraction)来表示我们用来表示相同张量函数的方式。不同的抽象可能会指定一些细节,而忽略其他实现(Implementations)细节。例如,linear_relu 可以使用另一个不同的 for 循环来实现。

张量程序抽象与实践

2.1 元张量函数

机器学习编译的过程可以被看作张量函数之间的变换
同一个元张量函数的不同形式

2.2 张量程序抽象

张量程序抽象的一个重要性质是,他们能够被一系列有效的程序变换所改变。
img

张量程序抽象中的其它结构
img
举个例子,上面图中的程序包含额外的 T.axis.spatial 标注,表明 vi 这个特定的变量被映射到循环变量 i,并且所有的迭代都是独立的。

  • 张量程序是一个表示元张量函数的有效抽象
    • 关键成分包括: 多维数组,循环嵌套,计算语句。
    • 程序变换可以被用于加速张量程序的执行。
    • 张量程序中额外的结构能够为程序变换提供更多的信息。

端到端模型整合

自动程序优化

标签:MLC,机器,模型,张量,学习,编译
From: https://www.cnblogs.com/moguw/p/18112248

相关文章

  • Python机器学习实验 数据处理之Numpy
    一、实验目的1.了解numpy库的基本功能2.掌握Numpy库的对数组的操作与运算二、实验工具:1.Anaconda2.Numpy三、Numpy简介Numpy的英文全称为NumericalPython,指Python面向数值计算的第三方库。Numpy的特点在于,针对Python内建的数组类型做了扩充,支持更高维度的数......
  • 在aarch64上编译,fstack: master分支:5b97230c858598a10e1b82c tag: v1.23, origin/mast
    F-Stack一个基于DPDK的开源和高性能网络框架 基于DPDK23.11需要做如下操作sed替换:sed-n'/DEV_RX_OFFLOAD_IPV4_CKSUM/p'drivers/net/macb/*sed-i's/ETH_/RTE_ETH_/g'*.csed-i's/DEV_/RTE_ETH_/g'*.c f-stack适配dpdk20.11sed-i's/RTE_MBUF_F_RX_I......
  • Machine Learning机器学习之文本分析的知识图谱(详细讲解)
    目录前言历史:概念思想:知识图谱主要发展历程:知识图谱重要组成部份和特征:知识图谱案列(关于学院、课程、学生):一、知识图谱的存储 二、知识图谱的构建过程 数据层:模式层(构建模式与概念本体设计):三、知识图谱的分析四、知识图谱应用 基于知识图谱应用于电商领域:1.......
  • Machine Learning机器学习之文本分析的词法分析、句法分析、语义分析(详细讲解)
    目录前言词法分析:词义消歧:句法分析:语义分析:文本分析应用1、文本分类:设计过程:代码实现:完整代码: 2、情感分析:总结博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯......
  • Eval-Expression.NET: 在运行时计算、编译和执行C代码和表达式。
    https://www.5axxw.com/wiki/content/8ahrg3 在运行时评估、编译和执行动态C代码和表达式从简单的C数学表达式。。。intresult=Eval.Execute<int>("X+Y",new{X=1,Y=2});要解析的复杂代码。intresult=Eval.Execute<int>(@"varlist=newList<int>(){1......
  • 深度学习-机器视觉part2
    深度学习-机器视觉part2文章目录深度学习-机器视觉part2一、从卷积到卷积神经网络二、手撕卷积代码2.1动机2.2数据集2.3卷积操作2.3.1填充(padding)2.3.2卷积块2.3.3池化2.3.4Softmax2.4完整CNN2.5训练改进三、经典CNN模型介绍四、CNN模型的实际应用参考一......
  • 【机器学习300问】61、逻辑回归与线性回归的异同?
        本文讲述两个经典机器学习逻辑回归(LogisticRegression)和线性回归(LinearRegression)算法的异同,有助于我们在面对实际问题时更好的进行模型选择。也能帮助我们加深对两者的理解,掌握这两类基础模型有助于进一步理解更复杂的模型结构,例如逻辑回归是许多复杂分类算法的......
  • Linux 编译升级内核
    要在CentOS上手动编译并安装Linux内核4.19.311,你需要遵循一系列步骤。以下是一个简化的流程概述,但请注意实际操作时需要根据你的CentOS版本、内核源码以及实际情况稍作调整:准备工作:登录到具有足够权限的用户(最好是root或使用sudo)。更新系统:sudoyumupdate-y安装编译......
  • windows下编译paho.mqtt
    1、准备(1)Github仓库地址:https://github.com/eclipse/paho.mqtt.chttps://github.com/eclipse/paho.mqtt.cpp(2)VisualStudio2022以及CMakehttps://visualstudio.microsoft.com/zh-hans/vs/community/https://cmake.org/download/2、编译C库首先clone源码到本地文件......
  • 机器学习实践篇第一篇-安装及配置环境
    一.机器学习的概念    机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重组织已有的知识结构使之不断改善自身的性能。它是人工智能核心,是使计算机具有智......