512块A100,AlphaFold训练时间从11天压缩至67小时:尤洋团队FastFold上线

简介: 512块A100,AlphaFold训练时间从11天压缩至67小时:尤洋团队FastFold上线

AlphaFold 虽好,但耗时且成本高,现在首个用于蛋白质结构预测模型的性能优化方案来了。

蛋白质结构预测一直是结构生物学中的一个重要的研究问题。直接从蛋白质的氨基酸序列预测蛋白质的三维结构在许多领域都有广泛的应用,包括药物设计、蛋白质设计等。

预测蛋白质结构的方法主要有两种:实验方法和计算方法。实验方法需要以高昂的时间和经济成本获得更准确的蛋白质结构。计算方法则能够以低成本高吞吐量预测蛋白质结构,因此提高计算方法的预测精度至关重要。借助深度神经网络,AlphaFold 能够周期性地以原子精度预测蛋白质结构,但 AlphaFold 模型的训练和推理由于其特殊的性能特点和巨大的内存消耗,既耗时又昂贵。

基于此,来自潞晨科技和上海交大的研究者提出了一种蛋白质结构预测模型的高效实现 FastFold。 FastFold 包括一系列基于对 AlphaFold 性能全面分析的 GPU 优化。同时,通过动态轴并行和对偶异步算子,FastFold 提高了模型并行扩展的效率,超越了现有的模型并行方法。


论文地址:https://arxiv.org/abs/2203.00854

实验结果表明,FastFold 将整体训练时间从 11 天减少到 67 小时,并实现了 7.5 ∼ 9.5 倍的长序列推理加速。此外,研究者还将 FastFold 扩展到 512 个 A100 GPU 的超算集群上,聚合峰值性能达到了 6.02PetaFLOPs,扩展效率达到 90.1%。

FastFold

不同于一般的 Transformer 模型,AlphaFold 在 GPU 平台上的计算效率较低,主要面临两个挑战:1) 有限的全局批大小限制了使用数据并行性将训练扩展到更多节点,更大的批大小会导致准确率更低。即使使用 128 个谷歌 TPUv3 训练 AlphaFold 也需要约 11 天; 2) 巨大的内存消耗超出了当前 GPU 的处理能力。在推理过程中,较长的序列对 GPU 内存的需求要大得多,对于 AlphaFold 模型,一个长序列的推理时间甚至可以达到几个小时。

AlphaFold 模型架构


作为首个用于蛋白质结构预测模型训练和推理的性能优化工作,FastFold 成功引入了大型模型训练技术,显著降低了 AlphaFold 模型训练和推理的时间和经济成本。

FastFold 由 Evoformer 的高性能实现、AlphaFold 的主干结构和一种称为动态轴并行(Dynamic Axial Parallelism,DAP)的模型并行新策略组成。

Evoformer

根据计算和存储访问的特点,该研究将算子分为三大类:

1) GEMM。这类包括矩阵乘法、批矩阵 - 矩阵相乘和其他密集矩阵计算。来自 NVIDIA Tesla GPU 的张量核可以显著加速 GEMM 算子;2)批递减算子。这类包括 LayerNorm、 Softmax 等,计算强度低于 GEMM 算子,并且更容易出现访问瓶颈。3)Element-wise 算子。这类包括 element-wise 的相加、相乘、dropout 和激活,是计算密集度最低的一类。

Evoformer 的注意力机制如下图所示


值得注意的是,Evoformer 和原版 Transformer 之间有几个关键区别:


该研究分析了 Evoformer 的复杂结构并进行了内核融合,并针对 Evoformer 中的特定操作和基于性能特征的特定内核进行了优化,例如 Softmax 和 LayerNorm。高性能的 Evoformer 实现大大降低了训练和推理的经济成本。


动态轴并行

在并行策略方面,该研究根据 AlphaFold 的计算特征创新性地提出了动态轴并行策略,在 AlphaFold 的特征的序列方向上进行数据划分,并使用 All_to_All 进行通信。动态轴并行(DAP)在扩展效率方面优于当前的标准张量并行(Tensor Parallelism),DAP 具有以下几个优势:

  • 支持 Evoformer 中的所有计算模块;
  • 所需的通信量比张量并行小得多;
  • 显存消耗比张量并行低;
  • 给通信优化提供了更多的空间,如计算通信重叠。



通信优化

在通信方面,该研究提出了由一对通信算子组成的对偶异步算子(Duality Async Operation)。

这种新方法在模型前向传播的过程中,前一个通信算子触发异步通信,然后在计算流上进行一些没有依赖性的计算,然后后一个通信算子阻塞,直到通信完成;在反向传播的过程中,后一个算子将触发异步通信,前一个算子阻塞通信。

