嗯,大家好,我叫陈天奇。今天我来给大家分享我们社区最近做的一项工作,也就是本期报告的标题所涉及的:如何解决深度学习系统到各种硬件部署的问题。由于今天的幻灯片似乎有些问题,可能没有动画效果,所以我可以手工演示一下,给大家来分享这个内容。

其实我们现在面临的一个非常大的问题是:做深度学习时,TVM社区大约在两年前,我和华盛顿大学的合作者Terry(左下角所示)开始着手这个项目。他是目前我主要的硬件合作伙伴。当时我们看到TPU等深度学习加速器很火,我们希望制造新的AI芯片。对于高校而言,设计新型AI芯片相对可行,因为其难度低于CPU或GPU设计,具有特异性。

甚至几年前YouTube上就有直接将深度学习加速器作为硬件课程内容的案例。我们可以开设一门“AI芯片设计”课,在一个学期内讲解基本原理,其中涵盖了许多深度学习硬件设计的理念。当时Terry找我合作设计新的深度学习加速器,尽管那时TPU尚未问世,但他专注于此并邀请我共同研究。

起初我们认为可以合作完成。但在开始实施后,我们发现Terry花了一年时间设计出加速器,但这只是起点而非终点。完整的AI芯片需要重新构建所有架构,包括手写汇编以支持其指令集,并适配TensorFlow、Caffe、MXNet等框架。

对于新芯片设计而言,主要瓶颈往往不在硬件本身,而在软件栈的从头构建。这一问题不仅存在于AI芯片中,在嵌入式、无人驾驶等领域同样存在。无论是树莓派、手机还是Intel NUC等AI芯片,每种硬件几乎都需要从头打造一套软件栈。

目前的生态中,针对每类硬件优化都会尝试构建独立的软件栈。我们认为下一代深度学习框架的核心问题在于实现全栈协同优化,即从模型到硬件进行联合调优。TVM的目标是成为一个支持所有CPU、GPU及新型AI加速器的全栈深度学习编译器。

从用户角度看,TVM提供多种前端框架支持(如Keras、MXNet、TensorFlow)。用户可以直接获取模型,通过编译器生成可在执行端运行的库,并部署到不同设备。我们支持JavaScript(浏览器)、Python及各类手机等设备,简化了跨平台部署流程。

实现这一目标极具挑战,因为深度学习框架初期主要优化NVIDIA GPU或Intel CPU,而全栈编译优化框架的难度远超现有框架。我们需要采用前沿研究策略。但一旦成功,将极大减轻深度学习部署到各硬件的压力。

要使TVM真正可用极其困难。首先,它必须能与现有框架(如我参与优化的MXNet)竞争。目前主流框架均使用手写优化库,例如ARM上的NNPACK、Intel上的MKLDNN以及CUDA上的cuDNN。自动编译的效果至少需媲美手写库,这本身非常困难。

其次,优化不仅限于算子层面,还需结合高层优化与硬件特性进行协同设计。经过两年发展,TVM社区已取得显著成效:在NVIDIA GPU上(batch size为1时),其效果优于基于cuDNN的Amazon TensorFlow等库;在ARM平台上,TVM表现甚至超过TensorFlow Lite。

在ARM架构上,TVM原本就比ARM Compute Library表现优异得多;尽管后者近期更新,但TVM仍能保持领先。值得注意的是,我们倡导的理念是自动优化,而非手写库之间的竞争。我们希望编译器能自动生成代码以整合这些手写库,这极具挑战性。

XLA曾出现负优化现象,例如TensorFlow XLA在GPU上的效果通常不如原生TensorFlow。这是因为自动生成代码需媲美手写cuDNN极为困难,因此XLA不及TensorFlow是可以理解的。相反,TVM能超越手写库体现了巨大的技术突破和努力。

XLA可能还因主要优化TPU,导致对其他硬件支持较弱。接下来我将介绍为实现上述效果所采取的多层优化策略。有人问及是否因JetBrains导致XLA效果不佳,实际上这与编译器无关,主要在于自动生成代码的质量不如cuDNN优化得好。

TVM的工作流程大致分为几个步骤,我先做一个概览介绍。第一步是计算图优化。现代深度学习库(如TensorFlow、MXNet)通常包含计算图表示,类似于数据库中的SQL查询优化器。我们可以对描述需求的计算图进行等价变换,从而加速执行。

