Привет, я начинаю узнавать о Docker Swarm, поэтому у меня простой вопрос.
Если я запущу один экземпляр MLFlow в рое докеров с настройкой докер-контейнера следующим образом: CMD ["mlflow", "server", "--no-serve-artifacts", "--host", "0.0.0.0", "--workers", "4"]
это то же самое, что запустить 4 экземпляра с CMD ["mlflow", "server", "--no-serve-artifacts", "--host", "0.0.0.0", "--workers", "1"] ?
Это полностью зависит от того, как используется MLFlow и как он управляет своими работниками.
Если вы попросите Docker Swarm создать 4 экземпляра службы mflow, он должен распределить эти экземпляры по вашим узлам Swarms (если у вас их несколько). Это даст вам горизонтальную масштабируемость.
Если вы укажете MFLow использовать «4» рабочих процесса, то каждый экземпляр сможет обрабатывать 4 запроса одновременно.
Docker будет загружать запросы балансировки к экземплярам (при условии, что соединения с сервером рассчитаны на один запрос) по круговому принципу. Обычно это достаточно хорошо, но если некоторые задачи выполняются быстро, а другие — долго, это может привести к пропуску недостаточно используемых узлов и доставке новых запросов к занятым узлам.
На одном узле MLFlow с несколькими рабочими процессами, вероятно, будет лучше гарантировать, что запрос будет подхвачен доступным рабочим, поэтому в множестве нескольких узлов вы, вероятно, добьетесь лучших результатов, используя комбинацию настроек рабочих > 1 для достижения вертикального уровня. масштабирование и экземпляры > 1 для достижения горизонтального масштабирования.