机器学习编译第1讲:机器学习编译概述

MLC-机器学习编译-第一讲-机器学习编译概述

课程主页:https://mlc.ai/summer22-zh/

文章目录

      • 1.0 概述
      • 1.1 什么是机器学习编译
      • 1.2 为什么学习机器学习编译
      • 1.3 机器学习编译的关键要素
        • 1.3.1 备注:抽象和实现
      • 1.4 总结

1.0 概述

机器学习应用程序已经无处不在。我们的智能家居设备由自然语言处理(NLP)和语音识别模型驱动,自动驾驶技术依赖于计算机视觉模型作为支柱,还有推荐系统帮助我们在探索时发现新内容。

同样有趣的是AI应用的部署环境是非常丰富的。推荐系统算法通常由大型公司部署在云平台上;当我们谈论自动驾驶时,我们首先想到的是强大的 GPU 或车辆上的专用计算设备;我们使用手机上的智能应用程序来识别花园中的花朵以及如何照料它们;以及越来越多的物联网传感器也在内置微型芯片中运行着简单的AI算法。

如果我们深入研究这些环境,就会涉及到更多环境多样性。即使对于属于同一类别的环境(例如云​​),也存在关于硬件(ARM 或 x86)操作系统容器执行环境运行时计算库 (Runtime Libraries) 或所涉及的加速器类型的问题。 将智能机器学习模型从研发阶段转而部署到这些多样的生产环境,需要相当多的繁重工作。即使对于我们最熟悉的环境(例如在 GPU 上),部署包含非标准算子的深度学习模型仍然需要大量的工程。

上述许多例子都与机器学习推理相关——即在获得模型权重后进行预测的过程。同时,我们还发现将训练(Training) 过程本身部署到不同环境会变得越来越重要。这些需求源于出于隐私保护原因,或将模型学习扩展到分布式节点集群的需要,或需要将模型更新保持在用户设备的本地。不同的建模选择推理/训练场景为机器学习的生产和部署增加了更多的复杂性。
在这里插入图片描述
本课程将讨论如何把机器学习从开发、研究阶段,引入到生产环境。我们将讨论一系列促进机器学习算法落地部署的方法。由于机器学习和开源系统正在开发新技术,机器学习落地部署仍然是一个开放且活跃的领域。然而,我们开始看到一些共性问题和话题,最终成为本课程的主题。


1.1 什么是机器学习编译

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

  • 开发形式 是指我们在开发机器学习模型时使用的形式。典型的开发形式包括用 PyTorch、TensorFlow 或 JAX 等通用框架编写的模型描述,以及与之相关的权重。
  • 部署形式 是指执行机器学习应用程序所需的形式。它通常涉及机器学习模型的每个步骤的支撑代码、管理资源(例如内存)的控制器,以及与应用程序开发环境的接口(例如用于 android 应用程序的 java API)。

在这里插入图片描述
我们使用术语“编译 (compilation)”,因为可以将这个过程视为与传统编译器所做的非常相似的过程,即编译器将我们的应用程序采用开发形式,并将它们编译为可以部署的库。但是,机器学习编译在很多方面仍然不同于传统编译。

首先,这个过程不一定涉及代码生成。例如,部署形式可以是一组预定义的库函数,而 ML 编译仅将开发形式转换为对这些库的调用。其次,遇到的挑战和解决方案也大不相同。这就是为什么我们希望将机器学习编译作为一个不同于传统编译的独立课题来研究。当然,我们也会在机器学习编译中发现一些有用的传统编译概念。

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

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

这些目标没有严格的界限。例如,集成和硬件加速也可以被视为通用优化。根据具体的应用场景,我们可能对一些模型和生产环境感兴趣,或者我们可能对部署到多个并选择最具成本效益的问题感兴趣。

重要的是,机器学习编译不一定表示单一稳定的解决方案。事实上,随着硬件和模型数量的增长,许多机器学习编译实践涉及与来自不同背景的开发人员的合作。硬件开发人员需要支持他们最新的硬件加速,机器学习工程师需要实现额外的优化,而同时算法工程师也引入了新模型。


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

本课程将机器学习编译作为一种方法论和与之对应的工具集来讲解。这些工具可以与常见的机器学习系统一起使用,或简单地在常见的机器学习系统中工作,从而为用户提供价值。

  • 对于在从事机器学习工作工程师,机器学习编译提供了基础的解决问题的方法和工具。它有助于回答我们可以采用什么方法来特定模型的部署和内存效率,如何将优化模型的单个部分的经验推广到更端到端解决方案等一系列问题。

  • 对于机器学习科学家,学习机器学习编译可以更深入地了解将模型投入生产所需的步骤。机器学习框架本身隐藏了一些技术复杂性,但是当我们尝试开始部署新模型或将模型部署到框架支持不完善的平台时,仍然会面临巨大的挑战。机器学习编译使机器学习算法科学家有机会了解背后的基本原理,并且知晓为什么我的模型的运行速度不及预期,以及如何来使部署更有效。

  • 对于硬件厂商,机器学习提供了一种构建机器学习软件栈的通用方法,能够最好地利用他们构建的硬件。它还提供了自动化软件优化的工具,在尽可能减少整体工程工作量的前提下,跟上新一代硬件和模型的开发。 重要的是,机器学习编译技术并不是孤立地使用的。许多 MLC 技术已被应用或正在整合到常见的机器学习框架和机器学习部署流程中。 MLC 在塑造机器学习框架生态系统的 API、架构和连接组件方面发挥着越来越重要的作用。

  • 最后,学习 MLC 本身很有趣。借助这套现代机器学习编译工具,我们可以进入机器学习模型从高级、代码优化到裸机的各个阶段端到端 (end to end) 地了解这里发生的事情并使用它们来解决我们的问题


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

