Joblib auto memmap

Я использую joblib.Parallel, чтобы получить результат нескольких двоичных классификаторов, работающих на одном наборе данных. Каждый классификатор имеет свой собственный векторизатор, поэтому я передаю набор данных каждому процессу в виде списка строк (проблема классификации текста).

Мой код выглядит следующим образом:

joblib.Parallel(n_jobs=-1)(joblib.delayed(_make_item_predictions)(
    classifier_path,
    documents
) for classifier_path in self.classifiers_path.iterdir())

Documents - это список строк Python с переменной длиной, а classifier_path - это путь каждого из двоичных классификаторов.

Читая документацию JobLib, я обнаружил, что это неэффективно, поскольку большой список строк будет сериализован, а затем десериализован для каждого процесса, выполняемого параллельно. В соответствии с документами, я запомнил список следующим образом:

joblib.dump(documents, "documents_memmap")
documents = joblib.load("documents_memmap", mmap_mode="r") 

Эта операция, однако, заняла очень много времени и не оказала никакого влияния на время выполнения процессов. Я сделал ошибку в моей реализации?

0 ответов

Другие вопросы по тегам