Allrank는 신경 학습-순위 (LTR) 모델을 훈련하기위한 Pytorch 기반 프레임 워크로, 구현을 특징으로합니다.
Allrank는 다양한 LTR 신경망 모델 및 손실 기능을 실험 할 수있는 쉽고 유연한 방법을 제공합니다. 사용자 정의 손실을 추가하고 모델과 교육 절차를 구성하는 것은 쉽습니다. 우리는 Allrank가 신경 LTR에 대한 연구와 산업 응용 분야를 모두 촉진하기를 바랍니다.
시작하는 데 도움을주기 위해 run_example.sh 스크립트를 제공하여 LIBSVM 형식으로 더미 순위 데이터를 생성하고 제공된 예제 config.json config 파일을 사용하여 데이터의 변압기 모델을 트레이드합니다. 스크립트를 실행하면 더미 데이터는 dummy_data 디렉토리와 test_run 디렉토리의 실험 결과에서 찾을 수 있습니다. 예제를 실행하려면 Docker가 필요합니다.
Torch Binaries는 GPU에 대해 다르고 CPU 및 GPU 버전은 CPU에서 작동하지 않기 때문에 적절한 Docker 이미지 버전을 선택하고 빌드해야합니다.
그렇게하려면 gpu 또는 cpu arch_version Build-Arg로 전달합니다.
docker build --build-arg arch_version=${ARCH_VERSION}
run_example.sh 호출 할 때 첫 번째 CMD 줄 인수로 적절한 버전을 선택할 수 있습니다.
run_example.sh gpu ...
지정되지 않은 경우 cpu 기본값입니다.
자신의 모델을 훈련 시키려면 config.json 파일에서 실험을 구성하고 실행하십시오.
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
훈련 절차의 모든 초라미터 : IE 모델 정의, 데이터 위치, 손실 및 메트릭, 교육 하이퍼 파라 메트 등은 config.json 파일에 의해 제어됩니다. 우리는 지원되는 속성, 의미 및 가능한 값에 대해 설명하는 템플릿 파일 config_template.json 제공합니다. MSLR-WEB30K 컨벤션에 따라 교육 데이터가있는 LIBSVM 파일은 train.txt 로 명명되어야합니다. 구성에서 유효성 검사 데이터 세트 (예 : 유효 또는 테스트)의 이름을 지정할 수 있습니다. 결과는 <job_dir>/results/<run_id> 경로에서 저장됩니다
Google Cloud Storage는 Allrank에서 데이터 및 작업 결과를위한 장소로 지원됩니다.
자신의 사용자 정의 손실을 실험하려면 두 개의 텐서 (모델 예측 및 지상 진실)를 입력으로 가져 와서 losses 패키지에 넣어 패키지 수준에 노출되도록하는 기능을 구현해야합니다. 훈련에 사용하려면 구성 파일의 올바른 위치에 기능의 이름 (손실 방법이 과도한 파라미터가있는 경우 Args)을 전달합니다.
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
클릭 모델을 적용하려면 먼저 AllRank 모델을 훈련시켜야합니다. 다음으로 실행 :
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>
이 모델은 구성에 지정된 데이터 세트의 모든 슬레이트를 순위에 올리는 데 사용됩니다. 다음 - 구성에서 구성된 클릭 모델이 적용되며 결과 클릭 스루 데이터 세트는 <job_dir>/results/<run_id> 에 LiBSVM 형식으로 작성됩니다. 결과 디렉토리로의 경로는 다른 Allrank 모델 교육에 대한 입력으로 사용될 수 있습니다.
코드가 스타일 지침 및 단위 테스트를 통과하는지 확인하려면 scripts/ci.sh 실행해야합니다.
이 프레임 워크는 연구 프로젝트 컨텍스트 인식 학습을 지원하기 위해 개발되었습니다. 연구에서 AllRank를 사용하는 경우 다음을 인용하십시오.
@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}
}
또한 NeuralNDCG 손실 함수를 사용하는 경우 해당 작업 인 NeuralNDCG : 분류의 차별적 인 완화를 통해 순위 지표의 직접 최적화를 인용하십시오.
@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 라이센스