利用对偶异步算子可以很容易地在 PyTorch 这样的动态框架上实现前向传播和反向传播中的计算和通信遮叠。


评估

研究者首先评估了 Evoformer 内 核的性能改进,然后对端到端训练和推理性能进行了评估。所有的实验都在 NVIDIA Tesla A100 平台上进行。基线是 AlphaFold 的官方实现和另一个 OpenFold 开源 PyTorch 实现。官方实现的 AlphaFold 只有推理部分,而 OpenFold 则是根据原始 AlphaFold 论文复制训练和推理的。

A. Evoformer 性能


图 8(a)和图 9(a)分别展示了 Fused Softmax 和 LayerNorm 的性能比较。


对于 Fused Softmax,研究者比较了 PyTorch 原生内核和 FastFold 优化内核的性能。注意力输入序列的长度是 x,注意力的隐藏大小是 y。从图 8(a)可以看出,FastFold 内核的性能可以提高 1.77∼3.32 倍 。


对于 LayerNorm,研究者不仅比较了 PyTorch 原生内核,还比较了 NVIDIA Apex 中高度优化的 LayerNorm 内核。如图 9(a) ,FastFold 的性能比 PyTorch 和 Apex 分别提高了 5.53∼8.65 倍 和 1.20∼1.62 倍 。由于对有限范围的特别优化,相比于高度优化的 Apex LayerNorm,FastFold 也实现了良好的性能改进。


B. 端到端训练性能

在端到端训练表现的评估中,研究者使用官方 AlphaFold 文件中的训练参数进行了尽可能多的测试。这样可以更好地比较不同的方法或实现在实际的训练场景中的工作方式。所有的训练实验都是在 128 节点的 GPU 超级计算机上进行的。在超级计算机中,每个节点包括 4 台 NVIDIA Tesla A100,并且有 NVIDIA NVLink 用于 GPU 互连。

由于张量并行更多地依赖于设备之间的高速互连来进行通信,在训练期间,模型并行通常用于节点以及训练期间节点之间的数据并行。研究者分别在模型并行和数据并行两个级别测试了模型的训练性能,结果如图 10 和图 11 所示。在模型并行性方面,论文比较了张量并行和动态轴并行两种并行方法在初始训练和微调两种训练设置下的 scalability。

如图 10 所示,在初始训练和微调方面,DAP 的扩展性能明显优于 TP。

扩展结果如图 11 所示。我们可以看到,在接下来的几个平行里,基本上是线性规模的。微调训练的扩展效率达到 90.1% 。

根据训练效果的评估结果,可以推算出 AlphaFold 的总体时间和经济成本。表 IV 列出并比较了 AlphaFold、 OpenFold 和 FastFold 三种实现的时间和经济成本。由于没有公开的训练代码,所以 AlphaFold 的数据来源于官方文件。


考虑到时间和经济成本,研究者选用了 256 个 A100 进行初始训练,然后在微调阶段扩展到 512 个 A100。

基于这种设置,FastFold 可以将训练时间减少到 2.81 天。与需要 11 天训练的 AlphaFold 相比,训练的时间成本减少了 3.91 倍。与 OpenFold 相比,训练的时间成本降低了 2.98 倍,经济成本降低了 20% 。

在微调阶段,FastFold 在 512 × A100 的设置下实现了 6.02 PetaFLOPs 的计算速度。由于时间和经济成本的显著降低,FastFold 使得蛋白质结构预测模型的训练速度更快、成本更低,这将推动相关模型的研究和开发效率,并促进基于 Evoformer 的蛋白质结构预测模型的开发。

C. 端到端推理性能

针对短序列、长序列和超长序列,研究者对比了 FastFold、OpenFold、AlphaFold 的推理性能。所有推理实验均在由 8 个 NVIDIA A100(带有 NVLink)组成的 GPU 服务器上完成。

对于短序列,典型的氨基酸序列长度不超过 1k,单个模型推理需要几秒钟到大约一分钟。在这个序列范围内,视频内存消耗相对较小,分布式推理的效率较低。

研究者在 1 个 GPU 上比较了三种实现的推理延迟,结果如图 12 所示:


对于长度为 1k 到 2.5 k 的氨基酸序列的长序列推断,直接推理会遇到内存容量问题,推理时间达到几分钟甚至几十分钟。对于 FastFold,采用分布式推理方法可以减少内存容量的需求,显著缩短推理时间。如图 13 所示,当使用分布式推理时,FastFold 比 OpenFold 减少推理时间 7.5∼9.5 倍 ,比 AlphaFold 减少推理时间 9.3∼11.6 倍 。


如表 3 所示,对于 AlphaFold 和 OpenFold,当序列长度达到 3k 之上时,都会遇到内存不足 (OOM) 问题。然而,对于 FastFold,由于分布式推理方法,它可以利用 GPU 更多的计算和内存来完成极长的序列推理。此外,对于长度高达 4k 的序列,FastFold 的推理延迟 在 10 分钟之内。


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
应用服务中间件 nginx
使用Nginx正向代理让内网机器上外网
使用Nginx正向代理让内网机器上外网
3117 0
|
人工智能 架构师 算法
阿里P6到P9的技术栈有哪些?程序员该如何准备学习?如何进入大厂
相信每一个程序员应该都有一个大厂梦,但是不知道如何进入大厂,或者说是技术栈和项目经验达不到大厂的要求! 那就有人问了,那怎么样才能进入大厂呢?进入大厂的话都有哪些要求呢? 小编,就给大家简单介绍一下,要想进入大厂需要达到的要求! 总结起来一共有四点:1.学历;2.技术栈+项目经验;3.心理素质+思维转变;4.面试技巧;
|
7月前
|
人工智能 自然语言处理 数据中心
65_GPU选择:A100 vs RTX系列
在2025年的今天,大语言模型(LLM)已经成为人工智能领域的核心技术之一。从GPT-4到Llama 3.1,从专业领域应用到消费级产品,LLM正在以前所未有的速度改变着我们的工作和生活方式。然而,这些强大模型的训练和部署背后,都离不开高性能计算硬件的支持,尤其是GPU(图形处理单元)的选择,往往直接决定了项目的可行性、效率和成本。
1275 0
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
阶跃星辰开源! Step 3 :最新一代基础大模型 ,多模推理,极致效率
阶跃星辰开源新一代大模型 Step 3,采用 MoE 架构,参数量达 321B,激活参数 32B,平衡推理效率与资源利用,具备强大多模态能力,支持复杂推理与视觉分析,已在多个评测集取得领先成绩。
1147 10
|
人工智能
谷歌重磅发布AlphaFold 3,增强人类发现新药方法!
【5月更文挑战第19天】谷歌DeepMind推出AlphaFold 3,这是人工智能在生物分子结构预测上的新里程碑,有望革新药物发现。相较于前代,AlphaFold 3采用新扩散基架构,提升预测复杂结构的准确性,并在蛋白质-配体、蛋白质-核酸及抗体-抗原相互作用预测上展现优越性能。然而,科学家对其预测误差和可能对现有预测工具的影响持谨慎态度。论文链接:[Nature](https://www.nature.com/articles/s41586-024-07487-w#citeas)
340 9
|
异构计算 索引
单卡A100实现百万token推理,速度快10倍,这是微软官方的大模型推理加速
【7月更文挑战第24天】针对大语言模型(LLM)处理长上下文时的计算瓶颈,微软推出MInference,基于动态稀疏注意力加速预填充,使8B参数模型处理1M token从30分钟降至3分钟,推理延迟降低10倍。通过识别注意力矩阵模式(A形、斜线、块稀疏),仅计算关键权重,无需修改预训练或微调。实验证明,MInference在多个任务和模型上保持准确度,但可能不适用所有LLM类型,存在轻微性能损失风险。
935 17
|
人工智能 安全 网络安全
简述AI漏洞修复研究现状及发展方向
鲁军磊先生的演讲聚焦AI在网络安全中的应用,特别是自动化漏洞修复。他讨论了大模型技术的最新进展,AI如何增强漏洞发现与修复,并介绍了AI智能体的三种协作模式。传统漏洞修复流程从手工审计到智能化挖掘逐步演进,而AI技术通过智能决策和自动化执行提高效率。未来趋势包括智能化防御、跨域协同、安全合规自动化、隐私保护强化和安全技能普及,以及可持续安全生态建设。AI正重塑网络安全领域,推动更高效、精准的防御策略。
|
JavaScript 数据安全/隐私保护 Python
东方财富股票数据JS逆向:secids字段和AES加密实战
东方财富股票数据JS逆向:secids字段和AES加密实战
801 0
|
机器学习/深度学习 算法 数据挖掘
机器学习中的监督学习与非监督学习
在机器学习领域,算法主要分为两大类:监督学习(Supervised Learning)和非监督学习(Unsupervised Learning)。这两种方法在数据处理和问题解决方面各有特点和应用场景。本文将详细介绍监督学习与非监督学习的基本概念、区别以及它们的常见应用。
1248 0
|
Ubuntu Oracle Java
百度搜索:蓝易云【Ubuntu安装Java环境】
现在,你已经成功在Ubuntu上安装了Java环境。你可以在终端中运行Java程序或编译Java源代码。请注意,Ubuntu默认安装的是OpenJDK,如果需要Oracle JDK等其他Java版本,可以参考相应的安装文档。
275 3