例如,常见的卷积、Batch Normalization和ReLU组合可以被融合为一个操作符(Op)。由于内存访问开销降低,这种融合后的执行速度更快。计算图优化类似于数据库查询优化:通过变换提升程序效率,但需处理大量可能的算子组合。

然而,手动为每种算子组合(如卷积+BN+ReLU)编写专用库并不现实。因此需要自动代码生成方法。我们可以在计算图层面进行多种优化,包括内存访问效率提升、算子融合以及数据排布优化。例如,NCHW并非总是最优的数据格式。

对于矩阵乘法而言,行优先或列优先排列往往不是最佳选择,某些特殊的块状排布可能更高效。这些细节均可在计算图中表示。XLA本质上也是一个计算图框架,但其局限性在于:高层框架仅将卷积视为节点,未涵盖底层优化细节。

手写算子时需考虑CPU向量化、数据预打包(prepack)或GPU线程配置及精度等多种优化选项,这些在高层计算图中未被描述,导致自动优化困难。这也是XLA难以达到最佳性能的原因:给定卷积后,仍需依赖手写规则指定特定硬件优化方案。

若手写规则不及手动编写的算子性能,结果将糟糕。因此TVM引入了第二层表示:张量表达式语言(Tensor Expression Language)。这是一种数学公式表达形式,与计算图有何不同?以矩阵乘法为例:输出维度为m和n,第i个位置的计算规则是ak乘以bk并按k求和。

这种表达直接描述单元级别的计算方式,涵盖几乎所有高层算子作为基本原语(Primitive)。其优势在于易于生成代码,因为表达式已包含所需逻辑。接下来需将这些张量表达式映射到不同硬件上。现代硬件种类繁多,对程序编写有不同要求。

早期CPU直接按浮点数单元计算,使用for循环即可;而现代指令集如Neon或AVX提供向量操作。新型AI芯片(如TPU)也有特定要求,因此需要灵活映射机制以适应不同硬件特性。

VTA的基本操作单元是张量级别的,这意味着其基本指令可以直接对给定的矩阵或向量执行矩阵-向量乘法或矩阵-矩阵乘法。这导致算子库必须能够利用这些张量指令集,即解决“算子的张量化”问题。第二个问题是内存管理差异:CPU缓存由硬件自动管理,开发者只需编写内存访问代码;而GPU的共享内存需要手工指定。

对于常见的加速器,所有内存均需手工指定,且存在不同的存储分割。例如,部分内存仅用于存放权重(weights),另一部分仅用于输入(input)。某些指令只能从特定的两个缓存中读取数据进行计算,并将结果存入特殊的缓存。此外,数据类型也存在巨大差异,如单精度浮点数、FP16、INT8甚至低至1bit或2bit的低比特数据类型。

这些多样的硬件选择使得优化和代码生成变得极其困难。以张量化为例,虽然CPU或GPU开发者可能较少接触,但NVIDIA Volta架构已引入Tensor Core。预计未来的AI加速器都将配备此类张量核心计算单元。因此,系统需要自动生成代码,并将算法映射到这些分割后的张量指令集上。

TVM的做法是允许硬件设计者声明其张量指令集的形态,从而通过Tensor Expression直接支持最新的AI加速器。针对同一算子在不同硬件上的优化涉及大量细节,如同老中医抓药般复杂:需进行张量化、线程优化及缓存优化等。TVM将这些手工优化的“药方”归纳总结,使自动代码生成也能选择这些策略。

我们整合了Heuristic Loop Tensor Comprehension中的简单循环变换,以及针对加速器、GPU和CPU的特殊优化(如张量化和在加速器上的流水线优化)。基本思路是将所有可能的手工优化策略作为搜索空间的一部分。这一做法带来的后果是,搜索空间的规模达到十亿(Billion)级别。

我们的思路是将所有手工优化方法纳入搜索空间,并自动进行搜索。这引出了AutoTVM模块:利用TVM框架自动搜索每个算子的最优实现。有人问TVM与现代手写库相比如何?我们认为AutoTVM的上限可能高于手工优化,因为机器可以解决人因精力有限而无法覆盖的问题。

有一种观点认为机器永远无法超越手工优化,因为只要人能总结出好的策略,效果就优于机器。这在一定程度上成立:若人与机器解决相同问题,人可能略胜一筹。但实际上,机器解决的问题可能与人类不同。例如在卷积中,直接使用矩阵乘法库可能不如融合算子的代码生成效率高。

