AllRank es un marco basado en Pytorch para capacitar a los modelos de aprendizaje neuronal (LTR), con implementaciones de:
AllRank proporciona una forma fácil y flexible de experimentar con varios modelos de redes neuronales LTR y funciones de pérdida. Es fácil agregar una pérdida personalizada y configurar el modelo y el procedimiento de capacitación. Esperamos que AllRank facilite tanto la investigación en el LTR neural como sus aplicaciones industriales.
Para ayudarlo a comenzar, proporcionamos un script run_example.sh que genera datos de clasificación ficticia en formato libsvm y entrena un modelo de transformador en los datos utilizando un archivo de configuración config.json ejemplo de ejemplo proporcionado. Una vez que ejecuta el script, los datos ficticios se pueden encontrar en el directorio dummy_data y los resultados del experimento en el directorio test_run . Para ejecutar el ejemplo, se requiere Docker.
Dado que los binarios de antorcha son diferentes para GPU y CPU y la versión de GPU no funciona en CPU, uno debe seleccionar y construir una versión de imagen de Docker apropiada.
Para hacerlo, pase gpu o cpu como arch_version Build-arg en
docker build --build-arg arch_version=${ARCH_VERSION}
Al llamar run_example.sh puede seleccionar la versión adecuada mediante un primer argumento de línea CMD, por ejemplo,
run_example.sh gpu ...
con cpu el valor predeterminado si no se especifica.
Para entrenar su propio modelo, configure su experimento en el archivo config.json y ejecute
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
Todos los hiperparámetros del procedimiento de capacitación: la definición del modelo de es decir, la ubicación de los datos, la pérdida y las métricas utilizadas, el entrenamiento de hiperparametrs, etc. se controlan mediante el archivo config.json . Proporcionamos un archivo de plantilla config_template.json donde se explican los atributos compatibles, su significado y los posibles valores. Tenga en cuenta que después de la convención MSLR-WEB30K, su archivo LIBSVM con datos de capacitación debe llamarse train.txt . Puede especificar el nombre del conjunto de datos de validación (por ejemplo, válido o prueba) en la configuración. Los resultados se guardarán en la ruta <job_dir>/results/<run_id>
Google Cloud Storage es compatible con AllRank como un lugar para datos y resultados de trabajo.
Para experimentar con su propia pérdida personalizada, debe implementar una función que tome dos tensores (predicción del modelo y verdad del suelo) como entrada y colocarla en el paquete losses , asegurándose de que esté expuesto a nivel de paquete. Para usarlo en el entrenamiento, simplemente pase el nombre (y los args, si su método de pérdida tiene algunos hiperparámetros) de su función en el lugar correcto en el archivo de configuración:
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
Para aplicar un modelo de clic, primero debe tener un modelo AllRank entrenado. A continuación, corre:
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>
El modelo se utilizará para clasificar todas las pizarras desde el conjunto de datos especificado en la configuración. A continuación, se aplicará un modelo de clic configurado en config y el conjunto de datos de clics resultante se escribirá en <job_dir>/results/<run_id> en un formato libsvm. La ruta al directorio de resultados puede usarse como una entrada para otro entrenamiento de modelos AllRank.
Debe ejecutar scripts/ci.sh para verificar que el código pasa pautas de estilo y pruebas unitarias.
Este marco fue desarrollado para apoyar el contexto del proyecto de investigación consciente de aprender a clasificarse con autoatención. Si usa AllRank en su investigación, 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}
}
Además, si utiliza la función de pérdida NeuralNDCG, cite el trabajo correspondiente, Neuralndcg: Optimización directa de una métrica de clasificación a través de la relajación diferenciable de clasificación:
@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}
}
Licencia Apache 2