在这里插入图片描述
在前面的部分中,我们概括地讨论了机器学习编译。现在,我们会深入探讨机器学习编译的一些关键要素。让我们首先回顾一个两层神经网络模型执行的例子。

在这个特定的模型中,我们通过展平输入图像中的像素来获取向量 (Vector);然后,我们应用线性变换,将输入图像投影到长度为 200 的向量上,并运行ReLU 激活函数。最后,我们将其映射到长度为 10 的向量,向量的每个元素对应于图像属于该特定类别的可能性大小。

  • 张量 (Tensor) 是执行中最重要的元素。张量是表示神经网络模型执行的输入、输出和中间结果的多维数组。
  • 张量函数 (Tensor functions): 神经网络的“知识”被编码在权重和接受张量和输出张量的计算序列中。我们将这些计算称为张量函数。值得注意的是,张量函数不需要对应于神经网络计算的单个步骤。部分计算或整个端到端计算也可以看作张量函数。

在这里插入图片描述
我们有多种方法可以在特定环境中实现模型执行。 上面的例子展示了一个例子。 值得注意的是,有两个区别: 首先,第一个linear层和relu计算被折叠成一个 linear_relu 函数,这需要有一个特定的linear_relu的详细实现。 当然,现实世界的用例,linear_relu 可以通过各种代码优化技术来实现,其中一些技术在的后面的课程中会进行介绍。 机器学习编译的过程就是是将上图左侧的内容转换为右侧的过程。在不同的场景中,这个过程可以是手动完成的,也可以使用一些自动转换工具,或两者兼而有之。

1.3.1 备注:抽象和实现

我们可能注意到的一件事是,我们使用了几种不同的方式来表示张量函数。例如,linear_relu 可以表示为图形中的组合框或循环嵌套 (loop nest) 表示。

在这里插入图片描述

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

抽象和实现可能是所有计算机系统中最重要的关键字抽象指定“做什么”,实现提供“如何”做。没有具体的界限。根据我们的看法,for 循环本身可以被视为一种抽象,因为它可以使用 python 解释器实现或编译为本地汇编代码。

MLC 实际上是在相同或不同抽象下转换和组装张量函数的过程。我们将研究张量函数的不同抽象类型,以及它们如何协同工作以解决机器学习部署中的挑战。


1.4 总结

  • 机器学习编译的目标:集成与最小化依赖、利用硬件加速、通用优化
  • 为什么学习机器学习编译:构建机器学习部署解决方案、深入了解现有机器学习框架、为新兴硬件建立软件栈
  • 机器学习编译的关键要素:张量和张量函数、抽象和实现是值得思考的工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】 - Pandas学习 sort_value( ),sort_index( )排序函数的区别与使用

按索引对DataFrame或Series进行排序(注意ascendingfalse的意思是按照降序排序,若不写参数则默认升序排序) DataFrame的构造函数默认参数是(值,列名,行索引),行索引不填则默认0,1,2,3这样? In …

powerdesign 缩写AK,PK,IX,CK,FK,DF,UQ

PK - Primary Key IX - Non-Unique Index AK - Unique Index (AX should have been AK (Alternate Key)) CK - Check Constraint DF - Default Constraint FK - Foreign Key UQ - Unique Constraint

重读经典:《The Craft of Research(1)》

跟读者建立联系【研究的艺术一】这一次李沐博士给大家精读的是一本关于论文写作的书籍。这本书总共包含四个大的章节,本期视频李沐博士介绍的是第一个章节:Research,Researchers,and Readers。 0. 前言 视频开头,李沐…

【PAT - 甲级1045】Favorite Color Stripe(30分)(dp,LIS类问题)

题干: Eva is trying to make her own color stripe out of a given one. She would like to keep only her favorite colors in her favorite order by cutting off those unwanted pieces and sewing the remaining parts together to form her favorite color s…

机器学习编译第2讲:张量程序抽象

02 张量程序抽象 【MLC-机器学习编译中文版】课程主页:https://mlc.ai/summer22-zh/ 文章目录2.1 元张量函数2.2 张量程序抽象2.2.1 张量程序抽象中的其它结构2.3 张量程序变换实践2.3.1 安装相关的包2.3.2 构造张量程序2.3.3 编译与运行2.3.4 张量程序变换2.3.5 通…

迁移TFS 2012服务至新的电脑硬件

