Раз уж пошла речь о железе, нужно чуток рассказать о том, как его эффективно использовать. Эксперименты к статьям – это чаще всего усредение по десяткам запусков методов на разных датасетах. Если мы говорим не про нейросети, которые гоняются на ГПУшках, то почти всегда *гораздо* эффективнее запустить X параллельных процессов, чем один процесс на X ядрах. Поможет нам в этом GNU parallel.
Я строил свои эксперименты примерно следующим образом:
1. Создавал бинарник с флагами, по которым шел перебор – датасеты, параметры, сиды. Бинарник пишет свой выход в уникальный файлик.
2. Простеньким питоновским скриптом генерировал текстовый файл с командой на каждой строке, перебирая все интересующие значения флагов.
3.
parallel --ungroup -j N_CORES --nice 19 < command.txt. Флаг nice задаёт задачам низкий приоритет, чтобы ОС могла выполнять свои задачи. ungroup отвечает за то, чтобы вывод всех программ выводился на экран параллельно.4. Ещё одним простым скриптом собираем данные с выхода в удобную табличку.
У
parallel намного больше опций, но даже базового примера достаточно, чтобы сильно ускорить эксперименты и упростить себе жизнь. При использовании этого софта в исследованиях его нужно процитировать по лицензии (можно даже просто добавить в список литературы без прямого цитирования в тексте).