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許可證