迁移TFS 2012的时候碰到一些问题, 中文记录很少, 英文的记录也比较零散. 这里记录最直接和简单的方法. 环境: 1. 公司域环境, 所有TFS用户都是公司域帐户. 2. TFS从一台服务器转移至另一台服务器. 都加入了公司域. 机器名分别为PC1和PC2. 域内不能有同名的电脑。 准备两台…

【PAT - 甲级1005】Spell It Right (20分) (递归输出,水题)

题干: Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English. Input Specification: Each input file contains one test case. Each case occupies one line which contain…

详解自动驾驶仿真数据集 SHIFT:A Synthetic Driving Dataset for Continuous Multi-Task Domain Adaptation

SHIFT:A Synthetic Driving Dataset for Continuous Multi-Task Domain Adaptation本文介绍一个新的自动驾驶仿真数据集:SHIFT,论文收录于 CVPR2022。适应连续变化的环境是自动驾驶系统一直以来要面临的挑战。然而,目前现有的图像…

TFS下的源代码控制

以下主要描述了: TFS源代码控制系统的基本场景如何把一个项目添加到源代码管理中如何与服务器同步如何做Check-In如何做分支与合并什么是上架与下架 我们知道工作项是项目管理的基本元素,但是一个项目的成功,光有工作项还是不够的。工作项说…

【PAT - 甲级1004】Counting Leaves (30分) (dfs,递归)

题干&#xff1a; A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one test case. Each case starts with a line containing 0<N<100,…

地平线:面向规模化量产的智能驾驶系统和软件开发

导读 7月27日&#xff0c;地平线在智东西公开课开设的「地平线自动驾驶技术专场」第3讲顺利完结&#xff0c;地平线智能驾驶应用软件部负责人宋巍围绕 《面向规模化量产的智能驾驶系统和软件开发》这一主题进行了直播讲解。本次分享主要分为以下4个部分&#xff1a; 1、智能驾驶…

【转】TFS上分支和标签的用法

什么时候用分支: 例如为某个客户定制的专用版本,和主干的特性有很大差别.不具通用性的需求. 大的版本修改,例如2.0 到3.0 加了很多特性,但2.0 还有维护.改bug 什么时候用标签: 小版本的发布, 如2.1.1到2.1.2. 分支的优点: 清晰,容易操作,程序员只要get latest/checkin latest就…

【PAT - 甲级1034】Head of a Gang (30分)(并查集)

题干&#xff1a; One way that the police finds the head of a gang is to check peoples phone calls. If there is a phone call between A and B, we say that A and B is related. The weight of a relation is defined to be the total time length of all the phone c…

重读经典(CLIP上):《Learning Transferable Visual Models From Natural Language Supervision》

CLIP 论文逐段精读【论文精读】这一次朱毅博士给大家精读的论文是 CLIP&#xff0c;来自于 OpenAI&#xff0c;是图像文本多模态领域一个里程碑式的工作。 CLIP 的影响力可见一斑&#xff0c;如果按照沐神之前讲的如何判断一个工作的价值来说&#xff0c;CLIP 应该就是 1001001…

TFS准备(一)

一、TFS概念&#xff1a; TFS全称Team FoundationServer&#xff0c;是应用程序生命周期管理的服务端&#xff0c;功能包括如图功能&#xff1a;源代码管理&#xff0c;版本控制&#xff0c;团队开发协作&#xff0c;统一集成&#xff0c;测试管理等。 二、TFS安装要求&#…

【PAT - 甲级1094】The Largest Generation (25分)(dfs建树)

题干&#xff1a; A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the largest population. Input Specification: Each input file contai…

重读经典(CLIP下):《Learning Transferable Visual Models From Natural Language Supervision》

上文链接&#xff1a;重读经典&#xff08;CLIP上&#xff09;&#xff1a;《Learning Transferable Visual Models From Natural Language Supervision》 5. 实验 现在我们已经知道 CLIP 是如何进行预训练的以及作者为什么选用对比学习来预训练 CLIP&#xff0c;接下来我们就…

TFS创建团队项目(三)

打开Visual Studio 2013&#xff0c;视图-团队资源管理器-连接图标&#xff08;插头图标&#xff09; 当前是没有TFS服务器&#xff0c;点击服务器按钮 添加&#xff0c;并在URL地址栏里输入装有TFS的服务器IP地址&#xff08;配置完TFS后有这个URL&#xff1a;http://tfs-serv…

【PAT - 甲级1007】Maximum Subsequence Sum (25分)(前缀和)

题干&#xff1a; Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i1​​, ..., N​j​​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the l…

详解4D毫米波雷达数据集(VOD)Multi-class Road User Detection with 3+1D Radar in the View-of-Delft Dataset

Multi-class Road User Detection with 31D Radar in the View-of-Delft Dataset本文介绍一个新的自动驾驶数据集&#xff1a;VOD&#xff0c;论文收录于 ICRA2022。下一代毫米波雷达除了提供距离、方位和多普勒速度外&#xff0c;还会提供高度信息。 在本文中&#xff0c;作者…