返回列表

5th Place Solution: GNN with Invariant Dimension Features

581. Google - Fast or Slow? Predict AI Model Runtime | predict-ai-model-runtime

开始: 2023-08-29 结束: 2023-11-17 基础软件 数据算法赛
第5名解决方案:带有不变维度特征的图神经网络

第5名解决方案:带有不变维度特征的图神经网络

作者:knshnb(Kaggle Grandmaster)

竞赛排名:第5名

发布时间:2023年11月18日

感谢主办这次有趣的比赛,也祝贺所有获奖者!

概述

我的解决方案基于端到端的图神经网络(GNN)。我使用PyG实现了3层GraphSage。在每一层中,我通过在边的两个方向上使用不同的权重进行图卷积,并将输出连接起来。

GNN架构图

我使用AdamW优化器和余弦退火调度器来最小化成对合页损失(pairwise hinge loss)。对于损失函数,我采用了两种损失的加权平均:同一图不同配置之间的成对合页损失,以及一个批次中所有样本(包括不同图)之间的成对合页损失。因此,我没有使用子图,而是将整个图作为GNN的输入。

基于Transformer的维度特征嵌入

节点特征包含6个维度,每个维度有30个特征(包括tile和layout配置)。直接将这些特征展平输入GNN是一种朴素方法(我称之为朴素模型),但我认为存在两个缺点:

  • 它丢失了跨维度的特征对应关系先验信息
  • 输出结果应对维度的索引顺序保持不变(我不太确定这是否完全正确)

为了解决这些问题,我实现了一个使用Transformer的维度特征嵌入层,将每个维度视为一个token。在该层中,我将(6, 30)的输入通过Transformer转换为(6, mid_ch),然后在token维度上求和,将其缩减为(mid_ch)。由于大多数维度特征完全相同(填充的维度),我可以通过仅计算每个批次中唯一特征的嵌入并复制它们来高效地计算。

Tile配置数据集

我仅使用tile数据集训练模型。使用Transformer模型,我可以在公开和私有排行榜上轻松达到0.2(接近完美)。Transformer模型在验证集的Kendall tau分数上显著优于朴素方法。

Layout配置数据集

我使用完整的layout数据集(xla和nlp的随机和默认配置)训练模型。包含tile数据集也略微提升了性能。

由于时间有限,我无法在验证分数上通过Transformer模型超越朴素模型,但两者性能相当。我的最终提交是朴素模型和Transformer模型的集成。

技巧

  • 对一元操作(如abs、ceil、cosine等)使用相同的操作码嵌入
  • 对于可配置节点,使用layout配置特征覆盖layout_minor_to_major
  • DropEdge
  • 对输入特征应用对数变换
  • 过采样
  • 使用numpy的mmap模式加载layout配置数据以节省内存

未生效的方法

  • 图池化(graph pooling)
  • 在tile数据集上预训练,然后在layout数据集上微调
  • 图归一化(graph normalization)
  • 节点丢弃(dropout node)
  • GAT、GATv2、GIN
  • fp16
  • 伪标签(pseudo label)

致谢

我感谢Preferred Networks, Inc.允许我使用计算资源。

同比赛其他方案