DS4Sci_EvoformerAttention 是一个由 DeepMind 和 NVIDIA 等机构开发的内核集合,旨在优化以 Evoformer 为中心的结构生物学模型,特别是在处理大量序列和残基时。该内核通过减少内存占用和加速计算,显著提高了模型的扩展性和训练效率。
DS4Sci_EvoformerAttention 支持四种主要的注意力机制:MSA 行、MSA 列以及两种三角形注意力机制。这些机制通过不同的输入参数构建注意力权重,从而促进信息交换和更新对偶表示。此外,该内核基于 CUDA 实现,需要特定版本的 GPU 和 CUDA 版本(如 NVIDIA V100 或更高版本,CUDA 11.3 或更高版本),并要求输入张量的数据类型为 torch.float16 或 torch.bfloat16。
在实际应用中,DS4Sci_EvoformerAttention 已被成功应用于 OpenFold 项目,该项目是 AlphaFold2 的社区版本。通过使用该内核,OpenFold 团队成功将 AlphaFold2 的峰值内存需求降低了 13 倍,同时保持了模型的准确性。这一优化不仅解决了内存爆炸问题,还显著提升了训练速度和模型的可扩展性。
DS4Sci_EvoformerAttention 是一个高效的工具,能够显著优化基于 Evoformer 的结构生物学模型的内存使用和计算性能,使其更适合大规模数据处理和复杂模型训练。
DS4Sci_EvoformerAttention 内核的具体实现细节并未在我搜索到的资料中详细描述。然而,我们可以从相关的信息中推测一些可能的实现细节。
根据,Evoformer模型中的Attention类的实现如下:
class Attention(nn.Module):
def __init__(
self,
dim,
seq_len = None,
heads = 8,
dim_head = 64,
dropout = 0.,
gating = True
):
super().__init__()
inner_dim = dim_head * heads
self.heads = heads
self.gating = gating
self.to _qkv = nn.Linear(dim, inner_dim * 3, bias=False)
self.to _out = nn.Linear(inner_dim, dim)
if seq_len is not None:
self.register _buffer('bias', torch.tril (torch.o