由于融合算子组合繁多,人工难以优化所有情况,导致人力不足。机器通过解决人未涉足的问题(如融合算子),往往能获得更高效率,这是自动化带来高性能的主要原因。反之,当搜索空间包含人的所有策略时,机器也能通过自动搜索达到甚至超越人工手写优化的效果。

这是因为人类精力有限,无法尝试所有组合。这也是TVM在ARM或GPU上比某些手写优化库更快的原因。如何进行自动优化?最简单的方法是“黑盒自动调优”(Black Box Auto Tuning),即不断尝试搜索空间中的不同代码实现,并在目标设备上运行以获取执行时间。

主要问题在于每次测试都需部署到设备,开销较大。AutoTVM尝试用机器学习改进此过程:提出可能的算法供硬件测试,并将结果收集为训练数据。利用这些数据训练一个预测程序运行时间的模型(Cost Model)。

有了这个成本模型,我们不必每次都向实际硬件提交测试。我们可以利用该模型指导搜索,快速找到较快的实现方案。即使搜索空间高达上亿级别,也能相对容易地找到较好结果。有兴趣者可查看AutoTVM的API文档(docs.tvm.ai)。

对于希望进行性能优化的用户,可以通过设计模板指定较大的搜索空间。AutoTVM会自动在该空间中寻找算子的最佳解。这不仅需要算法知识,还需要系统层面的知识。例如,许多用户询问如何在没有对应开发板的最新手机上进行自动调优。

为此我们提供了TVM RPC,这是一个远程调用框架。它允许你在笔记本上运行编译器代码(如右侧所示),而目标设备可以是远程的Raspberry Pi或其他支持的设备。目前主要支持各类开发板和手机,如安卓设备。

你可以在笔记本上编译程序,直接上传至安卓设备执行并返回结果(包括计时等操作)。这使得在手机上进行自动调优变得非常简单。基于此,我们最近调试了三四种种开发板和手机的组合,在ARM平台上的结果相当不错。

此外,TVM RPC方案不仅支持单台手机,还支持“设备集群”。这意味着你可以将机器学习调优程序运行在服务器上,并连接十个或一百台手机。系统包含类似BitTorrent Tracker的组件,用于追踪所有设备并进行分布式调度。

这使得你可以利用集群进行自动调优。总体而言,对于一般用户而言,无需编写AutoTVM模板。给定一个高层模型(如框架描述的模型),TVM会自动通过Halide获取需要调试的主要任务,并交给AutoTVM进行调优。

调优完成后,结果会被记录并在下次编译时直接使用。此前我们讨论了如何与新的AI芯片结合。经过两年合作,我们推出了VTA(Vector Tensor Architecture)。VTA在TVM之下增加了一层硬件连接层,是一个完全开源的AI芯片设计。

它包含HLS(高层次综合)实现,并计划改为支持RTL以兼容Quartus等工具。VTA是一个完整的端侧AI加速器设计,类似于HTPU,拥有完整的指令集。我们最初设计的目的是填补学术界和开源社区中AI加速器开源设计的空白,让大家都能参与研究。

VTA不仅包含硬件设计,还有一套完整的指令集和JIT运行时系统,可直接与TVM对接。TVM生成针对VTA JIT runtime的调用指令,并在线自动生成AI芯片指令集在VTA上运行。我们的设计理念是未来的硬件应更“笨”,即严格遵循软件指令,不做额外假设。

这种设计允许在软件层面灵活支持各种功能(如一维、二维卷积或反卷积),无需硬件专门支持。但这要求软件具备更强的能力,因此TVM与VTA结合能达到最佳效果。由于硬件设计简化,VTA无需流片即可在FPGA上实现不错的效率。

除了IP核,我们还支持完整的模拟器。用户可在TVM文档网站(docs.tvm.ai/vta)找到样例并直接运行。该模拟器模拟了VTA AI芯片的指令,用户可直接在上面跑端到端应用。对于AI芯片研究者而言,这提供了完整的软件栈以探索有趣的问题。

例如,评估对AI芯片的额外扩展对其最终工作的影响力。我们希望借此降低创业公司或高校进入AI芯片领域的门槛,只需在VTA基础上增强或与TVM现有加速器合作。目前也有其他AI芯片加速正在与TVM对接,利用自动优化提升性能。

