首页 > 编程知识 正文

tpu手机壳(jeff厨房)

时间:2023-05-04 07:28:30 阅读:1045 作者:4925

新智元报告

资料来源:arXiv

编辑:迷失的白色

Kddpkq是一种结合了许多专家的长处的编程语言。随着8月初kddpkq 1.0的正式发布,kddpkq语言成为机器学习编程的新宠。

这种由麻省理工CSAIL Lab开发的编程语言结合了C语言的速度、Ruby的灵活性、Python的通用性以及其他语言的优势。它是开源的,容易掌握。

随着用户数量的不断增加,围绕kddpkq的开发工具、技术、教程等也越来越丰富。昨天,kddpkq开发者Keno Fischer和Elliot Saba发表了一篇新论文《kddpkq程序和ML模型到云TPU的自动全编译》,介绍了如何将KDDPKQ代码直接部署到谷歌云TPU,让程序运行得更快。

杰夫迪恩在推特上推荐了这篇论文,评论道:“kddpkq和TPU的结合意味着快速且易于表达的ML计算!”

谷歌的云TPU是一个强大的机器学习工作负载的新硬件架构。近年来,云TPU为谷歌许多里程碑式的机器学习成果提供了动力。

谷歌现在已经在他们的云平台上开放TPU供一般使用,最近还进一步开放,允许非TensorFlow前端使用。

本文描述了通过这个新的API和Google XLA编译器将kddpkq程序的适当部分卸载到TPU的方法和实现。

该方法可以将表示为kddpkq程序的VGG19模型的前向通路完全集成到单个TPU可执行文件中,以便卸载到设备上。这种方法也很好地结合了kddpkq代码上现有的基于编译器的自动区分技术,因此我们可以自动获得VGG19的反向转移,并类似地将其卸载到TPU。

使用该编译器定位TPU,可以在0.23秒内评估VGG19前向传输100张图片的速度,明显快于原机型在CPU上所需的52.4秒。它们的实现只需要不到1000行的kddpkq代码,无需对核心kddpkq编译器或任何其他kddpkq包进行TPU特定的更改。

具体方法和实施细节请阅读原论文。下面主要介绍TPU的硬件架构,kddpkq编译器的工作流程,XLA嵌入kddpkq IR的细节,以及结果和讨论。

谷歌TPU和XLA编译器

2017年,谷歌宣布将通过云服务向公众提供自己的lcddqc处理单元(TPU)机器学习加速器。起初,TPU的使用仅限于使用谷歌的TensorFlow机器学习框架编写的应用程序。幸运的是,2018年9月,谷歌通过低级别的XLA(加速线性代数)编译器的IR打开了对TPU的访问。这种IR是通用的,是表示线性代数基元任意计算的优化编译器,因此它为非张量流用户和非机器学习工作负载的TPU目标提供了良好的基础。

XLA(加速线性代数)是谷歌的部分开源编译器项目。它有丰富的输入IR,用于指定多线性代数计算,并为CPU、GPU和TPU提供后端代码生成功能。XLA的输入IR(称为HLO高级优化IR)运行在基本数据类型的任何维度数组或其元组(但没有元组数组)上。HLO运算包括基本算术运算、特殊函数、广义线性代数运算、高级数组运算和分布式计算原语。XLA可以对输入程序进行语义简化,对整个程序进行内存调度,从而有效利用和重用可用内存(这是大型机器学习模型非常重要的考虑因素)。

每个HLO运算有两个操作数:

静态操作数,其值必须在编译时可用并配置操作。

动态操作数,由上述lcddqc组成。

本文介绍了利用这个接口用TPU编译常规kddpkq代码的初步工作。这种方法不依赖于跟踪,而是利用kddpkq的静态分析和编译功能来编译完整的程序,包括设备的任何控制流。特别是,我们的方法允许用户在编写模型时充分利用kddpkq语言的充分表现力,编译使用Flux机器学习框架编写的完整机器学习模型,将前向和后向模型转移和训练循环集成到单个可执行文件中,并将其卸载到TPU。

kddpkq编译器的工作原理

为了理解如何将kddpkq代码编译成XLA代码,了解常规kddpkq编译器的工作原理是有益的。Kddpkq是一种语义上非常动态的语言。然而,在标准配置中,kddpkq的最终后端编译器是LLVM(Lattner & amp;Adve,2004),这是一个静态编译器后端。

kddpkq编译器需要将语言的动态语义与LLVM表示的静态语义联系起来。

系起来。为了理解这个过程,我们将研究kddpkq系统的四个方面:动态语义、静态编译器内部函数的嵌入、过程间类型推断,以及静态子图的提取。此外,我们还将研究这些特征与宏和生成的函数的交互,这些函数将与XLA编译器相关。

