如何快速上手ULTRA:知识图谱链路预测环境安装与零样本推理完整教程(Conda/Pip双方案)
【免费下载链接】ULTRAA foundation model for knowledge graph reasoning项目地址: https://gitcode.com/gh_mirrors/ultra/ULTRA
ULTRA 是一款面向知识图谱推理(Knowledge Graph Reasoning)的基础模型(Foundation Model),单个预训练模型即可在任意多关系图上完成零样本链路预测,无需针对每个图谱单独训练。本文将带你用 10 分钟完成环境安装(Conda / Pip 双方案)、选对预训练检查点,并用一条命令跑通零样本推理。
一、先搞懂:ULTRA 是什么?
- 统一、可学习、可迁移:ULTRA 不学习特定图谱的实体/关系嵌入,而是基于关系间交互获得「相对关系表示」,因此可以零样本迁移到任何全新图谱。
- 零样本即 SOTA 级:在 50+ 知识图谱上的平均表现中,零样本推理模式即可超过许多在单一图谱上专门训练的 SOTA 模型。
- 预训练-微调范式:既可以加载检查点直接推理,也可以在你的图谱上继续微调,灵活度极高。
核心模型实现位于 ultra/models.py,底层采用改造版的 NBFNet 消息传递网络(见 ultra/base_nbfnet.py)。
二、环境安装:Conda 与 Pip 双方案
2.1 环境要求一览
| 依赖项 | 推荐版本 |
|---|---|
| Python | 3.9 |
| PyTorch | 2.1+ |
| PyTorch Geometric (PyG) | 2.4+ |
| CUDA | 11.8+(GPU 用户;Mac 可省略) |
完整依赖清单可参考 requirements.txt。
2.2 克隆仓库
git clone https://gitcode.com/gh_mirrors/ultra/ULTRA cd ULTRA2.3 方案一:Conda 快速安装(推荐)
conda install pytorch=2.1.0 pytorch-cuda=11.8 cudatoolkit=11.8 pytorch-scatter=2.1.2 pyg=2.4.0 -c pytorch -c nvidia -c pyg -c conda-forge conda install ninja easydict pyyaml -c conda-forge2.4 方案二:Pip 安装完整命令
pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cu118 pip install torch-scatter==2.1.2 torch-sparse==0.6.18 torch-geometric==2.4.0 -f https://data.pyg.org/whl/torch-2.1.0+cu118.html pip install ninja easydict pyyaml⚙️提示:项目内置自定义
rspmm关系消息传递算子(源码见 ultra/rspmm/),首次运行时会自动编译并缓存。GPU 编译需要 CUDA 11.8+ 工具链中的nvcc,建议设置CUDA_HOME(如export CUDA_HOME=/usr/local/cuda-11.8/)以避免编译报错。
三、选择预训练检查点:零样本推理的关键
仓库ckpts目录自带 4 个官方预训练检查点,开箱即用:
| 检查点 | 说明 |
|---|---|
| ckpts/ultra_3g.pth | 在 FB15k237 / WN18RR / CoDExMedium 上预训练 80 万步 |
| ckpts/ultra_4g.pth | 在 3 图基础上加入 NELL995,通用场景首选 |
| ckpts/ultra_50g.pth | 在 50 个图上预训练,大图零样本推理首选 |
| ckpts/ultraquery.pth | 面向复杂逻辑查询(UltraQuery)的专用检查点 |
💡 检查点非常小巧(每个仅 2 MB),加载秒级完成。在较大图谱上做链路预测时,优先选用ultra_50g.pth。
四、零样本链路预测:一条命令跑通
4.1 核心参数速览
推理入口为 script/run.py,零样本推理 = 加载检查点 +--epochs 0:
-c:yaml 配置文件(inductive / transductive 场景各有一份)--dataset:数据集名称(内置 57 个知识图谱,首次运行自动下载)--version:inductive 数据集的版本号,如v1--epochs 0:零样本推理模式(设为大于 0 即变为微调)--gpus:null表示 CPU 运行,[0]表示单卡 GPU--ckpt:检查点的完整路径
4.2 示例一:CPU 运行归纳式(Inductive)零样本推理
python script/run.py -c config/inductive/inference.yaml \ --dataset FB15k237Inductive --version v1 \ --epochs 0 --bpe null --gpus null \ --ckpt /path/to/ULTRA/ckpts/ultra_4g.pth4.3 示例二:GPU 运行传递式(Transductive)零样本推理
python script/run.py -c config/transductive/inference.yaml \ --dataset CoDExSmall --epochs 0 --bpe null \ --gpus [0] --ckpt /path/to/ULTRA/ckpts/ultra_4g.pth运行结束后,日志会输出验证集与测试集的mrr、hits@1、hits@10等链路预测指标。配置细节可分别查看 config/inductive/inference.yaml 和 config/transductive/inference.yaml。
⚠️注意:所有数据集在首次运行时自动下载。如果计划多卡训练,建议先用单卡跑一次以提前触发下载,避免竞态问题。
五、进阶玩法:微调、批量评测与 UltraQuery 逻辑查询
- 微调:把
--epochs改为大于 0 即可在目标图谱上微调,例如--epochs 20 --bpe 1000。 - 批量评测:script/run_many.py 支持一次指定多个数据集顺序评测,并自动生成 CSV 结果文件:
python script/run_many.py -c /path/to/config/inductive/inference.yaml --gpus [0] \ --ckpt /path/to/ckpts/ultra_4g.pth \ -d FB15k237Inductive:v1,FB15k237Inductive:v2,FB15k237Inductive:v3,FB15k237Inductive:v4- 复杂逻辑查询(UltraQuery):借助 script/run_query.py 在任意知识图谱上执行多跳逻辑查询,使用
ultraquery.pth检查点时设置--threshold 0.0(实现见 ultra/ultraquery.py):
python script/run_query.py -c config/ultraquery/transductive.yaml \ --dataset FB15k237LogicalQuery --epochs 0 --bpe null \ --gpus [0] --bs 32 --threshold 0.0 \ --ultra_ckpt null --qe_ckpt /path/to/ckpts/ultraquery.pth- 预训练自己的模型:用 script/pretrain.py 配合 config/transductive/pretrain_3g.yaml 在多图谱混合上训练。
- 接入自己的 KG:继承 ultra/datasets.py 中的
TransductiveDataset/InductiveDataset基类并填入数据文件链接,即可立即对其做零样本推理或微调。
六、常见问题快速排查
| 问题 | 解决方案 |
|---|---|
rspmm编译失败 | 确认已安装 CUDA 11.8+ 工具链(含nvcc)并正确设置CUDA_HOME |
| 无 GPU 或 Mac 环境 | 跳过 CUDA 相关依赖,运行时设置--gpus null |
| 大图零样本推理效果一般 | 换用ultra_50g.pth检查点 |
| 用原版检查点跑 UltraQuery 结果异常 | 将--threshold调到 0.8 或更高 |
| GPU 显存不足(OOM) | 调小 yaml 配置中的train.batch_size(见 config/inductive/inference.yaml) |
小结
按「克隆仓库 → 二选一安装环境 → 选对检查点 → 一条命令推理」的路径,10 分钟即可在任意知识图谱上体验 ULTRA 的零样本链路预测能力;需要更强效果时,再按需微调即可。
【免费下载链接】ULTRAA foundation model for knowledge graph reasoning项目地址: https://gitcode.com/gh_mirrors/ultra/ULTRA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考