内容简介:在过去,若想解决多级别堆栈问题,则需要我们构建新的软硬件堆栈生成器,这也意味着必须为每个新路径重新构建优化与转换传递。
雷锋网 (公众号:雷锋网) AI 科技评论按: 为了更好解决 TensorFlow 用户在使用不同种类的硬件(GPU、TPU、移动设备)时,由于多级别堆栈而导致的编译器与运行时错误,谷歌近日开源了一个全新的中介码与编译器框架 MLIR。
在过去,若想解决多级别堆栈问题,则需要我们构建新的软硬件堆栈生成器,这也意味着必须为每个新路径重新构建优化与转换传递。
TensorFlow 能够以多种不同的方式运行,如:
-
将其发送至调用手写运算内核的 TensorFlow 执行器
-
将图转化为 XLA 高级优化器 (XLA HLO) 表示,反之,这种表示亦可调用适合 CPU 或 GPU 的 LLVM 编辑器,或者继续使用适合 TPU 的 XLA。(或者将二者结合!)
-
将图转化为 TensorRT、nGraph 或另一种适合特定硬件指令集的编译器格式
-
将图转化为 TensorFlow Lite 格式,然后在 TensorFlow Lite 运行时内部执行此图,或者通过 Android 神经网络 API (NNAPI) 或相关技术将其进一步转化,以在 GPU 或 DSP 上运行
谷歌的 MLIR(或称为多级别中介码)是一种表示格式和编译器实用 工具 库,介于模型表示和低级编译器/执行器(二者皆可生成硬件特定代码)之间,在生产质量组件的支持下,能够对优化编译器设计与实现进行全新探索。据了解,MLIR 深受 LLVM 的影响,并不折不扣地重用其许多优秀理念,比如拥有灵活的类型系统,可在同一编译单元中表示、分析和转换结合多层抽象的图等——这些抽象包括 TensorFlow 运算、嵌套的多面循环区域乃至 LLVM 指令和固定的硬件操作及类型。
MLIR 没有众所周知的固定或内置的操作列表(无 “内联函数”)。方言可完全定义自定义类型,即 MLIR 如何对 LLVM IR 类型系统(拥有一流汇总)、域抽象(对量化类型等经机器学习 (ML) 优化的加速器有着重要意义),乃至未来的 Swift 或 Clang 类型系统(围绕 Swift 或 Clang 声明节点而构建)进行建模。
另外值得一提的是,虽然 MLIR 充当 ML 的编译器,但它同样支持在编译器内部使用机器学习技术。MLIR 的扩展性有助于探索代码降阶策略,并在抽象之间执行逐步降阶。
具体开源链接:
GitHub 代码库
https://github.com/tensorflow/mlir
教程
https://github.com/tensorflow/mlir/blob/master/g3doc/Tutorials/Toy/Ch-1.md
演讲稿
https://drive.google.com/file/d/1hUeAJXcAXwz82RXA5VtO5ZoH8cVQhrOK/view
雷锋网 AI 科技评论 雷锋网
雷锋网原创文章,未经授权禁止转载。详情见 转载须知 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- LLVM Clang 8.0编译器堆栈的新功能和更改
- 英特尔发布 nGraph 编译器堆栈 Beta 版本,性能可提升 45 倍
- 基于弹性堆栈(ELK堆栈)的日志分析、存储及展示
- Go 有 GC 就不需要掌握内存堆栈知识了吗?Go 堆栈的理解
- Go 堆栈的理解
- Go 堆栈的理解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Responsive Web Design
Ethan Marcotte / Happy Cog / 2011-6 / USD 18.00
From mobile browsers to netbooks and tablets, users are visiting your sites from an increasing array of devices and browsers. Are your designs ready? Learn how to think beyond the desktop and craft be......一起来看看 《Responsive Web Design》 这本书的介绍吧!