范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

在CUDA的天下,OpenAI开源GPU编程语言Triton,同时支持N卡和A卡

  机器之心报道
  编辑:蛋酱、陈萍
  OpenAI 开源了全新的 GPU 编程语言 Triton,它能成为 CUDA 的替代品吗?
  过去十年中,深度神经网络 (DNN) 已成为最重要的机器学习模型之一,创造了从自然语言处理到计算机视觉、计算神经科学等许多领域的 SOTA 实现。DNN 模型的优势来自于它的层次结构,这一特征导致其计算量巨大,但也会产生大量高度并行化的工作,特别适合多核和众核处理器。
  深度学习领域的新研究思路往往是结合原生框架 operator 来实现的,这种方法虽然方便,但需要创建或移动许多临时张量,因此可能会造成神经网络的性能损失。编写专门的 GPU 内核或许可以解决这个问题,但 GPU 编程的确是一件相当复杂的事。
  DNN 计算潜力与 GPU 编程困难之间的矛盾由来已久。英伟达在 2007 年发布了 CUDA 的初始版本,CUDA 平台是一个软件层,使用者可以直接访问 GPU 的虚拟指令集和并行计算单元,用于执行计算内核。近年来,主流深度学习框架几乎都是基于 CUDA 进行加速,英伟达也一直在完善 CUDA 工具包,但对于一般的开发者来说,CUDA 还是「不那么容易上手」。
  今天,OpenAI 正式推出 Triton 1.0,这是一种类 Python 的开源编程语言。即使没有 CUDA 经验的研究人员,也能够高效编写 GPU 代码。例如,它可以用不到 25 行代码写出与 cuBLAS 性能相匹配的 FP16 矩阵乘法内核,后者是许多专业的 GPU 编程者尚且无法做到的。此外,OpenAI 的研究者已经使用 Triton 成功生成了比 PyTorch 同类实现效率高 2 倍的内核。
  代码地址:https://github.com/openai/triton
  Triton 的最初想法来源于现任 OpenAI 科学家的 Philippe Tillet 2019 年在哈佛大学攻读研究生学位时发表的一篇论文,当时他的导师是 H. T. Kung 和 David Cox。
  论文链接:http://www.eecs.harvard.edu/~htk/publication/2019-mapl-tillet-kung-cox.pdf
  Tillet 希望解决的问题是打造一种比英伟达的 CUDA 等特定供应商库更好用的库,能够处理神经网络中涉及矩阵的各种操作,具备可移植性,且性能可与 cuDNN 或类似的供应商库相媲美。团队表示:「直接用 CUDA 进行 GPU 编程太难了,比如为 GPU 编写原生内核或函数这件事,会因为 GPU 编程的复杂性而出奇困难。」
  Facebook AI 研究中心科学家 Soumith Chintala 也在推特上表达了自己对 Triton 的期待:
  新发布的 Triton 可以为一些核心的神经网络任务(例如矩阵乘法)提供显著的易用性优势。「我们的目标是使其成为深度学习 CUDA 的可行替代方案,」Philippe Tillet 作为 Triton 项目负责人如此表示。
  GPU 编程面临的挑战
  现代 GPU 的架构大致可以分为三个主要组件:DRAM、SRAM 和 ALU。优化 CUDA 代码时,必须考虑到每一个组件: 来自 DRAM 的内存传输必须合并进大型事务,以利用现代内存接口的总线位宽; 必须在数据重新使用之前手动存储到 SRAM 中,并进行管理以最大限度地减少检索时共享内存库冲突; 计算必须在流处理器(SM)内部或之间细致分区和调度,以促进指令 / 线程级的并行以及专用算术逻辑单元(ALU)的利用。
  GPU 基础架构。
  种种因素导致 GPU 编程难度骤增,即使对于具有多年经验的 CUDA 程序员也是如此。Triton 的目的是将这些优化过程自动化,以此让开发人员更专注于并行代码的高级逻辑。出于对泛用能力的考量,Triton 不会自动调度跨流处理器的工作,而是将一些重要的算法考虑因素(例如 tiling、SM 间同步)留给开发者自行决定。
  CUDA vs Triton 编译器优化对比。
  编程模型
  在所有可用的领域专用语言和 JIT 编译器中,Triton 或许与 Numba 最相似:内核被定义为修饰过的 Python 函数,并与实例网格上不同的 program_id 的同时启动。但不同之处值得注意:如下图代码片段所示,Triton 通过对 block 的操作来展示 intra-instance 并行,此处 block 是维数为 2 的幂的数组,而不是单指令多线程(SIMT)执行模型。如此一来,Triton 高效地抽象出了与 CUDA 线程 block 内的并发相关的所有问题(比如内存合并、共享内存同步 / 冲突、张量核心调度)。
  Triton 中的向量加法。
  虽然这对 embarrassingly 并行(即 element-wise)计算可能没什么帮助,但是可以简化更复杂的 GPU 程序的开发。例如,在融合 softmax 核的情况下,对于每个输入张量 X∈R^M×N 来说,每个实例对给定输入张量的不同行进行归一化。这种并行化策略的标准 CUDA 实现可能难以编写,需要线程之间的显式同步,因为这种策略并发地减少 X 的同一行。而 Triton 很大程度上消除了这种复杂性,每个内核实例加载感兴趣的行,并使用类似 NumPy 的原语顺序对其进行规范化。 import triton import triton.language as tl @triton.jit def softmax(Y, stride_ym, stride_yn, X, stride_xm, stride_xn, M, N):     # row index     m = tl.program_id(0)     # col indices     # this specific kernel only works for matrices that      # have less than BLOCK_SIZE columns     BLOCK_SIZE = 1024     n = tl.arange(0, BLOCK_SIZE)     # the memory address of all the elements     # that we want to load can be computed as follows     X = X + m * stride_xm + n * stride_xn     # load input data; pad out-of-bounds elements with 0      x = tl.load(X, mask=n < N, other=-float("inf"))     # compute numerically-stable softmax     z = x - tl.max(x, axis=0)     num = tl.exp(z)     denom = tl.sum(num, axis=0)     y = num / denom     # write back to Y     Y = Y + m * stride_ym + n * stride_yn     tl.store(Y, y, mask=n < N) import torch # Allocate input/output tensors X = torch.normal(0, 1, size=(583, 931), device="cuda") Y = torch.empty_like(X) # SPMD launch grid grid = (X.shape[0], ) # enqueue GPU kernel softmax[grid](Y, Y.stride(0), Y.stride(1),                X, X.stride(0), X.stride(1),               X.shape[0]    , X.shape[1])
  在 Triton 中融合 softmax
  Triton JIT 把 X、Y 当作指针而不是张量。最重要的是,softmax 这种特殊实现方式在整个规范化过程中保持 SRAM 中 X 的行不变,从而在适用时最大限度地实现数据重用(约 32K 列)。这与 PyTorch 的内部 CUDA 代码不同,后者使用临时内存使其更通用,但速度明显变慢(见下图)。
  融合 softmax、M=4096 的 A100 性能。
  Torch (v1.9) JIT 较低的性能突出了从高级张量操作序列自动生成 CUDA 代码的难度。 @torch.jit.script def softmax(x):     x_max = x.max(dim=1)[0]     z = x - x_max[:, None]     numerator = torch.exp(x)     denominator = numerator.sum(dim=1)     return numerator / denominator[:, None]
  融合 softmax 与 Torch JIT
  矩阵乘法
  能够为元素操作(element-wise operation)和规约操作(reduction operation)编写融合内核是很重要的,但考虑到神经网络中矩阵乘法的重要性,这还不够。事实证明,Triton 在这些方面表现很好,仅用大约 25 行 Python 代码就能达到最佳性能。相比之下,CUDA 效率就没有那么高了。
  Triton 中的矩阵乘法。
  手写矩阵乘法内核的一个重要优点是它们可以根据需要进行定制,以适应其输入(例如切片)和输出(例如 Leaky ReLU)的融合变换。假如不存在 Triton 这样的系统,那么对于没有出色的 GPU 编程专业知识的开发人员来说,矩阵乘法内核将很难大改。
  高级系统架构
  Triton 的良好性能得益于以 Triton-IR 为中心的模块化系统架构。Triton-IR 是一种基于 LLVM 的中间表示,多维值块(blocks of values)是其中最重要的东西。
  Triton 的高级架构。
  @triton.jit 装饰器的工作原理是遍历由 Python 函数提供的抽象语法树(AST),这样一来就能使用通用的 SSA 构造算法实时生成 Triton-IR。生成的 IR 代码随后由编译器后端进行简化、优化和自动并行化,然后转换为高质量的 LLVM-IR,最终转换为 PTX,以便在最新的 NVIDIA GPU 上执行。目前 Triton 还不支持 CPU 和 AMD GPU,但团队表示对二者的支持正在开发中。
  编译器后端
  研究人员发现通过 Triton-IR 来使用块状程序表示,这种方法允许编译器自动执行各种重要的程序优化。例如,通过查看计算密集型块级操作(例如 tl.dot)的操作数,数据可以自动存储到共享内存中,并使用标准的活跃性分析技术进行数据的分配与同步。
  Triton 编译器通过分析计算密集型操作中使用的块变量的活动范围来分配共享内存。
  此外,Triton 还可以在 SM 之间以及 SM 之内高效、自动地并行化,前者通过并发执行不同的内核实例来实现,后者通过分析每个块级操作的迭代空间,并将其充分划分到不同的 SIMD 单元来实现。如下所示:
  Triton 自动并行化。每个块级操作都定义了一个块级迭代空间,该空间可以自动并行化以利用 SM(Streaming Multiprocessor) 上的可用资源。
  参考链接:https://www.openai.com/blog/triton/

