返回列表

6th solution: Node-level Instance Norm + Residual SageConv on 5-hop-neighbour Subgraph

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

开始: 2023-08-29 结束: 2023-11-17 基础软件 数据算法赛
第六名解决方案:节点级实例归一化 + 5跳邻域子图上的残差SageConv

第六名解决方案:节点级实例归一化 + 5跳邻域子图上的残差SageConv

作者:hengck23(Kaggle Grandmaster)

发布日期:2023-11-18

得票数:28

比赛排名:第6名

1. 布局运行时间预测

主要问题:

  • 我们输入的是非常大的图。如何设计能够适配GPU内存的学习模型和算法?

方法概述:

  • 与其使用整个图,我们可以通过仅考虑标记为“config id”的节点的5跳邻域来缩减图。我们将此称为5跳邻域子图。我们认为这是合理的,因为我们在比较两个图的相对排序,只需将“差异节点”(而非整个图)输入神经网络即可。
  • 使用缩减后的子图,在训练时我可以在单张48GB GPU卡上对所有完整子图采样32到100种配置。
  • 此处批量大小不是问题,因为我使用了梯度累积。在训练一个批次时,我们每次累积一个子图的梯度。

示例代码:

optimizer.zero_grad()

for b in range(batch_size):
    r = batch[r]  # 从批次中获取一个子图
    loss = net(r)  # 对一个子图进行前向传播
    scaler.scale(loss).backward()  # 反向传播,累积梯度

scaler.step(optimizer)  # 更新网络参数
scaler.update()
  • 归一化很重要。我们使用“图实例归一化”(节点级),见论文[1],它与梯度累积配合良好。
  • 我们在训练损失中使用成对排序损失。
  • 我们尝试了两种图神经网络:
    • 带残差快捷连接的4层SAGE-conv[2]
    • 4层GIN-conv[3]
    SAGE-conv 优于 GIN-conv。

2. Tile 运行时间预测

主要问题:

  • 这里不存在问题,因为Kaggle训练数据中的图要小得多。这些图实际上是更大原始计算图的子图。

方法概述:

  • 我们仍然使用“图实例归一化”(节点级)[1],并采用相同的梯度累积方法,批量大小为64。
  • 我们尝试了SAGE-conv[2]和GAT-conv[4]。GAT-conv取得了更好的结果。
  • 由于我们关注前5名的排名,我们发现listMLE是更合适的损失函数。

参考文献

[1] GraphNorm: A Principled Approach to Accelerating Graph Neural Network Training
https://arxiv.org/abs/2009.03294

[2] Inductive Representation Learning on Large Graphs
https://arxiv.org/abs/1706.02216

[3] How Powerful are Graph Neural Networks?
https://arxiv.org/pdf/1810.00826.pdf

[4] Graph Attention Networks
https://arxiv.org/abs/1710.10903


本地验证与公开/私有排行榜得分

评估指标为:Tile 任务使用减速比(top-5),Layout 任务使用 Kendall tau 相关系数。


致谢

“我要向 HP 致以诚挚的感谢,感谢其慷慨提供 Z8-G4 数据科学工作站,这对成功完成 Kaggle 竞赛起到了重要作用。两张 48GB Nvidia Quadro RTX 8000 GPU 显卡为我带来了显著优势,使我能够轻松使用包含一亿个图、每个图最多有一万个节点的最大公开图数据集 TPUGraphs 来构建模型。”

同比赛其他方案