581. Google - Fast or Slow? Predict AI Model Runtime | predict-ai-model-runtime
感谢主办这次有趣的比赛,也祝贺所有获奖者!
我的解决方案基于端到端的图神经网络(GNN)。我使用PyG实现了3层GraphSage。在每一层中,我通过在边的两个方向上使用不同的权重进行图卷积,并将输出连接起来。

我使用AdamW优化器和余弦退火调度器来最小化成对合页损失(pairwise hinge loss)。对于损失函数,我采用了两种损失的加权平均:同一图不同配置之间的成对合页损失,以及一个批次中所有样本(包括不同图)之间的成对合页损失。因此,我没有使用子图,而是将整个图作为GNN的输入。
节点特征包含6个维度,每个维度有30个特征(包括tile和layout配置)。直接将这些特征展平输入GNN是一种朴素方法(我称之为朴素模型),但我认为存在两个缺点:
为了解决这些问题,我实现了一个使用Transformer的维度特征嵌入层,将每个维度视为一个token。在该层中,我将(6, 30)的输入通过Transformer转换为(6, mid_ch),然后在token维度上求和,将其缩减为(mid_ch)。由于大多数维度特征完全相同(填充的维度),我可以通过仅计算每个批次中唯一特征的嵌入并复制它们来高效地计算。
我仅使用tile数据集训练模型。使用Transformer模型,我可以在公开和私有排行榜上轻松达到0.2(接近完美)。Transformer模型在验证集的Kendall tau分数上显著优于朴素方法。
我使用完整的layout数据集(xla和nlp的随机和默认配置)训练模型。包含tile数据集也略微提升了性能。
由于时间有限,我无法在验证分数上通过Transformer模型超越朴素模型,但两者性能相当。我的最终提交是朴素模型和Transformer模型的集成。
我感谢Preferred Networks, Inc.允许我使用计算资源。