目录

计图赛道一:图灵大工 B-069

本仓库是图灵大工队在计图比赛赛道一的开源代码。B 榜实验编号为 B-069,B 榜名次为第 9 名,线上综合分为 1.3767719868171975

仓库不包含比赛数据。checkpoints/ 中仅保留复现 B-069 所需的三个 轻量 Jittor 模型及归一化参数,全部权重合计约 540 KiB。

目录结构

.
├── checkpoints/          # B-069 小型模型参数及说明
├── configs/              # 可复现配置
├── data/                 # 数据放置说明,不提交原始数据
├── docs/                 # 算法改动与原提交包说明
├── outputs/              # 日志、配置、预测和结果包,默认忽略
├── scripts/              # 一键复现与自检入口
└── src/
    ├── a_list/           # A 榜 Dataset1/2 代码
    └── b_list/
        ├── dataset3/     # B 榜 D3 训练与推理
        └── dataset4/     # B 榜 D4 训练、推理及实验代码

环境安装

推荐环境:Ubuntu 22.04、Python 3.10、CUDA 12.x、Jittor 1.3.10.0。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

首次导入 Jittor 可能触发本地编译,因此耗时会明显长于后续运行。

数据准备

从比赛官方渠道取得赛道一 B 榜数据,并通过 --data-root 指定数据根目录:

/path/to/data_B/
├── dataset3/
│   ├── train.csv
│   └── test.csv
└── dataset4/
    ├── train.csv
    └── test.csv

字段及放置说明见 data/README.md。请勿将数据集提交到 Git 仓库。

训练与完整复现

B-069 使用固定随机种子 61807,记录在 configs/b069.json 中。D3 使用 归档的 anchor/novel ckpt 推理;D4 按配置重新训练并推理。

bash scripts/run_b_best.sh \
  --config configs/b069.json \
  --data-root /path/to/data_B \
  --output-root outputs/b069

运行器会先校验路径,然后保存:

  • outputs/b069/effective_config.json:实际配置;
  • outputs/b069/command.txt:实际运行命令;
  • outputs/b069/run.log:完整日志;
  • outputs/b069/result.zip:最终预测包。

只检查配置与数据路径,不启动训练:

bash scripts/run_b_best.sh \
  --config configs/b069.json \
  --data-root /path/to/data_B \
  --output-root outputs/b069 \
  --check-only

如需从零训练 D3 两个排序器:

python src/b_list/dataset3/train_and_predict.py \
  --data-dir /path/to/data_B/dataset3 \
  --output-dir outputs/dataset3_train \
  --anchor-seed 15013 \
  --novel-seed 75013

评测与推理

D3 使用已归档 ckpt 的独立推理命令如下:

python src/b_list/dataset3/hybrid_inference.py \
  --data-dir /path/to/data_B/dataset3 \
  --anchor-model checkpoints/jittor_anchor.pkl \
  --anchor-normalization checkpoints/jittor_anchor_normalization.npz \
  --novel-model checkpoints/jittor_novel_seed75013.pkl \
  --novel-normalization checkpoints/jittor_novel_seed75013_normalization.npz \
  --output-dir outputs/dataset3_inference

完整 B 榜输出请使用上一节的一键命令。最终 result.zip 仅包含:

dataset3.csv
dataset4.csv

自检

bash scripts/self_check.sh

该命令会编译所有 Python 文件,并运行 A 榜、D3、D4 的内置小规模测试; 不读取比赛数据,也不会启动完整训练。

结果说明

实验 指标 数值
B-069 B 榜线上综合分 1.3767719868171975
B-069 late-panel NDCG@10 0.6743104584417265

NDCG@10 对每个候选列表的前 10 位计算归一化折损累计增益,再对查询取平均。 线上综合分由比赛评测系统计算。不同 CUDA/Jittor 版本、硬件并行顺序及 D4 重新训练可能产生轻微数值差异;原线上提交包 SHA-256 记录在 configs/b069.json

算法概览

  • D3:93 维历史、图结构、查询秩与 panel 特征;两个 Jittor DeepSets 排序器分别建模 anchor 和 novel candidate,已见候选保持 anchor 槽位。
  • D4:多上下文因果训练、RP3 图证据和轨迹桥接;B-069 使用两个时间阶段 40%-60%60%-82.5% 以及每个事件 3 个上下文。

相对 A 榜的完整改动见 docs/algorithm_changes.md

权重、数据与第三方依赖

  • 比赛数据不随仓库分发;
  • checkpoints/ 中权重均小于 200 KiB,是 B-069 复现必需文件;
  • 本项目依赖 Jittor、NumPy、Pandas 和 SciPy,各依赖遵循其自身许可证;
  • 未确认存在直接复制的第三方源码,如后续引入须在 NOTICE 中补充来源。

许可证

本仓库使用 MIT License,详见 LICENSE

关于
767.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号