Итеративная распределенная перекрестная проверка с ранней остановкой - PullRequest
0 голосов
/ 31 марта 2020

Указать c Я хочу распараллелить перекрестную проверку xgboost

Пожалуйста, помогите мне спроектировать такое приложение Dask. Допустим, у меня есть кластер Dask. Я хочу сделать 10-кратную перекрестную проверку для xgboost.

Допустим, планировщику необходимо отслеживать текущее состояние задания. Он запускает 10 задач xgboost на 10 разных рабочих (для каждой из складок), скажем, 10000 итераций для каждой задачи максимум.

После завершения каждой итерации выполняется обратный вызов, который сообщает о текущем метри c, например, rmse. Таким образом, работник отправит это Планировщику и получит ответ, продолжить или завершить.

Основной планировщик периодически получает эти обновления асинхронно. Когда все работники сообщают о метри c на определенной итерации, планировщик агрегирует их (просто вычисляет среднее значение) и помещает его в текущий стек результатов. Он также проверяет, не был ли результат улучшен за последние, скажем, 50 итераций, планировщик велит всем работникам завершить (возможно, при следующем сообщении) и сообщить результат (который является объектом дерева).

После того, как он получает их все, он возвращает все деревья (и, возможно, метрики тоже).

1 Ответ

1 голос
/ 04 апреля 2020

Мне кажется, вы описываете что-то похожее на Hyperband, который в настоящее время реализован в Dask-ML. Возможно, вы захотите взглянуть на эти документы:

https://ml.dask.org/modules/generated/dask_ml.model_selection.HyperbandSearchCV.html?highlight=hyperband

Если вы хотите реализовать что-то самостоятельно, некоторые части этого кода могут быть и тебе тоже пригодится. Dask-ML живет на Github в https://github.com/dask/dask-ml

...