fix: include production source dependency closure
北京交通大学 BJTU_LTX 战队参加计图 Track1 的开源实现。代码只使用组委会 提供的 data_A,不使用外部比赛数据、预训练权重、Test 标签、伪标签或 Test 自适应策略。
data_A
当前公开方案对应线上成绩 1.4104167109954262:
线上提交包未纳入 Git,其 SHA256 为 b692a3b265113fd1bbebfb3a72766b8bfb1b6b67f2706c989f34f5410ae6a049。 成员 SHA、固定参数和 OOF 指标见 configs/v25_sota.json 与 结果说明。
b692a3b265113fd1bbebfb3a72766b8bfb1b6b67f2706c989f34f5410ae6a049
configs/v25_sota.json
代码审核冻结版本为 release ref **a-board-audit-v25**。审核 ZIP 根目录的 SOURCE_REVISION.json 记录该 ref 的完整 commit SHA;code/ 由该 commit 直接导出并进行逐文件校验。提交材料前必须确认 GitHub 与 GitLink 的 master 均解析到该 SHA;GitHub 另保留同名冻结分支。
a-board-audit-v25
SOURCE_REVISION.json
code/
master
edge_time < t
0.8 × full-list CE + 0.2 × hardest BPR
完整结构见 ARCHITECTURE.md。
审核目标环境与组委会要求一致:
cuda_arch=86
git clone https://github.com/LTX129/jittor-BJTU_LTX-Track1A.git cd jittor-BJTU_LTX-Track1A git checkout a-board-audit-v25 conda env create -f environment.yaml conda activate jittor-track1-audit export cuda_arch=86 python scripts/check_environment.py \ --config configs/v25_sota.json \ --strict \ --with-jittor
也可使用 Python 3.10 虚拟环境:
python3.10 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt
check_environment.py --strict 会逐项检查 Python、所有精确固定的依赖、 cuda_arch 和 nvcc 12.4;任何不一致都会返回非零退出码。
check_environment.py --strict
cuda_arch
nvcc
线上 SOTA 的原始实验 lineage 使用较新的 Python/Jittor 和较旧 CUDA toolkit。 该信息仅保留在配置的 original_training_environment 字段中;公开审核入口已 移除旧版本运行时阻断,并以官方审核环境为唯一支持目标。
original_training_environment
仓库不分发官方原始数据。目录必须为:
data_A/ ├── dataset1/ │ ├── train.csv │ └── test.csv └── dataset2/ ├── train.csv └── test.csv
先检查文件、schema、候选宽度和输入 SHA:
python scripts/prepare_data.py \ --data-root /path/to/data_A \ --no-link \ --output outputs/data_audit.json
公开版本提供两条互补且真实可运行的闭环。二者都只读取官方 CSV,不要求 私有 checkpoint、冻结 score array 或历史缓存。
这条路径在真实官方行上依次执行:
TemporalDualEncoderRanker
TemporalPoolingRanker
python scripts/reproduce.py \ --profile audit \ --data-root /path/to/data_A \ --output outputs/v25_audit \ --seed 20260731 \ --rows 32
第一次运行会编译 Jittor CUDA 算子。实测 Python 3.10 + Jittor 1.3.10.0 真实训练链路报告见 PY310_TRAINING_PIPELINE_REPORT.json。
PY310_TRAINING_PIPELINE_REPORT.json
该路径从四个官方 CSV 训练两个 Jittor BipartiteBPR 模型,对全部 Test 行推理, 并生成 submission-shaped ZIP:
python scripts/reproduce.py \ --profile reference \ --data-root /path/to/data_A \ --output outputs/v25_reference \ --seed 20260731
等价兼容命令:
python scripts/run_pipeline.py \ --stage all \ --data-root /path/to/data_A \ --output outputs/v25_reference \ --resume
参考提交用于证明“官方 CSV → Jittor 训练 → 全量推理 → ZIP → validator” 闭环,模型规模小于榜单六成员系统,因此不宣称复现 1.4104167109954262。
最终算法的模型类、损失、时间切分、特征、固定种子、集成和历史生产入口均保留 在 src/track1_open/、src/competition/ 与配置中。按官方“不提交大权重和 训练产物”规范,本仓库和轻量审核 ZIP 不携带 checkpoint、embedding、缓存、 最终 score array 或参考 submission。
src/track1_open/
src/competition/
因此本发布版明确不把“冻结预测序列化”冒充模型复现,也不声称无训练产物时可 逐字节恢复线上 ZIP。可保证的是:
详细 DAG、输入输出和资源说明见 REPRODUCIBILITY.md。
本地指标使用正样本的 optimistic tied rank:
rank = 1 + count(score_j > score_positive) MRR = mean(1 / rank)
独立打包和验证:
python scripts/build_submission.py \ --dataset1 outputs/dataset1_scores.npy \ --dataset2 outputs/dataset2_scores.npy \ --output outputs/result.zip python scripts/validate_submission.py \ --package outputs/result.zip \ --output outputs/result.validation.json
提交或发布前:
python -m pytest -q python tools/runtime_compat_audit.py python tools/release_audit.py
核心可学习表示与排序系统基于 Jittor:
LightGBM 只用于 Dataset1 的稀疏 post-ranking utility calibrator:输入是本队 构造的 129 维时间安全特征,不接触外部数据或 Test 标签,默认 KEEP,最多对 5% 查询执行一次候选交换。其训练代码、特征和固定参数均公开。
若组委会要求“所有学习模块均必须由 Jittor 实现”,LightGBM 的合规性需要由 组委会书面确认;当前材料不隐瞒该边界,也不把它描述为 Jittor 模型。
1.4104167109954262
+0.0023099699
+0.0038837660 / +0.0015060891 / +0.0026862876
P(delta > 0) = 0.9992
configs/ 固定训练与提交配置 data/ 官方数据说明(不含数据) docs/ 架构、复现、结果和审计文档 scripts/ 环境、训练、推理、打包入口 src/track1_open/ 清晰的模型、合同与集成实现 src/competition/ 最终成绩所用 append-only 生产代码 tests/ 单元与集成合同测试 tools/ 运行时兼容与发布静态审计 outputs/ 本地日志、权重和结果(Git 忽略)
src/competition/artifacts_v16*/code/ 与 src/competition/artifacts_v17/code/ 的名称源自追加式实验目录,但发布内容 仅为生产链仍依赖的 Python 合同源码;该路径下的 checkpoint、数组、缓存和 日志始终由 .gitignore 与 release audit 双重排除。
src/competition/artifacts_v16*/code/
src/competition/artifacts_v17/code/
.gitignore
代码采用 MIT License。第三方依赖、许可证和使用边界见 THIRD_PARTY.md 与 NOTICE。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
jittor-BJTU_LTX-Track1A
北京交通大学 BJTU_LTX 战队参加计图 Track1 的开源实现。代码只使用组委会 提供的
data_A,不使用外部比赛数据、预训练权重、Test 标签、伪标签或 Test 自适应策略。当前公开方案对应线上成绩 1.4104167109954262:
线上提交包未纳入 Git,其 SHA256 为
b692a3b265113fd1bbebfb3a72766b8bfb1b6b67f2706c989f34f5410ae6a049。 成员 SHA、固定参数和 OOF 指标见configs/v25_sota.json与 结果说明。代码审核冻结版本为 release ref **
a-board-audit-v25**。审核 ZIP 根目录的SOURCE_REVISION.json记录该 ref 的完整 commit SHA;code/由该 commit 直接导出并进行逐文件校验。提交材料前必须确认 GitHub 与 GitLink 的master均解析到该 SHA;GitHub 另保留同名冻结分支。方法概览
edge_time < t,通过乘积、差值、余弦和双线性交互进行 100 候选排序; 三个固定种子融合后,V22.1 反事实策略只修正少量高置信查询。0.8 × full-list CE + 0.2 × hardest BPR。最终由四个历史 ranker 与两个独立 embedding/ranker 成员做 query-zscore 集成,再与冻结 anchor 做 duplicate-safe rank-percentile 融合。完整结构见 ARCHITECTURE.md。
1. 环境安装
审核目标环境与组委会要求一致:
cuda_arch=86也可使用 Python 3.10 虚拟环境:
check_environment.py --strict会逐项检查 Python、所有精确固定的依赖、cuda_arch和nvcc12.4;任何不一致都会返回非零退出码。线上 SOTA 的原始实验 lineage 使用较新的 Python/Jittor 和较旧 CUDA toolkit。 该信息仅保留在配置的
original_training_environment字段中;公开审核入口已 移除旧版本运行时阻断,并以官方审核环境为唯一支持目标。2. 数据准备
仓库不分发官方原始数据。目录必须为:
先检查文件、schema、候选宽度和输入 SHA:
3. 训练与复现
公开版本提供两条互补且真实可运行的闭环。二者都只读取官方 CSV,不要求 私有 checkpoint、冻结 score array 或历史缓存。
3.1 生产组件训练审核(推荐审核入口)
这条路径在真实官方行上依次执行:
TemporalDualEncoderRanker的真实 forward、loss、backward;TemporalPoolingRanker的 full-list CE + hardest-BPR;第一次运行会编译 Jittor CUDA 算子。实测 Python 3.10 + Jittor 1.3.10.0 真实训练链路报告见
PY310_TRAINING_PIPELINE_REPORT.json。3.2 从官方数据生成完整行数参考提交
该路径从四个官方 CSV 训练两个 Jittor BipartiteBPR 模型,对全部 Test 行推理, 并生成 submission-shaped ZIP:
等价兼容命令:
参考提交用于证明“官方 CSV → Jittor 训练 → 全量推理 → ZIP → validator” 闭环,模型规模小于榜单六成员系统,因此不宣称复现 1.4104167109954262。
3.3 V25 榜单方案的复现边界
最终算法的模型类、损失、时间切分、特征、固定种子、集成和历史生产入口均保留 在
src/track1_open/、src/competition/与配置中。按官方“不提交大权重和 训练产物”规范,本仓库和轻量审核 ZIP 不携带 checkpoint、embedding、缓存、 最终 score array 或参考 submission。因此本发布版明确不把“冻结预测序列化”冒充模型复现,也不声称无训练产物时可 逐字节恢复线上 ZIP。可保证的是:
详细 DAG、输入输出和资源说明见 REPRODUCIBILITY.md。
4. 评测、推理与打包
本地指标使用正样本的 optimistic tied rank:
独立打包和验证:
提交或发布前:
5. Jittor 实现边界
核心可学习表示与排序系统基于 Jittor:
LightGBM 只用于 Dataset1 的稀疏 post-ranking utility calibrator:输入是本队 构造的 129 维时间安全特征,不接触外部数据或 Test 标签,默认 KEEP,最多对 5% 查询执行一次候选交换。其训练代码、特征和固定参数均公开。
若组委会要求“所有学习模块均必须由 Jittor 实现”,LightGBM 的合规性需要由 组委会书面确认;当前材料不隐瞒该边界,也不把它描述为 Jittor 模型。
6. 结果说明
1.4104167109954262+0.0023099699+0.0038837660 / +0.0015060891 / +0.0026862876P(delta > 0) = 0.99927. 仓库结构
src/competition/artifacts_v16*/code/与src/competition/artifacts_v17/code/的名称源自追加式实验目录,但发布内容 仅为生产链仍依赖的 Python 合同源码;该路径下的 checkpoint、数组、缓存和 日志始终由.gitignore与 release audit 双重排除。8. 开源与引用
代码采用 MIT License。第三方依赖、许可证和使用边界见 THIRD_PARTY.md 与 NOTICE。