XLA - 加速线性代数

文章目录

    • 一、关于 XLA
      • XLA目标
      • XLA 运作方式
    • 二、Community
      • 沟通渠道
      • 其他资源
      • 存储库


一、关于 XLA

XLA : Accelerated Linear Algebra

  • github : https://github.com/openxla/xla
  • OpenXLA Community : https://github.com/openxla/community
  • XLA - TensorFlow : https://tensorflow.google.cn/xla?hl=zh-cn
  • 开发教程:https://github.com/openxla/xla/blob/main/docs/developer_guide.md

XLA(加速线性代数)是一款用于GPU、CPU和ML加速器的 开源机器学习(ML)编译器。

XLA 编译器采用流行的 ML框架(如PyTorch、TensorFlow和JAX)中的模型,并对其进行优化,以在包括 GPU、CPU和ML加速器在内的不同硬件平台上 实现高性能执行。


XLA目标

如今,XLA 支持多种机器学习框架前端(包括 PyTorch、TensorFlow 和 JAX),并且是 OpenXLA 项目的一部分。

OpenXLA 项目是一个用于机器学习的开源编译器技术生态系统,由领先的机器学习硬件和软件组织协作开发。

在创建 OpenXLA 项目之前,XLA 是在 TensorFlow 项目中开发的,但基本目标保持不变:

  • 提高执行速度。 编译子图以缩短短期有效的操作的执行时间并消除运行时的开销,融合流水线操作以减少内存开销,并专门化已知张量形状以实现更积极的常量传播。
  • 提高内存用量。 分析和调度内存用量,消除许多中间存储缓冲区。
  • 减少对自定义操作的依赖。 通过提升自动融合的低级别操作的性能,使其匹配最初手动融合的自定义操作的性能,从而不再需要许多自定义操作。
  • 提高可移植性 。为新型硬件编写新后端相对简单,以便大部分机器学习模型无需修改即可在该硬件上运行。这与为新硬件专门处理单个单体式运算的方法相反,后者需要重写模型才能利用这些运算。

在这里插入图片描述


XLA 运作方式

XLA 编译器从 StableHLO 中定义的机器学习框架获取模型图,并将它们编译为适用于各种架构的机器指令。

StableHLO 定义了一个版本化操作集(HLO 表示高级操作),可在机器学习框架和编译器之间提供可移植层。

通常,将模型图转换为针对目标优化的可执行文件的编译过程包括以下步骤:

  1. XLA 对独立于目标的 StableHLO 图执行多次内置优化和分析传递,例如用于为计算分配运行时内存的 CSE、与目标无关的操作融合和缓冲区分析。在此优化阶段,XLA 还会将 StableHLO 方言转换为内部 HLO 方言。
  2. XLA 将 HLO 计算发送到后端,以进一步优化 HLO 级别的优化,这次同时考虑到特定于目标的信息和需求。例如,GPU 后端可以执行对 GPU 编程模型特别有益的操作融合,并确定如何将计算划分为数据流。在此阶段,后端还可以将某些操作或其组合与优化的库调用进行模式匹配。
  3. 然后,后端执行特定于目标的代码生成。XLA 中包含的 CPU 和 GPU 后端使用 LLVM 进行低层级 IR、优化和代码生成。这些后端发出以高效方式表示 HLO 计算所需的 LLVM IR,然后调用 LLVM 以从此 LLVM IR 中发出原生代码。

在此过程中,XA 编译器是模块化的,因为它可以轻松插入替代后端,以以某些新颖的硬件架构为目标。GPU 后端目前通过 LLVM NVPTX 后端支持 NVIDIA GPU。CPU 后端支持多个 CPU ISA。


二、Community

OpenXLA 是一个社区驱动的开源 ML 编译器生态系统,采用了 XLA、MLIR 和 IREE 的最佳功能。社区存储库存储了 OpenXLA 开发者社区使用的文档:

  • 治理- OpenXLA 的运营流程
  • 社区会议- OpenXLA 社区公开会议的时间表、议程和会议记录

沟通渠道

  • openxla-discuss邮件列表- 关于 OpenXLA 项目及其组件的技术和社区对话、社区会议邀请和议程。这是我们的主要渠道。
  • openxla-announce邮件列表- OpenXLA 项目维护人员不频繁发布的公告,包括项目新闻、事件和主要版本。
  • OpenXLA Discord - 有关顶级项目更新以及和的开发的同步/xla聊天/stablehlo
  • IREE Discord - 关于开发的同步聊天/iree

其他资源

  • 社区日历- 添加到您的日历以订阅所有社区会议和活动。
  • Google Drive 文件夹- 项目维护者共享的公共文件;无需 Google 登录即可查看。
  • OpenXLA 标识- 有关使用标识或其他品牌资产的指导,请联系 openxla-brand at openxla dot org。

存储库

  • StableHLO:ML 框架和 ML 编译器之间的可移植性层。
  • XLA:主要 XLA 代码库(从 tensorflow/compiler/xla 迁移)。
  • IREE:基于 MLIR 的 ML 模型端到端编译器和运行时。请注意,IREE 有自己的通信通道(请参阅其 README)。

2024-05-30(四)

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

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

相关文章

Flink SQL查询语法部分详解(提供需求、数据练习复现)

