Нужна рекомендация по настройке для параллельной обработки многих контрактов по многим сценариям - PullRequest
0 голосов
/ 04 мая 2019

Мне нужна рекомендация от гуру о том, как настроить приложение для моделирования. У меня есть тысячи сценариев, которые можно использовать для составления контрактов на прогнозирование денежных потоков. Предполагая, что у меня есть 1000 сценариев и 1000 контрактов, мне нужно выполнить 1 000 000 прогнозов (1000 x 1000). Я бы хотел сделать это параллельно, используя dask, ray или другой метод. Мои данные находятся в данных, но я открыт для лучших предложений. Я могу создать 2 цикла (сценарий, контракт) для каждого прогона, но это будет последовательно.

Сценарий1 w Контракт1

Сценарий 1 с контрактом 2

Сценарий1 с контрактом3

. , .

Сценарий 1000 с контрактом 1000

Я бы хотел распределить вычисления на несколько процессоров и несколько серверов.

Я сохраню свой вопрос в проекциях внутреннего цикла, где мне нужно будет выполнить 100 проекций сценариев на каждом временном шаге из 1 000 000 прогонов в следующий раз.

Любое предложение указать мне правильное направление поможет.

1 Ответ

0 голосов
/ 04 мая 2019

С простой концептуальной точки зрения:

  • Напишите себе функцию, которая принимает контракт и сценарий в качестве параметров и выполняет требуемый расчет
  • Используйте Python multiprocessing для настройки рабочего пула
  • Создание очереди (из пакета многопроцессорной обработки), которая должна быть распределена между работниками
  • Заполните очередь всеми комбинациями (возможно, было бы неплохо использовать фиксированные индексы и только выдвинуть кортеж индексов контракта / сценария (C, S) в очередь, чтобы уменьшить необходимое пространство
  • Сопоставить вашу функцию с рабочим пулом с учетом очереди

Существуют более сложные способы сделать это (включая amqp / celery / ...) в зависимости от того, хотите ли вы распределить задачи по нескольким машинам или только по всем вашим локально доступным ядрам. Эта простая концепция должна содержать все необходимые ключевые слова для создания вашей первой локальной многопроцессорной обработки самостоятельно!

...