VTA的开发涉及FPGA编程,这通常不够用户友好。TVM RPC的初衷部分源于VTA的应用需求。早期使用FPGA时,需通过USB串口编程,再SSH到板子上交叉编译ARM程序并运行,过程极其繁琐。

现在通过VTA和TVM RPC,你可以在FPGA板上启动RPC服务,直接在笔记本上用Python控制。

直接去跟远程加速器进行交互,这种友好程度比起原来一步步直接与IP核(IP Core)做交互来说,简单了很多。有兴趣的同学可以直接尝试,即使没有硬件加速器,编译完模拟器后也可以在模拟模式下运行这些教程。所有教程均可在模拟器中跑通。

TVM的解决方案涵盖了从高级优化到张量级优化,再到开源硬件的全栈方案。这使得我们可以进行硬件、编译器和图级别的联合优化,这也是TVM当前的优势所在。但要真正做好TV M,仍是一个机会巨大但问题众多的方向。

目前我们已能超越部分手写优化,未来还可引入更多高级优化及张量语言层面的改进。例如支持RNN或视觉检测模型等更广泛的机器学习工作负载,从而扩展优化空间。

针对有时手写优化优于自动优化的情况,简单方案是将手写的“配方”总结并加入搜索空间。随着搜索空间的扩大,自动搜索最终将取代手写优化。

伯克利有同学利用TVM进行区块链相关研究,旨在解决在他人设备上运行AI模型时的安全问题。这涉及安全的机器学习部署,通过加密技术保护模型不被窃取。

一种解决方案是利用SGX等可信执行环境(Trusted Enclave),将计算放入加密容器中。然而,由于SGX限制较多如禁止系统调用,难以直接部署MXNet或TensorFlow等框架。

TVM编译出的代码完全隔离,因此能轻松支持SGX,可能成为首个直接用于区块链AI部署的解决方案。社区已提供相关文档,有兴趣者可查阅TVM到AI网站了解如何贡献代码及参与开发。

天元开源社区遵循Apache模式运作,鼓励大家共同贡献代码并引导社区发展。随着贡献增加,成员可晋升为Code Reviewer、Owner或Committer。我们欢迎感兴趣的小伙伴加入社区一起开发,探索系统架构、机器学习及编程语言等方向的改进或产品集成。

关于如何开始贡献代码,大家可以访问社区论坛Discuss.TVM.AI回答问题,或根据兴趣查看Issue列表寻找可参与的项目。若需教程演示,虽今日无Demo,但Docs.TVM.AI上的Tutorial均可直接运行。

例如对树莓派感兴趣者,可依据教程指示部署;目前安卓及常见板卡的部署也较为简单,只需编译RPC Runtime即可。若遇硬件问题可直接在社区论坛提问。

关于Schedule优化的参考资料,TVM论文已在Arxiv发布。早期的Schedule参考了Heilai等人的论文,而TV M加入了更多加速器和GPU支持细节。大家可直接阅读Arxiv上的TVM论文获取详细信息。

优化指标与模型准确度通常无直接关系,目前展示结果均为FP32精度。虽然我们正在开展8比特量化研究且预计掉点不多,但低精度更需要自动优化来弥补知识库的不足。

在XNORNet或1-2比特极低精度操作方面,TVM自动优化实现的版本在ARM平台上已是最快。当前VTA主要面向推理(Inference),社区计划于9月开始展开训练支持及相关的VTA训练工作。

要了解设计流程,可通过阅读代码、论文及TVM文档中的设计说明进行;若有疑问可在社区论坛提问以完善文档,这也是贡献的一部分。关于TV M与XLA对比的优势:

XLA主要为TPU设计且部分不开源,难以直接比较。但在开源方面,XLA仅做到计算图优化阶段,无法自动化适配不同硬件底层;而TV M解决了从计算图到硬件底层的自动优化及对接,支持ARM、GPU及AI芯片等多种后端。

TV M的技术路线比XLA更激进,但收效也更明显。经过几年努力,这被视为未来趋势,其他框架如TensorFlow可能也需向此方向发展。TV M旨在以较少精力完成更多工作。

支持加速器需要提供硬件特性描述,VTA提供了详细的对接、优化及相关问题指南,旨在涵盖加速器的各种可能特性。若某些特性未在VTA中良好描述,欢迎在社区讨论并加入VTA规范中。