一、Hints 动态表选择:可以在查询表的时候动态修改表的参数配置 1、读取kafka的数据建表 CREATE TABLE students (id STRING,name STRING,age INT,sex STRING,clazz STRING ) WITH (connector kafka,topic students, -- 指定topicproperties.bootstrap.servers …

MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第60篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。 使用Mongodb UPDATE数据更新字段,当文档不存在,通过指定{upsert: true},可…

linux配置IP、子网掩码、网关

linux虚拟机配置IP、子网掩码、网关 本方法适用于 Ubuntu 18.04 之后的版本。 例1: 配置信息: IP:10.100.100.23 子网掩码:255.255.255.240 网关:10.100.100.56 1、打开网络配置文件 01-network-manager-all.yaml sudo vi /etc/netplan/01-network-…

Linux 记一次spin_lock死锁优化经验

From 程序员秘书 死锁是很常见的一种内核故障。 最简单也是最常见的,就是如果一个task在已经持有某个锁的情况下,再次尝试获取同一个锁,就会形成死锁局面。发生死锁的场景有很多,常见的情况可能有,可能是在同一个tas…

高效扫码点餐:简餐茶饮外卖新体验

前言 在快节奏的现代生活中,高效便捷的扫码点餐系统正逐渐成为简餐茶饮行业的新宠。这一系统不仅提升了顾客的点餐体验,还优化了门店的运营效率,特别是基于总部多门店的连锁模式,更是将这一优势发挥得淋漓尽致。 一、这款扫码点餐…

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢? 本文描述了使用PHP语言调用HTTP接口,实现控制多路照明,通过多路控制器,可独立远程控制多路照明。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂…

软理复习范围

1.直觉主义逻辑常采用三值逻辑来处理命题的真值,包括以下三个真值: 真(True):表示命题是确定为真的。假(False):表示命题是确定为假的。未知(Unknown)&#…

Prism 入门02,区域介绍

一.区域概念和使用方式 什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心功能之一,其主要作用是降低应用程序和模块之间的耦合度 。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以…

el-tabel名称排序问题

el-tabel排序 最终实现功能如下: 排序限制为: 文件夹>普通文件 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z) 正序…

程序性能优化

索引 没加索引(where条件字段、order by字段,常用字段添加索引)索引没生效选错索引SQL优化 SQL数据库性能优化-CSDN博客远程调用 并行调用数据异构重复调用 循环查数据库死循环无限递归异步处理 线程池mq服务器(全称消息队列服务器…

[原创]C++ 11的thread_local线程局部变量与Lambda表达式配合使用, 却引发致命的, 难以发现的冲突.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

探索Python的itertools模块:高效迭代的瑞士军刀

探索Python的itertools模块:高效迭代的瑞士军刀 Python的itertools模块是一个强大的工具箱,它提供了一系列的迭代器工具,用于创建复杂的迭代逻辑。这个模块的函数返回的都是迭代器,这意味着它们是懒加载的,只有在需要…

Unity开发Cosmos使用BNG Framework获取按键信息

Unity开发Cosmos使用BNG Framework获取按键信息 1、新建一个脚本&#xff0c;复制下面代码 using BNG;[Header("Input")]//[Tooltip("The key(s) to use to toggle locomotion type")]public List<ControllerBinding> locomotionToggleInput new …

处理无法拉取GitHub库的解决方案

提交和拉取github上的库总是失败&#xff0c;这里记录一下如何使用代理解决。 首先找到端口&#xff0c;记住它的端口 然后使用git命令 # HTTP/HTTPS 协议 git config ––global http.url.proxy http://127.0.0.1:port # 以 Github 为例 git config ––global http.https:/…

短网址生成原理及使用

生成短网址介绍&#xff1a; 一、定义 短网址&#xff08;Short URL&#xff09;是形式上比较短的网址&#xff0c;它通过将原始冗长的网址进行缩短&#xff0c;方便用户分享和记忆。短网址的生成主要依赖于特定的算法和服务&#xff0c;通过后端服务转向来实现网址的缩短。 …

MongoDB $rename 给字段一次重新命名的机会

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。 在日常编写程序过程中&#xff0c;命名错误是经常出现的错误。拼写错误的单词&#xff0c;大小写字…

gitbook 域名设置 域名绑定 自定义域名

有时候我们搜文档的时候&#xff0c;会遇到gitbook的文档。诸如这样&#xff1a; jums.gitbook.io/mysql-shi-zhan-45-jiang 即&#xff1a;个人的名字gitbook的域名书名。 具体格式如下&#xff1a; 1. 自定义域名 所有在 Gitbook.com 上的书的http 地址为 http://{author…

什么是人机协同翻译

什么是人机协同翻译 序什么是人机协同翻译账号绑定服务开通文档翻译图片翻译体验感受及建议 序 什么是人机协同翻译&#xff0c;为什么会需要人机协同翻译&#xff0c;以及人机协同翻译的效果&#xff0c;应用场景等&#xff0c;本文将关于这些内容一一解答。 什么是人机协同…

大语言模型RAG-将本地大模型封装为langchain的chat model(三)

大语言模型RAG-将本地大模型封装为langchain的chat model&#xff08;三&#xff09; 往期文章&#xff1a; 大语言模型RAG-技术概览 (一) 大语言模型RAG-langchain models (二) 上一期langchain还在0.1时代&#xff0c;这期使用的langchain v0.2已经与之前不兼容了。 本期介…

【调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持】

调试笔记-系列文章目录 调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持 文章目录 调试笔记-系列文章目录调试笔记-20240604-Linux-为 OpenWrt LuCI 界面添加多语言支持 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、调试步骤预…