目录
如何使用
首页 科技周边 人工智能 首个GPU高级语言,大规模并行就像写Python,已获8500 Star

首个GPU高级语言,大规模并行就像写Python,已获8500 Star

Jun 07, 2024 pm 12:03 PM
模型 训练

经过近10年的不懈努力,对计算机科学核心的深入研究,人们终于实现了一个梦想:在GPU上运行高级语言。

上周末,一种名为 Bend 的编程语言在开源社区引发了热烈的讨论,GitHub 的 Star 量已经超过了 8500。

首个GPU高级语言,大规模并行就像写Python,已获8500 Star

GitHub:https://github.com/HigherOrderCO/Bend

作为一种大规模并行的高级编程语言,它仍处于研究阶段,但提出的思路已经让人们感到非常惊讶。使用 Bend,你可以为多核 CPU/GPU 编写并行代码,而无需成为具有10年经验的 C/CUDA 专家,感觉就像 Python 一样!

首个GPU高级语言,大规模并行就像写Python,已获8500 Star

是的,Bend 采用了 Python 语法。

Bend是一种支持Python、Haskell等表达性语言的编程范式,它不同于CUDA、Metal等低级替代方案。Bend具备快速对象分配、完全闭包支持的高阶函数、无限制的递归、以及基于核心数量的近线性加速。Bend在大规模并行硬件上运行,并提供基于HVM2的运行时支持。

该项目的主要贡献者 Victor Taelin 来自巴西,他在 X 平台上分享了 Bend 的主要特性和开发思路。

首先,Bend 不适用于现代机器学习算法,因为这些算法是高度正则化的(矩阵乘法)且具有预先分配的内存,并且通常已经编写了好的 CUDA 内核。

Bend 的巨大优势体现在实际应用中,这是因为「真正的应用程序」通常没有预算来制作专用的 GPU 内核。试问,谁在 CUDA 中制作了网站?而且,即使有人这样做了,也是不可行的,因为:

1. 真正的应用程序需要从许多不同的库导入函数,无法为它们编写 CUDA 内核;

2. 真实的应用程序具有动态函数和闭包;

3. 真实的应用程序会动态且不可预测地分配大量内存。

Bend 完成了一些新的尝试,并且在某些情况下可以相当快,但现在想写大语言模型肯定是不行的。

作者对比了一下旧方法和新的方法,使用相同的算法树中的双调排序,涉及 JSON 分配和操作。Node.js 的速度是 3.5 秒(Apple M3 Max),Bend 的速度是 0.5 秒(NVIDIA RTX 4090)。

是的,目前 Bend 需要整块 GPU 才能在一个核心上击败 Node.js。但另一方面,这还是一个初生的新方法与大公司(Google)优化了 16 年的 JIT 编译器在进行比较。未来还有很多可能性。

如何使用

在 GitHub 上,作者简要介绍了 Bend 的使用流程。

首先,安装 Rust。如果你想使用 C 运行时,请安装 C 编译器(例如 GCC 或 Clang);如果要使用 CUDA 运行时,请安装 CUDA 工具包(CUDA 和 nvcc)版本 12.x。Bend 目前仅支持 Nvidia GPU。

然后,安装 HVM2 和 Bend:

cargo +nightly install hvmcargo +nightly install bend-lang
登录后复制

最后,编写一些 Bend 文件,并使用以下命令之一运行它:

bend run<file.bend> # uses the Rust interpreter (sequential)bend run-c<file.bend> # uses the C interpreter (parallel)bend run-cu <file.bend> # uses the CUDA interpreter (massively parallel)
登录后复制

你还可以使用 gen-c 和 gen-cu 将 Bend 编译为独立的 C/CUDA 文件,以获得最佳性能。但 gen-c、gen-cu 仍处于起步阶段,远没有像 GCC 和 GHC 这样的 SOTA 编译器那么成熟。

Bend 中的并行编程

这里举例说明可以在 Bend 中并行运行的程序。例如,表达式:

(((1 + 2) + 3) + 4)
登录后复制

不能并行运行,因为 + 4 取决于 + 3,而 + 3 又取决于 (1+2)。而表达式:

((1 + 2) + (3 + 4))
登录后复制

可以并行运行,因为 (1+2) 和 (3+4) 是独立的。Bend 并行运行的条件就是符合并行逻辑。

再来看一个更完整的代码示例:

