581. Google - Fast or Slow? Predict AI Model Runtime | predict-ai-model-runtime
我们要向Kaggle teammates以及主办方表示诚挚的感谢,感谢他们提供了参与这场引人入胜竞赛的机会。同时也感谢我优秀的队友 @yoichi7yamakawa。
这是我今年获得的第7枚金牌(与@yoichi7yamakawa合作的第四枚)。太棒了!
这个问题类型是我们之前没有过多接触过的,这使得深入探索变得极其吸引人。下面我们概述一下我们的解决方案。
我们参考了 GitHub - google-research-datasets/tpu_graphs 以及公开的notebook。由于公开notebook的分数已经令人满意,布局部分的成功学习是本次竞赛的关键。
我们主要参考了 GutHub - kaidic/GST 的实现,并进行了我们认为必要的改进以提高分数。
在布局学习过程中,可配置数据是有限的。因此,我们的实现仅提取受此影响的节点及其连通分量。通过应用这种方法,我们的学习效率显著提高,为分数提升做出了重大贡献。
具体来说,对每个数据集执行了以下步骤:
s开始应用Dijkstra算法(即s=data["node_feat"].shape[0]-1)。我们选择s作为起点,因为许多图都是树状结构,s作为父节点。s到所有node_config_ids中节点的最短路径,并将路径中节点和边的并集视为压缩图。这种压缩方法使每个布局数据的平均节点数从13894减少到1736(xla),从5711减少到570(nlp)。对于未包含在压缩图中的节点特征,我们直接完全忽略它们。
有时由于不同维度输入特征的量纲差异,学习无法顺利进行。为了解决这个问题,我们对节点特征进行了对数变换,从而使学习能够顺利进行。
通过检查数据,我们发现可以从ID或节点编号(或测试数据的op_codes)推断出架构(如BERT、U-Net、ResNet等)。利用这些信息,我们仅使用与每种架构相关的数据进行学习,这极大地提高了私有分数。除了在整个数据集上训练的模型外,我们还训练了专注于resnet、efficientnet或bert的模型。适当的探索性数据分析确实至关重要。
作为图卷积层的TransformerConv和GATConv影响很小,但对集成很有用。
尽管我们没有足够时间进行细致的权重调整,但它确实带来了稳定的分数提升(+0.01 - 0.02)。