diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-29 13:21:55 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-29 13:21:55 +0000 |
commit | 7020d631e4a9044e0a9c39007cf5bb2092d53c0b (patch) | |
tree | d190161880079084d5fe29aaf261927bbcd982d5 | |
parent | ee4c626f9e9116a77ddaa6dcf9ac8836dab2356c (diff) |
automatic import of python-allrank
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-allrank.spec | 404 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 406 insertions, 0 deletions
@@ -0,0 +1 @@ +/allRank-1.4.3.tar.gz diff --git a/python-allrank.spec b/python-allrank.spec new file mode 100644 index 0000000..03c02b6 --- /dev/null +++ b/python-allrank.spec @@ -0,0 +1,404 @@ +%global _empty_manifest_terminate_build 0 +Name: python-allRank +Version: 1.4.3 +Release: 1 +Summary: allRank is a framework for training learning-to-rank neural models +License: Apache 2 +URL: https://github.com/allegro/allRank +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/94/f0/d24e9be9d0c9ab9496739b71eb1db57da430c12b89633b2dd76a391cef29/allRank-1.4.3.tar.gz +BuildArch: noarch + +Requires: python3-torch +Requires: python3-torchvision +Requires: python3-scikit-learn +Requires: python3-pandas +Requires: python3-numpy +Requires: python3-scipy +Requires: python3-attrs +Requires: python3-flatten-dict +Requires: python3-tensorboardX +Requires: python3-gcsfs +Requires: python3-google-auth + +%description +# allRank : Learning to Rank in PyTorch + +## About + +allRank is a PyTorch-based framework for training neural Learning-to-Rank (LTR) models, featuring implementations of: +* common pointwise, pairwise and listwise loss functions +* fully connected and Transformer-like scoring functions +* commonly used evaluation metrics like Normalized Discounted Cumulative Gain (NDCG) and Mean Reciprocal Rank (MRR) +* click-models for experiments on simulated click-through data + +### Motivation + +allRank provides an easy and flexible way to experiment with various LTR neural network models and loss functions. +It is easy to add a custom loss, and to configure the model and the training procedure. +We hope that allRank will facilitate both research in neural LTR and its industrial applications. + +## Features + +### Implemented loss functions: + 1. ListNet (for binary and graded relevance) + 2. ListMLE + 3. RankNet + 4. Ordinal loss + 5. LambdaRank + 6. LambdaLoss + 7. ApproxNDCG + 8. RMSE + 9. NeuralNDCG (introduced in https://arxiv.org/pdf/2102.07831) + +### Getting started guide + +To help you get started, we provide a ```run_example.sh``` script which generates dummy ranking data in libsvm format and trains + a Transformer model on the data using provided example ```config.json``` config file. Once you run the script, the dummy data can be found in `dummy_data` directory + and the results of the experiment in `test_run` directory. To run the example, Docker is required. + +### Configuring your model & training + +To train your own model, configure your experiment in ```config.json``` file and run + +```python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +All the hyperparameters of the training procedure: i.e. model defintion, data location, loss and metrics used, training hyperparametrs etc. are controlled +by the ```config.json``` file. We provide a template file ```config_template.json``` where supported attributes, their meaning and possible values are explained. + Note that following MSLR-WEB30K convention, your libsvm file with training data should be named `train.txt`. You can specify the name of the validation dataset + (eg. valid or test) in the config. Results will be saved under the path ```<job_dir>/results/<run_id>``` + +Google Cloud Storage is supported in allRank as a place for data and job results. + + +### Implementing custom loss functions + +To experiment with your own custom loss, you need to implement a function that takes two tensors (model prediction and ground truth) as input + and put it in the `losses` package, making sure it is exposed on a package level. +To use it in training, simply pass the name (and args, if your loss method has some hyperparameters) of your function in the correct place in the config file: + +``` +"loss": { + "name": "yourLoss", + "args": { + "arg1": val1, + "arg2: val2 + } + } +``` + +### Applying click-model + +To apply a click model you need to first have an allRank model trained. +Next, run: + +```python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process e.g. train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +The model will be used to rank all slates from the dataset specified in config. Next - a click model configured in config will be applied and the resulting click-through dataset will be written under ```<job_dir>/results/<run_id>``` in a libSVM format. +The path to the results directory may then be used as an input for another allRank model training. + +## Continuous integration + +You should run `scripts/ci.sh` to verify that code passes style guidelines and unit tests. + +## Research + +This framework was developed to support the research project [Context-Aware Learning to Rank with Self-Attention](https://arxiv.org/abs/2005.10084). If you use allRank in your research, please cite: +``` +@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} +} +``` +Additionally, if you use the NeuralNDCG loss function, please cite the corresponding work, [NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting](https://arxiv.org/abs/2102.07831): +``` +@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} +} +``` + +## License + +Apache 2 License + + + + +%package -n python3-allRank +Summary: allRank is a framework for training learning-to-rank neural models +Provides: python-allRank +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-allRank +# allRank : Learning to Rank in PyTorch + +## About + +allRank is a PyTorch-based framework for training neural Learning-to-Rank (LTR) models, featuring implementations of: +* common pointwise, pairwise and listwise loss functions +* fully connected and Transformer-like scoring functions +* commonly used evaluation metrics like Normalized Discounted Cumulative Gain (NDCG) and Mean Reciprocal Rank (MRR) +* click-models for experiments on simulated click-through data + +### Motivation + +allRank provides an easy and flexible way to experiment with various LTR neural network models and loss functions. +It is easy to add a custom loss, and to configure the model and the training procedure. +We hope that allRank will facilitate both research in neural LTR and its industrial applications. + +## Features + +### Implemented loss functions: + 1. ListNet (for binary and graded relevance) + 2. ListMLE + 3. RankNet + 4. Ordinal loss + 5. LambdaRank + 6. LambdaLoss + 7. ApproxNDCG + 8. RMSE + 9. NeuralNDCG (introduced in https://arxiv.org/pdf/2102.07831) + +### Getting started guide + +To help you get started, we provide a ```run_example.sh``` script which generates dummy ranking data in libsvm format and trains + a Transformer model on the data using provided example ```config.json``` config file. Once you run the script, the dummy data can be found in `dummy_data` directory + and the results of the experiment in `test_run` directory. To run the example, Docker is required. + +### Configuring your model & training + +To train your own model, configure your experiment in ```config.json``` file and run + +```python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +All the hyperparameters of the training procedure: i.e. model defintion, data location, loss and metrics used, training hyperparametrs etc. are controlled +by the ```config.json``` file. We provide a template file ```config_template.json``` where supported attributes, their meaning and possible values are explained. + Note that following MSLR-WEB30K convention, your libsvm file with training data should be named `train.txt`. You can specify the name of the validation dataset + (eg. valid or test) in the config. Results will be saved under the path ```<job_dir>/results/<run_id>``` + +Google Cloud Storage is supported in allRank as a place for data and job results. + + +### Implementing custom loss functions + +To experiment with your own custom loss, you need to implement a function that takes two tensors (model prediction and ground truth) as input + and put it in the `losses` package, making sure it is exposed on a package level. +To use it in training, simply pass the name (and args, if your loss method has some hyperparameters) of your function in the correct place in the config file: + +``` +"loss": { + "name": "yourLoss", + "args": { + "arg1": val1, + "arg2: val2 + } + } +``` + +### Applying click-model + +To apply a click model you need to first have an allRank model trained. +Next, run: + +```python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process e.g. train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +The model will be used to rank all slates from the dataset specified in config. Next - a click model configured in config will be applied and the resulting click-through dataset will be written under ```<job_dir>/results/<run_id>``` in a libSVM format. +The path to the results directory may then be used as an input for another allRank model training. + +## Continuous integration + +You should run `scripts/ci.sh` to verify that code passes style guidelines and unit tests. + +## Research + +This framework was developed to support the research project [Context-Aware Learning to Rank with Self-Attention](https://arxiv.org/abs/2005.10084). If you use allRank in your research, please cite: +``` +@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} +} +``` +Additionally, if you use the NeuralNDCG loss function, please cite the corresponding work, [NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting](https://arxiv.org/abs/2102.07831): +``` +@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} +} +``` + +## License + +Apache 2 License + + + + +%package help +Summary: Development documents and examples for allRank +Provides: python3-allRank-doc +%description help +# allRank : Learning to Rank in PyTorch + +## About + +allRank is a PyTorch-based framework for training neural Learning-to-Rank (LTR) models, featuring implementations of: +* common pointwise, pairwise and listwise loss functions +* fully connected and Transformer-like scoring functions +* commonly used evaluation metrics like Normalized Discounted Cumulative Gain (NDCG) and Mean Reciprocal Rank (MRR) +* click-models for experiments on simulated click-through data + +### Motivation + +allRank provides an easy and flexible way to experiment with various LTR neural network models and loss functions. +It is easy to add a custom loss, and to configure the model and the training procedure. +We hope that allRank will facilitate both research in neural LTR and its industrial applications. + +## Features + +### Implemented loss functions: + 1. ListNet (for binary and graded relevance) + 2. ListMLE + 3. RankNet + 4. Ordinal loss + 5. LambdaRank + 6. LambdaLoss + 7. ApproxNDCG + 8. RMSE + 9. NeuralNDCG (introduced in https://arxiv.org/pdf/2102.07831) + +### Getting started guide + +To help you get started, we provide a ```run_example.sh``` script which generates dummy ranking data in libsvm format and trains + a Transformer model on the data using provided example ```config.json``` config file. Once you run the script, the dummy data can be found in `dummy_data` directory + and the results of the experiment in `test_run` directory. To run the example, Docker is required. + +### Configuring your model & training + +To train your own model, configure your experiment in ```config.json``` file and run + +```python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +All the hyperparameters of the training procedure: i.e. model defintion, data location, loss and metrics used, training hyperparametrs etc. are controlled +by the ```config.json``` file. We provide a template file ```config_template.json``` where supported attributes, their meaning and possible values are explained. + Note that following MSLR-WEB30K convention, your libsvm file with training data should be named `train.txt`. You can specify the name of the validation dataset + (eg. valid or test) in the config. Results will be saved under the path ```<job_dir>/results/<run_id>``` + +Google Cloud Storage is supported in allRank as a place for data and job results. + + +### Implementing custom loss functions + +To experiment with your own custom loss, you need to implement a function that takes two tensors (model prediction and ground truth) as input + and put it in the `losses` package, making sure it is exposed on a package level. +To use it in training, simply pass the name (and args, if your loss method has some hyperparameters) of your function in the correct place in the config file: + +``` +"loss": { + "name": "yourLoss", + "args": { + "arg1": val1, + "arg2: val2 + } + } +``` + +### Applying click-model + +To apply a click model you need to first have an allRank model trained. +Next, run: + +```python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process e.g. train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>``` + +The model will be used to rank all slates from the dataset specified in config. Next - a click model configured in config will be applied and the resulting click-through dataset will be written under ```<job_dir>/results/<run_id>``` in a libSVM format. +The path to the results directory may then be used as an input for another allRank model training. + +## Continuous integration + +You should run `scripts/ci.sh` to verify that code passes style guidelines and unit tests. + +## Research + +This framework was developed to support the research project [Context-Aware Learning to Rank with Self-Attention](https://arxiv.org/abs/2005.10084). If you use allRank in your research, please cite: +``` +@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} +} +``` +Additionally, if you use the NeuralNDCG loss function, please cite the corresponding work, [NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting](https://arxiv.org/abs/2102.07831): +``` +@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} +} +``` + +## License + +Apache 2 License + + + + +%prep +%autosetup -n allRank-1.4.3 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-allRank -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 1.4.3-1 +- Package Spec generated @@ -0,0 +1 @@ +9e93da934c235aacd1d4c1dea4c85baf allRank-1.4.3.tar.gz |