送动物们上西天你的良心不会痛吗?周一知古通今周二牧夫专栏周三太空探索周四观测指南周五深空探测周六茶余星话周日视频天象编译DAIKIN校对王延昕美编况宇庭后台库特莉亚芙卡李子琦徐玖坤胡永葳参考链接httpswww。78岁的前宇航员比尔纳尔逊宣誓就任NASA第14任局长当地时间5月3日,78岁的美国前参议员比尔纳尔逊(BillNelson)宣誓就任美国国家航空航天局(NASA)第14任局长。纳尔逊接替的是1月份离任的上任局长吉姆布里登斯廷(Jim澳洲男子打赌生吞一只壁虎,10天过后身体由内而外腐烂死去壁虎对于大家都不陌生,在人们的印象中壁虎是能吃掉害虫的小动物,可是没想到竟然还有人勇敢地吞掉了一只壁虎。一位名叫戴维道尔的35岁男子,在派对上和朋友打赌,吃掉了一只壁虎,可是两天过鳄鱼胆敢攻击狮子和老虎,为何在面对豹子时,表现出了畏惧?说起鳄鱼,大家肯定会想到这样一幅画面它们静静地潜伏在浅水区中等待猎物的出现,一旦有水牛斑马等食草动物前来饮水,它们便会迅速从水中窜出,一口咬住猎物,给予这些动物致命一击不仅如此,它宇宙史诗,N计划,从过去到未来宇宙史诗,N计划,从过去到未来。n计划筹备策划案,以山海经为模板进行破解还原,其中应用许多解析物理新思维新模型。我们证明一个观点,一个途径是归纳法,一个是推演法。而推演法又脱离了可最新研究表明未来21世纪30年代将出现创纪录洪水月球是地球相伴了数十亿年的邻居,而两者的关系不仅仅是邻居那么简单,月球的一颦一笑都对地球有着巨大的影响,比如潮汐效应,地球上的海水涨落潮和月球息息相关。然而最新新研究发现,月球轨道小火神的荧惑漂流记周一知古通今周二牧夫专栏周三太空探索周四观测指南周五深空探测周六茶余星话周日视频天象作者王茸校对杨伯顺张宇辰审阅涂天宇美编徐坤后台库特莉亚芙卡李子琦徐坤胡永葳我会住在其中的一颗星星鸣禽和人类有一些共同的语言模式如果你听鸣鸟,你会认出重复的旋律或短语。每一个短语都由不同的声音组成,串在一起。麦克吉尔大学研究人员的研究发现,许多鸣禽物种的歌曲短语遵循类似于人类语言中使用的模式。至少在某些方面一种用于生物反馈骨折愈合的自供电可植入和生物可吸收电刺激装置自供电的可生物降解贴片可击碎骨折以治愈它们一种用于生物反馈骨折愈合的自供电可植入和生物可吸收电刺激装置导读骨折是公共卫生中的一个重大问题。最先进的临床研究表明,通过将刺激幅度和频率好爽!我在上海被一个机器人马杀鸡了7月8日10日,2021世界人工智能大会在上海举行,作为全球人工智能领域的一场盛会,吸引了业界诸多企业到场。专注于机器人技术的优必选也来到此次展会,并在大会上全球首发了新一代大型仿南极湖突然消失来自加利福尼亚大学圣地亚哥分校斯克里普斯海洋研究所的一些研究人员发现,南极冰架外的一个巨大深邃冰封的湖泊突然崩塌。这一罕见的事件发生在2019年南极冬季,发生在南极东部的艾默里冰架
公考积累申论必背的五句治国名言01hr毛泽东治国就是治吏,礼义廉耻,国之四维,四维不正,国将不国。释义治理国家就是管理它的官吏,礼,义,廉,耻,这是国家的四个维系支撑,这四个维系支撑不伸张发扬,国家将不会是个国2021江苏事业单位招聘公基备考资料科技常识太阳系的八大行星导读中公事业单位为大家带来2021江苏事业单位招聘公基备考资料科技常识太阳系的八大行星,希望可以帮助各位考生顺利备考事业单位考试。在事业单位的考试当中,科技的题目是经常出现的,尽管2021江苏事业单位行测复习技巧言语理解如何巧解句子排序题导读中公事业单位为大家带来2021江苏事业单位统考行测复习技巧言语理解如何巧解句子排序题,希望可以帮助各位考生顺利备考事业单位考试。在行测言语理解的测查中句子排序题是每年的必考题型2021江苏事业单位面试技巧面试中人际题目的三个解题技巧在面试过程当中,一些题目会着重测查人际交往的意识与技巧能力,很多同学碰到这类题目,总是感觉很头疼,要么对于题干当中的矛盾无从下手,要么就是回答的过于套路。接下来我们聊一聊这类题该如江苏事业单位统考之盐城考情今天将从以下三个方面带大家了解一下江苏事业单位统考中盐城的考情。往年江苏事业单位统考中盐城招聘的人数还是很多的,虽然今年有所下降,但也有600多人。而且统考结束后,盐城亭湖大丰也会邹平杏林散记朋友说邹平西部山区杏花开了,听后心里既激动又兴奋,也许对杏花有一种情结原由吧。恰逢周末艳阳高照暖风轻吹,正是游玩赏花的最佳时机。驱车赶往离城区20公里处水杏生态基地,刚到西外环看到翠微股份第二十三届购物节拉开序幕11月18日上午,翠微股份举办第二十三届购物节开幕式暨服务明星授牌仪式。海淀区总工会党组书记牛爱忠,海淀区区委第一巡察组组长张国生副组长纪永红,海淀区总工会职工发展部部长刘萍,翠微羡慕忌妒啊!阳江十八子李总的新欢ReyAudio号角音箱故事得分二部份来说。第一部分是已收藏有数千件HiEnd音响器材的世界发烧音响博物馆负责人李积回,也就是大家熟悉的阳江十八子。别看他有着弥勒佛一般的小肚子,声音宏亮笑口常开,其实李总加拿大的原住民,与美国原住民相比,谁的生活更加幸福?15世纪末,意大利航海家哥伦布发现了美洲大陆,以及生活在这片大陆上的印第安人。此时,北美至少有2千万5千万的印第安原住民。他们世世代代居住于此,已经有超过1万年的历史。如今,美国原天使之恋Online仙旅奇缘改版全新地图副本登场天使之恋Online营运转移后首次改版于今(19)日上线,最新资料片仙旅奇缘开放新地图副本以及怪物,更为了提升小天使的强度,进一步提升巅峰能力。巅峰能力是当小天使藉由天使老师的协助农发行黑龙江林甸县支行支持畜禽废弃物垃圾处理项目全面建成投产本报讯(肖迪韩亮记者赵修彬)近日,农发行中黑龙江林甸县支行获批2,500万元改善农村人居环境贷款,用于支持林甸县四合乡畜禽养殖废弃物资源化利用项目建设,有效缓解禽畜粪污带来的环境污