docs(README): add team name and repo links for open source requirement
第六届计图人工智能挑战赛 · 赛道一:基于图学习的动态推荐任务
项目目标是在给定历史时序交互 (src, dst, time) 和测试候选集合 (src, time, c1...c100) 的条件下,为每个候选目标输出可提交的交互概率分布。
(src, dst, time)
(src, time, c1...c100)
当前主线模型是 hybrid:以时间因果切分训练融合器,将强统计记忆、候选先验、结构共现、 Two-Tower 表示、图协同过滤和序列偏好组合为候选级特征,再用 Jittor MLP 在每行 100 个候选内 做 softmax 重排序。
hybrid
当前工作区已验证的 A 榜提交包:
result/hybrid_perfcheck_d1d2_50k20k_mrr_r100_ch32_seed60/result.zip
线上反馈分数:
1.2044345219596662
该包为全量 dataset1 + dataset2 重新生成结果,不使用 --dataset 或 --limit-rows:
dataset1
dataset2
--dataset
--limit-rows
dataset1 -> result/hybrid_perfcheck_d1d2_50k20k_mrr_r100_ch32_seed60/csv/dataset1.csv dataset2 -> result/hybrid_perfcheck_d1d2_50k20k_mrr_r100_ch32_seed60/csv/dataset2.csv
提交时只上传 result.zip。不要上传 data/、result/ 目录或中间日志。
result.zip
data/
result/
程序按数据集目录发现输入文件:
data/ dataset1/ train.csv test.csv dataset2/ train.csv test.csv
train.csv 需要包含 src,dst,time。test.csv 需要包含 src,time,c1,...,c100。
train.csv
src,dst,time
test.csv
src,time,c1,...,c100
安装依赖:
uv sync
生成完整提交:
uv run jgrec-build
快速冒烟:
uv run jgrec-build --limit-rows 2 --max-fit-events 512 --max-train-events 32 --max-val-events 16 --num-negatives 3 --epochs 1 --disable-gnn --disable-seq
输出结构:
result/<run_id>/ csv/ dataset1.csv dataset2.csv result.zip memory.log
result.zip 根目录直接包含 dataset1.csv、dataset2.csv,不包含额外目录层级。
dataset1.csv
dataset2.csv
当前本地 8G 显存、24G 内存环境下,建议优先单独重跑 dataset2,确认改动收益后再与稳定的 dataset1.csv 拼包。完整命令和提交检查表见 提交说明。
核心思路:
--max-fit-events 0
--max-train-events
--max-val-events
--selection-metric mrr
ap
--test-candidate-negative-ratio
structure
two_tower
candidate_prior
hybrid 特征顺序为:
stats + candidate_prior + structure + two_tower + graph + sequence
主要模块:
stats.py
candidate_prior.py
structure.py
two_tower.py
gnn.py
sequence.py
fusion.py
自动策略不会读取数据集名称,而是根据训练 holdout 和测试候选分布将数据画像为 repeat_memory、balanced 或 new_link_cold,再自动调整 test-candidate 负采样比例。
repeat_memory
balanced
new_link_cold
uv run python -m compileall -q src scripts tests uv run --group dev pytest uv run --group dev ruff check . uv run zensical build
WSL/Jittor 本地环境可以直接用项目源码运行:
export PYTHONPATH=src /mnt/d/work/jittor-local/env/bin/python -m jgrec.cli --help
[参赛队伍] 第六届计图jittor人工智能挑战赛
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
jittor-GPNUT1-JGRec
第六届计图人工智能挑战赛 · 赛道一:基于图学习的动态推荐任务
项目目标是在给定历史时序交互
(src, dst, time)和测试候选集合(src, time, c1...c100)的条件下,为每个候选目标输出可提交的交互概率分布。当前主线模型是
hybrid:以时间因果切分训练融合器,将强统计记忆、候选先验、结构共现、 Two-Tower 表示、图协同过滤和序列偏好组合为候选级特征,再用 Jittor MLP 在每行 100 个候选内 做 softmax 重排序。当前提交候选
当前工作区已验证的 A 榜提交包:
线上反馈分数:
该包为全量
dataset1+dataset2重新生成结果,不使用--dataset或--limit-rows:提交时只上传
result.zip。不要上传data/、result/目录或中间日志。数据目录
程序按数据集目录发现输入文件:
train.csv需要包含src,dst,time。test.csv需要包含src,time,c1,...,c100。快速运行
安装依赖:
生成完整提交:
快速冒烟:
输出结构:
result.zip根目录直接包含dataset1.csv、dataset2.csv,不包含额外目录层级。冲分运行建议
当前本地 8G 显存、24G 内存环境下,建议优先单独重跑
dataset2,确认改动收益后再与稳定的dataset1.csv拼包。完整命令和提交检查表见 提交说明。核心思路:
--max-fit-events 0保持最终 encoder 使用完整训练历史。--max-train-events、--max-val-events可以让融合器看到更多监督事件,但会增加训练时间。--selection-metric mrr可用于与默认ap对比,因为线上评分是 MRR。--test-candidate-negative-ratio用于校准冷启动/新链接数据的负采样分布。structure、two_tower、candidate_prior,这些是当前 dataset2 提升的关键特征。模型摘要
hybrid特征顺序为:主要模块:
stats.py:历史重复、近期命中、目标热度、源节点活跃度等因果统计特征。candidate_prior.py:只使用test.csv候选出现频次和行内 rank,不使用标签,用于补足未见目标节点信号。structure.py:共同邻居、Jaccard、共现、转移等结构特征。two_tower.py:Jittor 双塔候选表示,输出 dot/cosine 特征。gnn.py:XSimGCL/LightGCN 图协同过滤塔。sequence.py:SASRec/GRU 序列偏好塔。fusion.py:Jittor MLP 融合器,按验证集在多个特征 mask 中选择最终特征组。自动策略不会读取数据集名称,而是根据训练 holdout 和测试候选分布将数据画像为
repeat_memory、balanced或new_link_cold,再自动调整 test-candidate 负采样比例。开发检查
WSL/Jittor 本地环境可以直接用项目源码运行:
文档入口