# Sorting Network = just rotate trees!def sort (d, s, tree):switch d:case 0:return treecase _:(x,y) = treelft = sort (d-1, 0, x)rgt = sort (d-1, 1, y)return rots (d, s, lft, rgt)# Rotates sub-trees (Blue/Green Box)def rots (d, s, tree):switch d:case 0:return treecase _:(x,y) = treereturn down (d, s, warp (d-1, s, x, y))(...)
登录后复制

该文件实现了具有不可变树旋转的双调排序器。它不是很多人期望的在 GPU 上快速运行的算法。然而,由于它使用本质上并行的分治方法,因此 Bend 会以多线程方式运行它。一些速度基准:

  •  CPU,Apple M3 Max,1 个线程:12.15 秒
  •  CPU,Apple M3 Max,16 线程:0.96 秒
  •  GPU,NVIDIA RTX 4090,16k 线程:0.21 秒

不执行任何操作即可实现 57 倍的加速。没有线程产生,没有锁、互斥锁的显式管理。我们只是要求 Bend 在 RTX 上运行我们的程序,就这么简单。

Bend 不限于特定范例,例如张量或矩阵。任何的并发系统,从着色器到类 Erlang 的 actor 模型都可以在 Bend 上进行模拟。例如,要实时渲染图像,我们可以简单地在每个帧上分配一个不可变的树:

# given a shader, returns a square imagedef render (depth, shader):bend d = 0, i = 0:when d < depth:color = (fork (d+1, i*2+0), fork (d+1, i*2+1))else:width = depth / 2color = shader (i % width, i /width)return color# given a position, returns a color# for this demo, it just busy loopsdef demo_shader (x, y):bend i = 0:when i < 5000:color = fork (i + 1)else:color = 0x000001return color# renders a 256x256 image using demo_shaderdef main:return render (16, demo_shader)
登录后复制

它确实会起作用,即使涉及的算法在 Bend 上也能很好地并行。长距离通信通过全局 beta 缩减(根据交互演算)执行,并通过 HVM2 的原子链接器正确有效地同步。

最后,作者表示 Bend 现在仅仅是第一个版本,还没有在合适的编译器上投入太多精力。大家可以预期未来每个版本的原始性能都会大幅提高。而现在,我们已经可以使用解释器,从 Python 高级语言的角度一睹大规模并行编程的样子了。


以上是首个GPU高级语言,大规模并行就像写Python,已获8500 Star的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
开源!超越ZoeDepth! DepthFM:快速且精确的单目深度估计! 开源!超越ZoeDepth! DepthFM:快速且精确的单目深度估计! Apr 03, 2024 pm 12:04 PM

0.这篇文章干了啥?提出了DepthFM:一个多功能且快速的最先进的生成式单目深度估计模型。除了传统的深度估计任务外,DepthFM还展示了在深度修复等下游任务中的最先进能力。DepthFM效率高,可以在少数推理步骤内合成深度图。下面一起来阅读一下这项工作~1.论文信息标题:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

全球最强开源 MoE 模型来了,中文能力比肩 GPT-4,价格仅为 GPT-4-Turbo 的近百分之一 全球最强开源 MoE 模型来了,中文能力比肩 GPT-4,价格仅为 GPT-4-Turbo 的近百分之一 May 07, 2024 pm 04:13 PM

想象一下,一个人工智能模型,不仅拥有超越传统计算的能力,还能以更低的成本实现更高效的性能。这不是科幻,DeepSeek-V2[1],全球最强开源MoE模型来了。DeepSeek-V2是一个强大的专家混合(MoE)语言模型,具有训练经济、推理高效的特点。它由236B个参数组成,其中21B个参数用于激活每个标记。与DeepSeek67B相比,DeepSeek-V2性能更强,同时节省了42.5%的训练成本,减少了93.3%的KV缓存,最大生成吞吐量提高到5.76倍。DeepSeek是一家探索通用人工智

AI颠覆数学研究!菲尔兹奖得主、华裔数学家领衔11篇顶刊论文|陶哲轩转赞 AI颠覆数学研究!菲尔兹奖得主、华裔数学家领衔11篇顶刊论文|陶哲轩转赞 Apr 09, 2024 am 11:52 AM

AI,的确正在改变数学。最近,一直十分关注这个议题的陶哲轩,转发了最近一期的《美国数学学会通报》(BulletinoftheAmericanMathematicalSociety)。围绕「机器会改变数学吗?」这个话题,众多数学家发表了自己的观点,全程火花四射,内容硬核,精彩纷呈。作者阵容强大,包括菲尔兹奖得主AkshayVenkatesh、华裔数学家郑乐隽、纽大计算机科学家ErnestDavis等多位业界知名学者。AI的世界已经发生了天翻地覆的变化,要知道,其中很多文章是在一年前提交的,而在这一