关于硬件上的Step-by-Step指南,可参考TVM教程中的树莓派部署或安卓部署示例。目前安卓及常见板卡部署较简单,只需编译RPC Runtime即可;若有硬件问题可直接在社区论坛提问。

Schedule优化可参考Arxiv上的TV M论文及早期的Heilai论文,其中详细讲述了加速器与GPU支持。关于优化指标是否与模型准确度相关:

这取决于是否进行8比特量化。目前展示结果全为FP32,与准确率无关。我们正开展8比特量化研究,预计掉点不多,但低精度更需要自动优化优势。

在XNORNet或1-2比特极低精度操作中,TVM自动优化在ARM上已是最快。VTA当前以推理为主,社区计划9月展开训练支持及VTA相关工作。

关于设计流程的详细理解,可通过代码、论文和文档进行;若有疑问可在社区论坛提问以完善设计文档。关于TV M优化与算子限制:

对于CPU多元化,Embedding相关算子无问题;但对于加速器,取决于指令集是否支持。以精度损失为例,TV M旨在自动生成比手写更高效且不失真的算子库。

在协同设计中,量化可通过8比特输入累加至32位再位移回8比特的流程实现。但优化空间巨大,例如可在转换前进行加法或ReLU操作,甚至使用20位整数累加以避免32位的开销。

对于IP核或定制硬件,需保证模型在限定比特内不溢出。此外,可通过数据布局变换(如NCCHW折叠)提升效率。手动优化所有方案开销极大,而TV M通过模板自动优化,一天或数小时即可找到最佳配置。

自动化本身保证搜索空间内所有程序的正确性,不会生成与原逻辑不等价的代码。在ARM平台上,TV M的基准测试已达到State-of-the-Art水平。

未来内部方案将整合手写汇编微内核与自动优化,使TV M在几乎所有工作负载下优于现有手写库。更重要的是,同一套方案无需为特定设备定制,可通用适用于ARM CPU、GPU等各类硬件。

也好,或者说新的新数学加速芯片也好,都可以用同一个解决方案去自动做一些优化。那么,比如说对于新硬件来说,呃。新硬件来说,它本身就可以是一个,呃,对于新硬件来说,它本身就是一个非常好的事情,因为你就可以直接直接让机器自动去帮你找到最好的结果。

有人问说,这个框架中是否带有 validation?如果说是正确性、正确性的 validation 的话,答案是是的,我们的确有去 validate 这个这个结果的正确性。Auto TVM 训练出来的模型是不是共享的?呃,目前 Auto TVM 有我们有 release 这个提前提前训练,就是已经已经 pre-tune 的模型。

然后,并且其实如果说大家对于自己有设备的话,自己去做这个 Auto Tuning 本身的代价非常小,就是可以直接 follow 我们的这个 tutorial,应该可以直接,比如说你对于自己可能很多时候,呃,大家会发现说 ARM 的库,呃,基本上基本上它会有这个。嗯,就说有的时候你发现有的库它会对某一种 ARM 优化的特别好,然后对于其他其他 ARM 优化的比较差。

然后这个时候如果说你可以直接去在你的设备上面去自己熬个 tune 一把,也会拿到更好的效果。嗯,还有其他问题吗?有的人说片上 SRAM 和 cache 的区别是什么?嗯,基本上其实片上 SRAM 相当于是寄存器。然后 cache 主要区别是在于说 cache 一般是自动 manage,呃,就说你你不需要去管 cache 是什么。

然后片上 AI 专项一般来说是需要你去手工 manage,就跟 Schneider 差不多。如果说 roadmap 里面有没有 training?啊,答案是刚才我说过,大概在我们社区的下一个 release cycle,我们会开始做一些 training 工作。现在不是没有 training,只是说,呃,现在的 training 的功能还比较弱。

目前在上一个 release,大家还是主要集中在 inference workload 上面。Contribute,呃,然后有人问说,Contribute 里面 CUDN 和 TBM 是怎么合作的?那 TBM 本身它并不是,并不一定要做代码生成。那么如果说在一些情况下面需要做调外部库的话,是可以直接通过外部库来调用来调用的。

比如说 CUDN 就是这种情况。比如说如果有第三方的库的话,TBM 是可以直接和 T 三第三方库做整合,然后,嗯,直接去指去使,就是在有必要的时候去使用第三方库来做一些加速。当然,我们最终的目标是可以通过自动加速、自动生成代码,可以使得它它达到的效果可以比手写的库要更好一点。

