Кеширование промежуточных результатов в конвейере Spark ML
В последнее время я планирую перенести мой автономный код Python ML для запуска. Трубопровод ML вspark.ml
оказывается довольно удобным, с оптимизированным API для цепочки этапов алгоритма и поиска по сетке гиперпараметров.
Тем не менее, я нашел поддержку одной важной функции в существующих документах:кеширование промежуточных результатов, Важность этой функции возникает, когда конвейер включает в себя интенсивные этапы вычислений.
Например, в моем случае я использую огромную разреженную матрицу для выполнения нескольких скользящих средних для данных временных рядов с целью формирования входных объектов. Структура матрицы определяется некоторым гиперпараметром. Этот шаг оказывается узким местом для всего конвейера, потому что я должен построить матрицу во время выполнения.
Во время поиска параметров у меня обычно есть другие параметры для проверки, кроме этого «параметра структуры». Так что, если я смогу повторно использовать огромную матрицу, когда «структурный параметр» не изменится, я смогу сэкономить массу времени. По этой причине я намеренно сформировал свой код для кеширования и повторного использования этих промежуточных результатов.
Итак, мой вопрос:может ли конвейер ML Spark автоматически обрабатывать промежуточное кэширование? Или я должен вручную сформировать код для этого? Если это так, есть ли лучшая практика, чтобы учиться?
Постскриптум Я изучил официальный документ и некоторые другие материалы, но, похоже, никто из них не обсуждал эту тему.