Allrank是一个基于Pytorch的框架,用于培训神经学习到秩(LTR)模型,其实现:
Allrank提供了一种简单而灵活的方法,可以尝试各种LTR神经网络模型和损失功能。添加自定义损失并配置模型和训练过程很容易。我们希望Allrank能够促进神经LTR及其工业应用的研究。
为了帮助您入门,我们提供一个run_example.sh脚本,该脚本以libsvm格式生成虚拟排名数据,并使用提供的示例config.json config文件在数据上训练变压器模型。运行脚本后,虚拟数据可以在dummy_data目录中找到,并在test_run目录中找到实验结果。要运行该示例,需要Docker。
由于GPU的火炬二进制文件不同,CPU和GPU版本在CPU上不起作用,因此必须选择并构建适当的Docker Image版本。
为此,将gpu或cpu作为arch_version build-arg中的
docker build --build-arg arch_version=${ARCH_VERSION}
调用run_example.sh时,您可以通过第一个CMD行参数选择合适的版本
run_example.sh gpu ...
如果未指定,则cpu为默认值。
要训练自己的模型,请在config.json文件中配置您的实验并运行
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
培训过程的所有超参数:IE模型定义,数据位置,丢失和指标,训练超参数等由config.json文件控制。我们提供一个模板文件config_template.json其中解释了受支持的属性,其含义和可能的值。请注意,遵循MSLR-WEB30K大会,您的LIBSVM文件和培训数据应命名为train.txt 。您可以在配置中指定验证数据集(例如有效或测试)的名称。结果将保存在路径<job_dir>/results/<run_id>
Allrank支持Google Cloud Storage,作为数据和作业结果的场所。
要试验自己的自定义损失,您需要实现一个功能,该功能将两个张量(模型预测和地面真相)作为输入,并将其放入losses包中,以确保其在软件包级别上公开。要在培训中使用它,只需将您的函数的名称(和ARGS)传递在配置文件中正确位置的功能:
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
要应用单击模型,您需要首先对Allrank型号进行培训。接下来,运行:
python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process eg train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
该模型将用于对配置中指定的数据集进行排名。接下来 - 将应用配置中配置的单击模型,并以libsvm格式在<job_dir>/results/<run_id>下编写生成的点击数据集。然后,可以将目标目录的路径用作另一个Allrank模型训练的输入。
您应该运行scripts/ci.sh以验证代码通过样式指南和单元测试。
该框架旨在支持研究项目环境感知学习,以自我注意力排名。如果您在研究中使用Allrank,请引用:
@article{Pobrotyn2020ContextAwareLT,
title={Context-Aware Learning to Rank with Self-Attention},
author={Przemyslaw Pobrotyn and Tomasz Bartczak and Mikolaj Synowiec and Radoslaw Bialobrzeski and Jaroslaw Bojar},
journal={ArXiv},
year={2020},
volume={abs/2005.10084}
}
此外,如果您使用NeuralNDCG损失函数,请引用相应的工作,NeuralNDCG:直接优化排序指标,通过可区分的分类:
@article{Pobrotyn2021NeuralNDCG,
title={NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting},
author={Przemyslaw Pobrotyn and Radoslaw Bialobrzeski},
journal={ArXiv},
year={2021},
volume={abs/2102.07831}
}
Apache 2许可证