Allrank ist ein Pytorch-basierter Rahmen für die Schulung neuronaler Learning-to-Rank-Modelle (LTR) mit Implementierungen von:
Allrank bietet eine einfache und flexible Möglichkeit, mit verschiedenen LTR -Netzwerkmodellen und Verlustfunktionen zu experimentieren. Es ist einfach, einen benutzerdefinierten Verlust hinzuzufügen und das Modell und das Trainingsvorgang zu konfigurieren. Wir hoffen, dass Allrank sowohl die Forschung in neuronaler LTR als auch seine industriellen Anwendungen ermöglichen wird.
Um Ihnen den Einstieg zu erleichtern, bieten wir ein Skript run_example.sh , das Dummy -Ranking -Daten im LIBSVM -Format generiert und ein Transformatormodell für die Daten mit der vorgesehenen config.json -Konfigurationsdatei trainiert. Sobald Sie das Skript ausgeführt haben, finden Sie die Dummy -Daten im Verzeichnis dummy_data und die Ergebnisse des Experiments im test_run -Verzeichnis. Um das Beispiel auszuführen, ist Docker erforderlich.
Da Torch -Binärdateien für GPU- und CPU- und GPU -Version auf CPU nicht funktionieren, muss man eine geeignete Docker -Bildversion auswählen und erstellen.
Um dies zu tun, passieren Sie gpu oder cpu als arch_version Build-Arg in
docker build --build-arg arch_version=${ARCH_VERSION}
Wenn Sie run_example.sh aufrufen
run_example.sh gpu ...
wobei cpu die Standardeinstellung ist, wenn nicht angegeben.
Um Ihr eigenes Modell zu trainieren, konfigurieren Sie Ihr Experiment in config.json -Datei und führen Sie aus
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
Alle Hyperparameter des Trainingsverfahrens: IE -Modelldefinition, Datenort, Verlust und verwendete Metriken, Trainingshyperparametrs usw. werden von der Datei config.json gesteuert. Wir geben eine Vorlagendatei config_template.json an, bei der unterstützte Attribute, ihre Bedeutung und mögliche Werte erläutert werden. Beachten Sie, dass Ihre LIBSVM-Datei mit Trainingsdaten mit train.txt bezeichnet werden sollte. Sie können den Namen des Validierungsdatensatzes (z. B. gültig oder test) in der Konfiguration angeben. Die Ergebnisse werden unter dem Pfad <job_dir>/results/<run_id> gespeichert
Der Google Cloud -Speicher wird in Allrank als Ort für Daten und Jobergebnisse unterstützt.
Um mit Ihrem eigenen benutzerdefinierten Verlust zu experimentieren, müssen Sie eine Funktion implementieren, die zwei Tensoren (Modellvorhersage und Grundwahrheit) als Eingabe aufnimmt und in das losses einfügt, um sicherzustellen, dass sie auf einer Paketebene freigelegt sind. Um es im Training zu verwenden, übergeben Sie einfach den Namen (und Args, wenn Ihre Verlustmethode einige Hyperparameter enthält) Ihrer Funktion an der richtigen Stelle in der Konfigurationsdatei:
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
Um ein Klick -Modell anzuwenden, müssen Sie zuerst ein Allrank -Modell trainieren. Als nächstes rennen Sie:
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>
Das Modell wird verwendet, um alle Schiefer aus dem in config angegebenen Datensatz zu bewerten. Als nächstes wird ein in der Konfiguration konfiguriertes Klick -Modell angewendet und der resultierende Klick -Through -Datensatz wird unter <job_dir>/results/<run_id> in einem LIBSVM -Format geschrieben. Der Pfad zum Ergebnisverzeichnis kann dann als Eingabe für ein anderes Allrank -Modelltraining verwendet werden.
Sie sollten scripts/ci.sh ausführen, um zu überprüfen, ob Code Stilrichtlinien und Unit -Tests übergeht.
Dieser Framework wurde entwickelt, um das Kontext des Forschungsprojekts zu unterstützen, das mit Selbstbekämpfung eingestuft wurde. Wenn Sie Allrank in Ihrer Recherche verwenden, zitieren Sie bitte:
@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}
}
Wenn Sie die NeuralNDCG -Verlustfunktion verwenden, geben Sie außerdem die entsprechenden Arbeiten an, NeuralndCG: Direkte Optimierung einer Ranking -Metrik durch differenzierbare Entspannung der Sortierung:
@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 Lizenz