Projekt NLP semestr 2024L - temat ROBERTA.
https://staff.elka.pw.edu.pl/~pandrusz/nlp_tematy.html
- Konrad Dumin
- Dominika Ziółkiewicz
Aby móc uruchomić kod należy mieć zainstalowaną werjsę python'a 3.9 a następnie w środowisku wirtualnym wykonać komendę:
pip install -r requirements.txtW razie potencjalnych problemów zaleza się instalację python3.9-dev oraz ponowną instalację torch==1.13.1 używającego cuda11.7 (można znależć na stronie poprzednich wersji pytorch'a).
Wszystkie potrzebne datasety są w katalogu data/datasets_old folder. Zostały pobrane z site. Jeśli zachodzi potrzeba można je pobrać i przeprocesować za pomocą:
./download_semeval_data.sh
python tools/create_csv.pyAby zacząć trening modelu z domyślnymi parametrami należy uruchomić:
python tools/train_net.pyNastomiast można ustawić dowolne parametry razem z komenda wyżej, np. można ustawić parametr max_epochs na 10 i learning rate na 0.0002 wystarczy wpisać:
python tools/train_net.py SOLVER.MAX_EPOCHS 10 SOLVER.BASE_LR 0.0002Wszystkie potrzebne parametry znajdują się w pliku net_default_cfg/default_config.py
Parametry mogą być też zaciągnięte z pliku przy użyciu --config_file:
python tools/train_net.py --config_file conf/roberta_config.ymlAby przetestować dany model należy podać do niego ścieżkę ustawiając parametr TEST.WEIGHT:
python .\tools\test_net.py TEST.WEIGHT "output/29052021142858_model.pt"NOTE: Istnieją 4 testowe datasety:
- images
- headline
- answers-students
- wszystkie powyższe razem (domyślnie)
Obliczane są metryki F1:
- F1 score dla values
- F1 score dla explanations
Są 2 pliki (skrypty w perlu) które służą również do testowania modelu. Znajdują się w folderze tests:
- evalF1_no_penalty.pl
- evalF1_penalty.pl
Aby ich użyć dane musza być w odpowiednim formacie. W tym celu należy stworzyć plik z końcówką .wa używając:
python .\tools\create_wa.py TEST.WEIGHT "output/29052021142858_model.pt" DATASETS.TEST_WA "data/datasets/STSint.testinput.answers-students.wa"Zostanie stworzony plik z predykowanymi wartościami w katalogu 'output'. Następnie można wykonać odpowiedni skrypt, np:
perl .\evalF1_penalty.pl data/datasets/STSint.testinput.answers-students.wa output/STSint.testinput.answers-student_predicted.wa --debug=0