【AI大红包】Facebook发布张量理解库,几分钟自动生成ML代码

简介: Facebook今天宣布发布Tensor Comprehensions,能够自动将数学符号快速转换成高性能机器学习代码,将原本几天乃至几周的过程缩短为几分钟,大幅提高生产力。

Facebook AI Research(FAIR)今天宣布发布Tensor Comprehensions,这是一个C++库和数学语言,旨在帮助弥合研究人员和工程师在从事机器学习任务时,在沟通上的差距;研究人员习惯使用数学运算,而工程师则专注在不同的硬件后端运行大规模ML模型的实际需求。

相比其他库,Tensor Comprehensions 的主要不同是对Just-In-Time编译有独特的研究,能够自动按需生成机器学习社区需要的高性能代码。

只需几分钟生成高性能CPU/GPU代码,生产力实现数量级提高

要创建新的高性能机器学习(ML)层,典型的工作流程一般包含两个阶段,时间往往需要好几天乃至数周:

1、首先,一位研究人员在numpy级别的抽象中编写了一个新的层,并将其与像PyTorch这样的深度学习库链接起来,然后在小规模实验中对其进行测试。想法得到验证后,相关的代码,性能需要加快一个数量级才能运行大规模实验。

2、接下来,一位工程师为GPU和CPU编写高效代码,而这又需要:

  • 这名工程师需要是高性能计算的专家,这方面人才数量有限
  • 这名工程师需要获取上下文,制定策略,编写和调试代码
  • 将代码移到后端需要进行一些枯燥但必须完成的任务,例如反复进行参数检查和添加Boilerplate集成代码

因此,在过去的几年中,深度学习社区在很大程度上都依靠CuBLAS,MKL和CuDNN等高性能库来获得GPU和CPU上的高性能代码。不使用这些库提供的原语来进行试验,需要极高的工程水平,这对不少研究人员都构成了很大的挑战。

如果有套件能够将上述过程从几周缩短为几分钟,我们预期,将这样一个套件开源将具有重大实用价值。有了Tensor Comprehensions,我们的愿景是让研究人员用数学符号写出他们的想法,这个符号自动被我们的系统编译和调整,结果就是具有良好性能的专用代码。

在这次发布的版本中,我们将提供:

  • 表达一系列不同机器学习概念的数学符号
  • 用于这一数学符号的基于Halide IR的C++前端
  • 基于Integer Set Library(ISL)的多面体Just-in-Time(JIT)编译器
  • 基于进化搜索的多线程、多GPU自动调节器

使用高级语法编写网络层,无需明确如何运行

最近在高性能图像处理领域很受欢迎的一门语言是Halide。Halide使用类似的高级函数语法来描述图像处理流水线,然后在单独的代码块中,明确将其调度(schedule)到硬件上,详细指定运算如何平铺、矢量化、并行和融合。这对于拥有架构专业知识的人来说,是一种非常高效的语言,但对于大多数机器学习从业者却很难使用。目前有很多研究积极关注Halide的自动调度(Automatic scheduling),但对于在GPU上运行的ML代码,还没有很好的解决方案。

b32ffa09fa8c1a6464c2ec29c0cbc0b073c3f999

Tensor Comprehensions使用Halide编译器作为库。在Halide的中间表示(IR)和分析工具的基础上,将其与多面体编译技术相结合,使用者可以用类似的高级语法编写网络层,而无需明确它将如何运行。我们还成功使语言更加简洁,无需指定减法(reduction)的循环边界。

eb2b5f74835abe463e8cdbbdb14647307f4a997f

Tensor Comprehensions使用Halide和Polyhedral Compilation 技术,自动合成CUDA内核。这种转换会为通用算子融合、快速本地内存、快速减法和JIT类型特化进行优化。由于没有或者没有去优化内存管理,我们的流程可以轻松高效地集成到任何ML框架和任何允许调用C++函数的语言中。

ecfa425d89ed9b11d6228a75f95a2bf18c99a6f4

与传统的编译器技术和库的方法相反,多面编译(Polyhedral Compilation)让Tensor Comprehensions为每个新网络按需调度单个张量元素的计算。

在CUDA层面,Tensor Comprehensions结合了affine loop transformations,fusion/fission和自动并行处理,同时确保数据在存储器层次结构中正确移动。

