7CD/LearningToRank

Этап data_load

Opened this issue · 0 comments

На примере этого куска кода:

def process_dataset(raw_dataset_path, processed_dataset_dir):
    train_csr_path = os.path.join(processed_dataset_dir, 'train_csr.npz')
    train_y_path = os.path.join(processed_dataset_dir, 'train_y.npy')
    train_qid_path = os.path.join(processed_dataset_dir, 'train_qid.npy')
    test_csr_path = os.path.join(processed_dataset_dir, 'test_csr.npz')
    test_y_path = os.path.join(processed_dataset_dir, 'test_y.npy')
    test_qid_path = os.path.join(processed_dataset_dir, 'test_qid.npy')
    
    if all(map(os.path.exists, [train_csr_path, train_y_path, train_qid_path, \
                                test_csr_path, test_y_path, test_qid_path])):
        return
...
  • process_dataset() находится в src/data/dataset.py и импортируется в src/pipelines/dataload.py
    • кажется, что будет удобнее, чтобы process_dataset() ничего не знал о локальных путях и названиях файлов, об этом пусть заботится пайплайн dataload.py (мы для этого передаем ему params.yaml)
    • тогда process_dataset станет простой функцией, которую можно применить для процессинга всех 4 файлов
  • по поводу вот этого кода:
if all(map(os.path.exists, [train_csr_path, train_y_path, train_qid_path, \
                                test_csr_path, test_y_path, test_qid_path])):
          return 
- если я правильно понял, то он нужен, чтобы лишний раз не запускать процессинг 
- а что если мы поменяли что-от в процессинге и нам нужно его перезапустить? в т.ч. поменяв какой-то параметр в params.yaml? эту логику может выполнять DVC ! Если оформить  пайплайн через DVC, и сказать, что у этапа `data_load`  есть на выходе 4 файла, то всякий раз при перезапуске DVC будет следить, изменились ли а) выходные данные и б) параметры процессинга в params.yaml - т.е. лишний раз перезапускать не будет