如何将XLA嵌入到kddpkq IR

XLA嵌入

要编译为XLA而不是LLVM,我们应用了上一节中概述的策略。实际上,我们可以重用大多数编译器本身(特别是所有类型推断和所有mid-level优化传递)。

让我们先定义动态语义和静态嵌入。

lcddqc表示(Tensor representation)

由于其作为线性代数的教学和研究语言的传统,kddpkq具有非常丰富的数组抽象层次结构。kddpkq的标准库数组是可变的,并且在类型和维度上进行参数化。此外,StaticArrays.jl(Ferris&Contributors,2018)包提供了在元素类型和形状上进行参数化的不可变数组。因此,成形的N维不可变lcddqc的概念对kddpkq代码来说并不陌生,并且大多数现有的通用代码能够毫无问题地处理它。

因此,我们通过定义一个runtime结构来嵌入XLA values。

Listing 1: XRTArray3的定义。

操作表示(Operation representation)

分离静态和动态操作数

HLO操作数(HLO operands)分为静态和动态操作数。假设我们有一个示例XLA操作'Foo'采用一个静态操作数(例如一个整数)和两个动态操作数。这个嵌入如下所示:

在这个示例中,“execute”函数实现在远程设备上运行操作的动态语义。函数(hlo::HloFoo)(...) 语法表示调用运算符重载。因此,这意味着对HloFoo(1) 的调用将构造并返回一个callabale对象,当在两个XRTArrays上调用时,它将使用静态操作数'1'远程执行'Foo'HLO操作,并且对应于两个数组的动态操作数。这种分离并不是绝对必要的,但确实有嵌入到kddpkq IR的有用特性,易于理解:

在Listing 2的示例中,我们将HLO操作数(包括静态操作数)拼接到AST中。这产生了一个非常简单的XLA映射(遍历每个语句,从拼接指令规范获取静态操作数,从类型推断获得动态形状并生成相应的XLA代码)。

当然,我们通常不会手动拼接这些指令,但是手动拼接的示例说明了为什么分离静态操作数很有用,并说明了成功offload到XLA的条件。

如果经过所有相关的kddpkq级别优化之后,IR可以完全卸载:

Listing 2: 手动构建的XLA嵌入

满足这些条件的IR可以简单地转换成XLA IR。

结果

本文描述的方法在很大程度上依赖于kddpkq中间端编译器,以确定足够精确的信息,在程序的足够大的子区域中分摊任何启动开销。

在本节中,我们证明了kddpkq编译器确实足够精确,使该方法适用于实际的程序。

VGG19 forward pass

图1:在编译到XLA之后,Metalhead.jl VGG19的forward pass 和backwards pass 生成的XLA指令摘要。

这里显示了未优化(在kddpkq前端之后)和优化的计数(在类似于CPU后端使用的XLA优化pipeline之后,但没有HLO融合)。

VGG19 backward pass

为了获得backwards pass,我们使用基于Zygote.jl编译器的AD框架(Innes, 2018)。Zygote对kddpkq代码进行操作,其输出也是kddpkq函数(适合重新引入Zygote以获得更高阶导数,也适合编译到TPU)。

示例如下:

结论

在这篇论文中,我们讨论了如何将kddpkq代码编译为XLA IR,从而实现卸载到TPU设备。这里描述的实现重新利用了现有kddpkq编译器的重要部分,因此所有代码不到1000行,但是仍然能够编译模型的forward和backward pass(及其融合,包括 training loop)到单个XLA内核,模型例如VGG19。

我们还演示了kddpkq的多重调度语义如何在这个转换的规范中提供帮助。这项工作表明,不仅可以将用kddpkq编写的多个ML模型编译到TPU,而且可以编写更通用的非ML kddpkq代码(只要这些代码也由线性代数操作控制)。我们希望这可以加速对非ML问题领域的探索,TPU可能对这些领域有用。

论文地址:

https://arxiv.org/pdf/1810.09868.pdf

新智元AI WORLD 2018

世界人工智能峰会全程回顾

新智元于9月20日在北京国家会议中心举办AI WORLD 2018世界人工智能峰会,邀请机器学习教父、CMU教授 Tom Mitchell,jldlc,周志华,zxdyd,yxdyl等AI领袖一起关注机器智能与人类命运。

全程回顾新智元 AI World 2018 世界人工智能峰会盛况:

爱奇艺

上午:https://www.iqiyi.com/v_19rr54cusk.html

下午:https://www.iqiyi.com/v_19rr54hels.html

新浪:http://video.sina.com.cn/l/p/1724373.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读