返回列表

16th place solution

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

开始: 2023-08-29 结束: 2023-11-17 基础软件 数据算法赛
第16名解决方案

第16名解决方案

作者: Yuki Okumura

竞赛排名: 第16名

创建时间: 2023年11月20日

投票数: 7

感谢主办方的比赛邀请,祝贺所有获奖者!

我将简要分享我的解决方案。

总结

  • 从可配置节点提取3跳子图
  • 删除重复配置
  • Listwise损失函数。实验中,Listwise损失比pairwise损失收敛更快且表现更好
  • 3层SAGEConv,包含LayerNorm和残差连接。我通过将初始嵌入添加到每层输出来实现残差连接。代码如下:
def forward(self, batch):
    node_opcode = batch.node_opcode.long()

    opcode_embeds = self.opcode_embedding(node_opcode)

    x = torch.concat([batch.node_feat, opcode_embeds, batch.node_config_feat * self.node_config_weights], dim=1)
    x = self.lin1(x)
    x = self.norm1(x).relu()

    x_init = x
    for i in range(self.n_layers):
        x = self.convs[i](x, batch.edge_index)
        x = self.norms[i](x).relu()
        x = x_init + x

    x = torch.concat([global_mean_pool(x, batch.batch), global_max_pool(x, batch.batch)], dim=1)
    x = self.dropout(x)
    x = self.readout(x)

    return x
  • 针对不同子类型分别训练模型

  • 交叉验证分数(使用官方提供的训练/验证分割)

    • xla default: 0.37
    • xla random: 0.71
    • nlp default: 0.55
    • nlp random: 0.96
    • tile: 0.97

    基于这些交叉验证分数,我最终获得了公开榜0.684分和私有榜0.688分的成绩。

同比赛其他方案