Allrank est un cadre basé sur Pytorch pour la formation des modèles d'apprentissage neuronal (LTR), avec des implémentations de:
AllRank fournit un moyen facile et flexible d'expérimenter divers modèles de réseau neuronal LTR et fonctions de perte. Il est facile d'ajouter une perte personnalisée et de configurer le modèle et la procédure de formation. Nous espérons que Allrank facilitera à la fois la recherche sur le LTR neuronal et ses applications industrielles.
Pour vous aider à démarrer, nous fournissons un script run_example.sh qui génère des données de classement factice au format libsvm et forme un modèle de transformateur sur les données en utilisant un exemple de configuration de config.json . Une fois que vous avez exécuté le script, les données factices peuvent être trouvées dans le répertoire dummy_data et les résultats de l'expérience dans le répertoire test_run . Pour exécuter l'exemple, Docker est requis.
Étant donné que les binaires de torche sont différents pour GPU et CPU et la version GPU ne fonctionne pas sur CPU - il faut sélectionner et créer une version d'image Docker appropriée.
Pour ce faire passer gpu ou cpu comme arch_version build-arg in
docker build --build-arg arch_version=${ARCH_VERSION}
Lorsque vous appelez run_example.sh vous pouvez sélectionner la version appropriée par un premier argument de ligne CMD, par exemple
run_example.sh gpu ...
avec cpu étant la valeur par défaut si elle n'est pas spécifiée.
Pour former votre propre modèle, configurez votre expérience dans le fichier config.json et exécutez
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
Tous les hyperparamètres de la procédure de formation: la définition du modèle IE, l'emplacement des données, les pertes et les métriques utilisées, les hyperparamètes de formation, etc. sont contrôlées par le fichier config.json . Nous fournissons un fichier de modèle config_template.json où les attributs pris en charge, leur signification et leurs valeurs possibles sont expliquées. Notez que la convention MSLR-WEB30K, votre fichier LIBSVM avec les données de formation doit être nommé train.txt . Vous pouvez spécifier le nom de l'ensemble de données de validation (par exemple, valide ou test) dans la configuration. Les résultats seront enregistrés sous le chemin <job_dir>/results/<run_id>
Google Cloud Storage est pris en charge dans ALLRANK comme lieu de données et de résultats du travail.
Pour expérimenter votre propre perte personnalisée, vous devez implémenter une fonction qui prend deux tenseurs (prédiction du modèle et vérité au sol) en entrée et le mettre dans le package losses , en s'assurant qu'il est exposé au niveau du package. Pour l'utiliser dans la formation, passez simplement le nom (et les args, si votre méthode de perte a des hyperparamètres) de votre fonction au bon endroit dans le fichier de configuration:
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
Pour appliquer un modèle de clic, vous devez d'abord suivre un modèle Allrank formé. Ensuite, exécutez:
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>
Le modèle sera utilisé pour classer toutes les ardoises à partir de l'ensemble de données spécifié dans Config. Suivant - Un modèle de clic configuré dans la configuration sera appliqué et l'ensemble de données de clics résultant sera rédigé sous <job_dir>/results/<run_id> dans un format libsvm. Le chemin du répertoire des résultats peut ensuite être utilisé comme entrée pour une autre formation de modèle Allrank.
Vous devez exécuter scripts/ci.sh pour vérifier que le code passe les directives de style et les tests unitaires.
Ce cadre a été développé pour soutenir l'apprentissage du projet de recherche au contexte de se classer avec l'auto-assistance. Si vous utilisez Allrank dans vos recherches, veuillez citer:
@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}
}
De plus, si vous utilisez la fonction de perte neuralndcg, veuillez citer le travail correspondant, neuralndcg: optimisation directe d'une métrique de classement via une relaxation différenciable du tri:
@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}
}
Licence Apache 2