All Projects → allegro → Allrank

allegro / Allrank

Licence: apache-2.0
allRank is a framework for training learning-to-rank neural models based on PyTorch.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Allrank

linformer
Implementation of Linformer for Pytorch
Stars: ✭ 119 (-55.76%)
Mutual labels:  transformer
galerkin-transformer
[NeurIPS 2021] Galerkin Transformer: a linear attention without softmax
Stars: ✭ 111 (-58.74%)
Mutual labels:  transformer
bert in a flask
A dockerized flask API, serving ALBERT and BERT predictions using TensorFlow 2.0.
Stars: ✭ 32 (-88.1%)
Mutual labels:  transformer
text-generation-transformer
text generation based on transformer
Stars: ✭ 36 (-86.62%)
Mutual labels:  transformer
TextPruner
A PyTorch-based model pruning toolkit for pre-trained language models
Stars: ✭ 94 (-65.06%)
Mutual labels:  transformer
Swin-Transformer-Tensorflow
Unofficial implementation of "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows" (https://arxiv.org/abs/2103.14030)
Stars: ✭ 45 (-83.27%)
Mutual labels:  transformer
laravel-mutate
Mutate Laravel attributes
Stars: ✭ 13 (-95.17%)
Mutual labels:  transformer
Nlp Interview Notes
本项目是作者们根据个人面试和经验总结出的自然语言处理(NLP)面试准备的学习笔记与资料,该资料目前包含 自然语言处理各领域的 面试题积累。
Stars: ✭ 207 (-23.05%)
Mutual labels:  transformer
SIGIR2021 Conure
One Person, One Model, One World: Learning Continual User Representation without Forgetting
Stars: ✭ 23 (-91.45%)
Mutual labels:  transformer
AITQA
resources for the IBM Airlines Table-Question-Answering Benchmark
Stars: ✭ 12 (-95.54%)
Mutual labels:  transformer
saint
The official PyTorch implementation of recent paper - SAINT: Improved Neural Networks for Tabular Data via Row Attention and Contrastive Pre-Training
Stars: ✭ 209 (-22.3%)
Mutual labels:  transformer
bert-as-a-service TFX
End-to-end pipeline with TFX to train and deploy a BERT model for sentiment analysis.
Stars: ✭ 32 (-88.1%)
Mutual labels:  transformer
uformer-pytorch
Implementation of Uformer, Attention-based Unet, in Pytorch
Stars: ✭ 54 (-79.93%)
Mutual labels:  transformer
GeeseDB
Graph Engine for Exploration and Search
Stars: ✭ 14 (-94.8%)
Mutual labels:  information-retrieval
ai-distillery
Automatically modelling and distilling knowledge within AI. In other words, summarising the AI research firehose.
Stars: ✭ 20 (-92.57%)
Mutual labels:  information-retrieval
SolrConfigExamples
Examples of Solr configuration entries for Solr plugins and Conceptual Search\Semantic Search from Simon Hughes Dice.com
Stars: ✭ 26 (-90.33%)
Mutual labels:  information-retrieval
SwinIR
SwinIR: Image Restoration Using Swin Transformer (official repository)
Stars: ✭ 1,260 (+368.4%)
Mutual labels:  transformer
Bitmagic
BitMagic Library
Stars: ✭ 263 (-2.23%)
Mutual labels:  information-retrieval
ai challenger 2018 sentiment analysis
Fine-grained Sentiment Analysis of User Reviews --- AI CHALLENGER 2018
Stars: ✭ 16 (-94.05%)
Mutual labels:  transformer
svgs2fonts
npm-svgs2fonts。svg图标转字体图标库(svgs -> svg,ttf,eot,woff,woff2),nodejs。
Stars: ✭ 29 (-89.22%)
Mutual labels:  transformer

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 a binary and graded relevance)
  2. ListMLE
  3. RankNet
  4. Ordinal loss
  5. LambdaRank
  6. LambdaLoss
  7. ApproxNDCG
  8. RMSE

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. 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}
}

License

Apache 2 License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].