你好,电动Atlas!波士顿动力机器人复活,180度诡异动作吓坏马斯克 你好,电动Atlas!波士顿动力机器人复活,180度诡异动作吓坏马斯克 Apr 18, 2024 pm 07:58 PM

波士顿动力Atlas,正式进入电动机器人时代!昨天,液压Atlas刚刚「含泪」退出历史舞台,今天波士顿动力就宣布:电动Atlas上岗。看来,在商用人形机器人领域,波士顿动力是下定决心要和特斯拉硬刚一把了。新视频放出后,短短十几小时内,就已经有一百多万观看。旧人离去,新角色登场,这是历史的必然。毫无疑问,今年是人形机器人的爆发年。网友锐评:机器人的进步,让今年看起来像人类的开幕式动作、自由度远超人类,但这真不是恐怖片?视频一开始,Atlas平静地躺在地上,看起来应该是仰面朝天。接下来,让人惊掉下巴

替代MLP的KAN,被开源项目扩展到卷积了 替代MLP的KAN,被开源项目扩展到卷积了 Jun 01, 2024 pm 10:03 PM

本月初,来自MIT等机构的研究者提出了一种非常有潜力的MLP替代方法——KAN。KAN在准确性和可解释性方面表现优于MLP。而且它能以非常少的参数量胜过以更大参数量运行的MLP。比如,作者表示,他们用KAN以更小的网络和更高的自动化程度重现了DeepMind的结果。具体来说,DeepMind的MLP有大约300,000个参数,而KAN只有约200个参数。KAN与MLP一样具有强大的数学基础,MLP基于通用逼近定理,而KAN基于Kolmogorov-Arnold表示定理。如下图所示,KAN在边上具

特斯拉机器人进厂打工,马斯克:手的自由度今年将达到22个! 特斯拉机器人进厂打工,马斯克:手的自由度今年将达到22个! May 06, 2024 pm 04:13 PM

特斯拉机器人Optimus最新视频出炉,已经可以在厂子里打工了。正常速度下,它分拣电池(特斯拉的4680电池)是这样的:官方还放出了20倍速下的样子——在小小的“工位”上,拣啊拣啊拣:这次放出的视频亮点之一在于Optimus在厂子里完成这项工作,是完全自主的,全程没有人为的干预。并且在Optimus的视角之下,它还可以把放歪了的电池重新捡起来放置,主打一个自动纠错:对于Optimus的手,英伟达科学家JimFan给出了高度的评价:Optimus的手是全球五指机器人里最灵巧的之一。它的手不仅有触觉

快手版Sora「可灵」开放测试:生成超120s视频,更懂物理,复杂运动也能精准建模 快手版Sora「可灵」开放测试:生成超120s视频,更懂物理,复杂运动也能精准建模 Jun 11, 2024 am 09:51 AM

什么?疯狂动物城被国产AI搬进现实了?与视频一同曝光的,是一款名为「可灵」全新国产视频生成大模型。Sora利用了相似的技术路线,结合多项自研技术创新,生产的视频不仅运动幅度大且合理,还能模拟物理世界特性,具备强大的概念组合能力和想象力。数据上看,可灵支持生成长达2分钟的30fps的超长视频,分辨率高达1080p,且支持多种宽高比。另外再划个重点,可灵不是实验室放出的Demo或者视频结果演示,而是短视频领域头部玩家快手推出的产品级应用。而且主打一个务实,不开空头支票、发布即上线,可灵大模型已在快影

FisheyeDetNet:首个基于鱼眼相机的目标检测算法 FisheyeDetNet:首个基于鱼眼相机的目标检测算法 Apr 26, 2024 am 11:37 AM

目标检测在自动驾驶系统当中是一个比较成熟的问题,其中行人检测是最早得以部署算法之一。在多数论文当中已经进行了非常全面的研究。然而,利用鱼眼相机进行环视的距离感知相对来说研究较少。由于径向畸变大,标准的边界框表示在鱼眼相机当中很难实施。为了缓解上述描述,我们探索了扩展边界框、椭圆、通用多边形设计为极坐标/角度表示,并定义一个实例分割mIOU度量来分析这些表示。所提出的具有多边形形状的模型fisheyeDetNet优于其他模型,并同时在用于自动驾驶的Valeo鱼眼相机数据集上实现了49.5%的mAP

See all articles