图中的数字表示最初计算张量元素的顺序,箭头表示它们之间的依赖关系。在这个例子中,数字旋转对应loop interchange,深度算子融合就发生在这个过程中。

性能媲美乃至超越Caffe2+cuBLAS

为了推动搜索过程,我们还提供了一个集成的多线程、多GPU自动调谐库(autotuning library),它使用Evolutionary Search来生成和评估数千种实现方案,并从中选择性能最佳的方案。只需调用Tensor Comprehension的tune函数,你就能实时地看着性能提高,到你满意时停止即可。最好的策略是通过protobuf序列化,立即就可重用,或在离线情况下。

50d63e2bab7786ed5cf7b2ddedc99d198277bead

在性能方面,尽管我们还有很多需要改进的地方,但在某些情况下,Tensor Comprehensions 已经可以媲美甚至超越当前整合了手动调整库的ML框架。这主要通过将代码生成策略适应特定问题大小的能力来实现的。下面的条形图展示了将Tensor Comprehensions自动生成的内核与Caffe2和ATen(使用CuDNN)相比较时的结果。更多信息,请参阅论文(见文末链接)。

随着我们扩大至更多硬件后端,Tensor Comprehensions将补充硬件制造商(如NVIDIA和Intel)编写的速度很快的库,并将与CUDNN,MKL或NNPack等库一起使用。

未来计划

这次发布的版本将让研究人员和程序员用与他们在论文中使用的数学语言来编写网络层,并简明地传达他们程序的意图。同时,研究人员还能在几分钟之内将他们的数学符号转化成能够快速实施的代码。随着工具链的不断增长,我们预计可用性和性能将会增加,并使整个社区受益。

我们将在稍后发布PyTorch的Tensor Comprehensions集成。

我们感谢与框架团队的频繁交流和反馈,并期待着将这一令人兴奋的新技术带入你最喜爱的ML框架。

FAIR致力于开放科学并与机器学习社区合作,进一步推动AI研究。Tensor Comprehensions(已经在Apache 2.0协议下发布)已经是Facebook,Inria,苏黎世联邦理工学院和麻省理工学院的合作项目。目前工作还处于早期阶段,我们很高兴能够尽早分享,并期望通过社区的反馈来改进它。


原文发布时间为:2018-02-15

本文作者:文强

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【AI大红包】Facebook发布张量理解库,几分钟自动生成ML代码

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
2月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
550 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
3月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
769 109
|
3月前
|
数据采集 人工智能 监控
零代码改造!LoongSuite AI 采集套件观测实战
在 AI 时代,随着模型和应用侧的快速演化,对于推理过程,成本和性能显得尤为重要,而端到端的 AI 可观测是其中至关重要的一环。本文将介绍端到端 AI 可观测的基本概念与痛点,并通过阿里云可观测团队最新开源的 AI 采集套件 LoongSuite Agent 来对大模型应用进行全链路可观测以解决这些痛点。帮助客户无侵入,低成本地进行全链路的大模型可观测。
367 44
零代码改造!LoongSuite AI 采集套件观测实战
|
2月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
233 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
2月前
|
人工智能 机器人 测试技术
AI写的代码为何金玉其外败絮其中
本文分析AI编码看着好看其实很烂的现象、原因,探索行之有效的的解决方案。并从理论上延伸到如何更好的与AI协作的方式上。
108 3
|
3月前
|
人工智能 测试技术 开发工具
如何将 AI 代码采纳率从30%提升到80%?
AI编码采纳率低的根本原因在于人类期望其独立完成模糊需求,本文提出了解决之道,讲解如何通过结构化文档和任务拆解提高AI的基础可靠性。
1082 24
|
3月前
|
人工智能 数据可视化 定位技术
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
431 39
|
3月前
|
数据采集 人工智能 监控
零代码改造!LoongSuite AI 采集套件观测实战
本文介绍了AI应用生态的快速发展及可观测性的重要性,重点阐述了LLM(大语言模型)应用的复杂性对全链路监控的需求。LoongSuite作为开源的可观测性数据采集套件,提供无侵入式埋点、全栈观测与多语言支持,助力AI应用实现从端侧到模型层的端到端链路追踪,提升系统稳定性与运维效率。
250 1
|
2月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1623 36
|
2月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
537 24