Skip to content

更换FADC模块后,速度问题。 #34

Description

@Ljhljh8

尊敬的作者您好,
我在将《FADC: Frequency-Adaptive Dilated Convolution for Semantic Segmentation》中的 FADC 算子集成到基础 Vision Transformer(ViT)时,发现整体运行/推理速度明显变慢。我的实现中使用了 lp_type='avgpool',主要替换位置包括:

PatchEmbedding 模块中的 self.proj = nn.Conv2d(in_channels, emb_size, kernel_size=patch_size, stride=patch_size);

Multi-Head Attention 模块相关的卷积/投影位置,我在attention和MLP中使用kernel_size=1的2D卷积代替线性映射(然后以 FADC 代替原有卷积算子,当kernel_size=1时,我去掉了offset和mask矩阵的计算,仅包含FrequencySelection进行频域融合以及OmniAttention学习adaptive_weight,然后使用
x= F.conv2d(x_, adaptive_weight, bias=bias, stride=(1, 1),
padding=(1, 1) if isinstance(Pad, nn.Identity) else (0, 0),
dilation=(1, 1), groups= B))
来进行自适应权重的卷积操作。

想请教:

1.FADC 在 ViT 这类 Transformer 结构中是否需要特别的参数或改动(如 k_list、频段划分方式、groups/通道设置等)来避免显著的速度回退?

2.使用 avgpool 作为频段划分是否会在小 patch 场景下引入额外开销或不利的内存访问模式?是否更建议在 ViT 中改用 laplacian/fft 方案或其他方案,或仅在特定层(如 FFN/局部卷积处)使用 FADC?

3.在多头注意力路径上替换为 FADC 是否会破坏原有的张量并行/算子融合,从而导致下降?若是,是否有推荐的替换位置?

4.是否有您建议的高效实现要点(如 CUDA kernel/算子融合、合理的 k_list 与 dilation 范围、batch设置)?

非常感谢您提供可能原因与调参建议!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions