Многоклиентность

Тема дорожной карты · MLOps

Многоклиентность — это подход к проектированию программного обеспечения, который позволяет одной инстанции приложения обслуживать нескольких клиентов или пользователей, обеспечивая при этом изоляцию данных и конфигураций. Этот подход особенно важен в контексте машинного обучения (ML), где требуется поддержка множества команд и проектов с различными требованиями и ограничениями. Многоклиентность помогает создать эффективную и масштабируемую инфраструктуру, которая позволяет командам использовать общие ресурсы, но при этом обеспечивает необходимую изоляцию.

Как это работает

Многоклиентность реализуется через построение общей инфраструктуры, которая позволяет ML-командам использовать self-service модели. Эта инфраструктура включает в себя различные части платформы: control plane (отправка задач, планирование), инфраструктура обучения (пулы GPU, распределенное обучение), data plane (хранилище функций, хранение данных), serving plane (услуги инференса, маршрутизация), а также инструменты (ноутбуки, интеграции IDE). Многоклиентность обеспечивает изоляцию команд через Kubernetes namespaces, квоты и RBAC (Role-Based Access Control). Самослужебная модель позволяет пользователям определять стандартные абстракции, такие как "model deployment" с помощью одного YAML файла, без необходимости вмешательства в Kubernetes, Spark и другие системы.

Когда применять

Многоклиентность следует применять, когда 3 или более команд используют общую ML-инфраструктуру. В противном случае каждая команда может использовать отдельную инфраструктуру. При проектировании многоклиентной платформы важно начать с того, что пользователи делают чаще всего и что они делают вручную. Это позволит автоматизировать наиболее часто используемые процессы и упростить работу пользователей. Не стоит строить многоклиентную платформу, например, на основе Kubeflow, до тех пор, пока не будет минимум 10 пользователей, поскольку операционные и поддерживающие затраты становятся реальными. Перед созданием собственной платформы стоит изучить примеры проектирования ML-платформ Google, Meta и Netflix.

Типичные ошибки

Типичные ошибки при использовании многоклиентности включают создание платформы, которая не соответствует реальному спросу, что может привести к тому, что команда поддержки платформы станет препятствием для разработки. Также проблемой может стать создание слишком большого количества абстракций, что заставляет пользователей учить специализированный язык запросов вместо использования переносимых навыков. Кроме того, важно измерять успех платформы, а не полагаться на "build-and-pray" подход. Наконец, необходимо учитывать "platform tax" — каждая абстракция имеет свою цену в терминах отладки и поддержки.

Связанные понятия

Полезные ресурсы