如果说有人问说,关于数据重排要看哪些资料啊?有兴趣的同学可以,应该可以直接看一下TVM本身的教程,里面就有讲数据重排,就是那个矩阵乘法教程就有讲数据重排。然后,呃,可以可以直接去看一下TVM教程,应该就可以讲这些东西。

那么,这也是为什么我们想要做TVM的另外原因,就是说,其实大家会发现,本身做这个深度学习算子优化本身其实是一个门槛蛮高的一个东西。那么,我们希望能够TVM通过TVM可以使得说每一个人都可以都可以去做不同设备的这个深度学习算子优化。嗯,基本上只要你可以有一个手机,或者说有一个你可以连TVM RPC设备的东西,就可以直接把你的直接通过Python去调优你对应的设备。

有人问说第三方库是不是可以参与 auto tuning?啊,目前目前暂时没有这个打算,因为呃,我们基本上我们还是希望能够呃,就说目前的这个 auto tuning 它会和这个 TVM RPC 结合的比较紧,然后这个东西它会需要这个。会需要和TVM本身的这个本身的这个这个机制会结合的比较紧。

然后第三方库的第二个问题是说,第三方库本身它一般来说是黑盒,然后就不太能够做一些控制。但TVM它可以直接做这个代码生成的控制。有人问这个算子的 coverage,就是说 TensorFlow 算子 TVM 都支持吗?啊,目前来说我们并不是所有的 TensorFlow 算子,但是基本上啊有有社区在不断的在做 TensorFlow 前端的 coverage,然后基本上嗯。

嗯,它是嗯,基本上就说 TensorFlow 主要的算子我们基本上都支持了。有人说,嗯。使用第三方库是不是就不需要做这个 tensor 级别的优化了?呃,其实第三方库还是会有问题的。就说第三方库的问题是在于说,就比如说,比如说你要做这个,呃。因为第三方库它只能够做一些第三方库给你做的事情,比如说第三方库可能会只支持一些算子,它不支持融合啦,或者说它只是一些固定的 layout。

但是其实你这个数据重排重排之后效果会更好,但是你可能需要搜那个重排啊。很多时候,比如说在最近 TVM 社区上面,这个呃大家可以看到,嗯,最近 TVM 社面它会它会有一套数据说直接去比。在 Intel CPU 上面,TVM 自动搜索效果和 MKLDN,然后做一通过把数据重排和这个 TVM 的自动化结合在一起,基本上在很多情况下可以比 MKLDN 还要快快一倍的效果。

有人问说 TVM 对 IPJ 更友好,呃,本身本身的这个目标是我们能够支持所有的硬件,所以说 IPJ 只是一个,只是其中的一个后端。嗯,说友好程度的话,我觉得其实对于移动设备都还蛮友好的。还有什么问题吗?没有问题的话,我就就下线了。好啊,那谢谢大家。

嗯,OK,最后一个问题,有人问说,图优化和向量优化常用的手段和区别,呃。比较推荐直接去看一下 TVM 论文,里面其实有,其实有有讲大概,呃,常见的区别是什么?那最重要的是说。我们不应该只看到图优化和向量化,因为很多时候这两个东西是结合在一起的。

比如说,比如说,如果说你的这个自动张量优化不能够支持数据重排之后的算子的话,那你就不能够做这个图优化。我们本身很多时候它这个很多时候你会发现,就是我们之所以要做TVM,原因也是因为这样子,因为手写的算子库它能够支持的这个。可能性有限,导致说有的时候你做了这个图优化,导致手写生成不支持,然后最后你就不能够去做这个图优化。

反过来说,呃,如果说可以做自动代码生成,可能它的效率比手写优化可能差百分之十,但是你通过其他像这个数据重排啦,或者说这个算子融合啦这些东西可以带来的这个效率的提升,比如说是百分之二十,然后最后你可以拿到整体百分之十的提升。

陈天奇:TVM 支持哪些 ASIC?那么目前来说,公开的支持是 VTA,但是 VTA 本身它就是,如果说你有这个新的 ASIC 后端,直接以 VTA 作为蓝本去加这个 TVM 的后端就会比较简单。然后也有一些现在的 ASIC 在给 TVM 加后端,然后后面大家应该会看到,后面大概应该会看到更多的这个更多的这个硬件后端,包括这个 AI 芯片的后端。OK,谢谢大家,那我就先结束了。