Создайте облачную платформу машинного обучения на основе WeDataSphere Prophecis и KubeSphere.

машинное обучение

Привет всем в сообществе открытого исходного кода KubeSphere. Я Чжоу Кэ, инженер платформы больших данных WeBank. Далее я поделюсь с вами тем, как создать облачную платформу машинного обучения Prophecis на основе продуктов двух сообществ с открытым исходным кодом, WeDataSphere и KubeSphere.

Что такое Професис?

Сначала позвольте мне представить, что такое Prophecis (Prophecy In WeDataSphere)? Его китайское значение — это значение пророчества.

Prophecis — это универсальная платформа машинного обучения, разработанная командой платформы больших данных WeBank. Мы основаны на этой многопользовательской контейнерной высокопроизводительной вычислительной платформе, управляемой KubeSphere, и платформе машинного обучения, используемой нашими ИТ-операциями. На уровне интерактивного интерфейса вы можете видеть, что вверху у нас есть набор интерфейсов разработки приложений машинного обучения для обычных пользователей и набор интерфейсов управления для наших администраторов эксплуатации и обслуживания. Интерфейс администратора в основном основан на KubeSpehre. Мы выполнили некоторую настройку и разработку; сервисный уровень посередине — это несколько ключевых сервисов нашей платформы машинного обучения, в основном:

  • Prophecis Machine Learning Flow: инструмент распределенного моделирования для машинного обучения с возможностями обучения моделей на одной машине и в распределенном режиме, поддерживает Tensorflow, Pytorch, XGBoost и другие платформы машинного обучения, а также поддерживает полный конвейер от моделирования машинного обучения до развертывания;
  • Prophecis MLLabis: инструмент разработки и исследования машинного обучения, предоставляет услуги разработки и исследования, представляет собой онлайн-среду IDE на основе Jupyter Lab, поддерживает задачи моделирования машинного обучения кластера GPU и Hadoop, поддерживает языки Python, R, Julia, интегрирует отладку, различные плагины для Тензорборд;
  • Фабрика моделей Prophecis: Фабрика моделей машинного обучения, предоставляющая такие услуги, как хранение моделей машинного обучения, тестирование развертывания моделей и управление моделями;
  • Фабрика данных Prophecis: фабрика данных машинного обучения, которая предоставляет такие услуги, как инструменты разработки функций, инструменты аннотирования данных и управление материалами;
  • Фабрика приложений Prophecis: Фабрика приложений для машинного обучения, созданная совместно командой платформы больших данных WeBank и отделом искусственного интеллекта, индивидуальная разработка на основе KubeSphere с открытым исходным кодом QingCloud, предоставляющая инструменты CI / CD и DevOps, мониторинг кластера графического процессора и возможности оповещения.

Самая нижняя базовая платформа — это высокопроизводительная контейнерная вычислительная платформа, управляемая KubeSphere.

Когда мы создаем такую ​​платформу машинного обучения для наших текущих финансовых сценариев или интернет-сценариев, у нас есть два соображения:

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

Еще одна проблема связана с полным подключением. У нас есть большая проблема, когда мы занимаемся разработкой приложений для машинного обучения. Возможно, вы уже видели картинку из Google, и, возможно, 90% работы не связано с машинным обучением. Это может быть 10% работы. работать, когда вы на самом деле делаете настройку модели.

Потому что предыдущая обработка данных на самом деле требует много работы. Одной из задач, которую мы выполнили, является подключение сервисных компонентов нашего Prophecis к системе планирования Schedulis, промежуточному программному обеспечению данных DataMap, вычислительному промежуточному программному обеспечению Linkis и приложениям, ориентированным на данные, которые в настоящее время предоставляются в WeDataSphere, посредством доступа к подключаемым модулям. DataSphere Stduio, портал разработки, открыт для создания полностью подключенной платформы машинного обучения.

Введение в функциональные компоненты Prophecis

Далее краткое введение в возможности различных компонентов нашей платформы машинного обучения Prophecis.

Во-первых, компонент, который мы поместили в сообщество с открытым исходным кодом, называется MLLabis, что на самом деле похоже на SageMaker Studio, предоставляемую AWS для разработчиков машинного обучения.

Мы выполнили некоторые пользовательские разработки в Jupyter Notebook.Общая архитектура на самом деле представлена ​​на картинке в левом верхнем углу.На самом деле, основное ядро ​​состоит из двух компонентов, один из которых — Notebook Server (Restful Server), который предоставляет различные API-интерфейсы для работы с ноутбуком. управление циклом.; другой — контроллер ноутбука (Jupyter Notebook CRD), который управляет состоянием ноутбука.

Когда пользователь создает блокнот, ему нужно только выбрать пространство имен с разрешениями (пространство имен Kubernetes), а затем установить некоторые параметры, необходимые для запуска блокнота, такие как ЦП, память, графический процессор или хранилище для монтирования, если все в норме. , группа контейнеров Notebook запустится и будет предоставлять службы в соответствующем пространстве имен.

Здесь мы сделали относительно расширенную функцию, которая должна предоставить компонент под названием LinkisMagic. Если вы знаете о нашем продукте с открытым исходным кодом WeDataSphere, существует компонент под названием Linkis, который обеспечивает возможности управления вычислениями платформы больших данных, открывает различные базовые компоненты вычислений и хранения, а затем отправляет их на верхний уровень для создания приложений данных. .

Вызывая интерфейс Linkis, наш LinkisMagic может отправить код обработки данных, написанный в Jupyter Notebook, на платформу больших данных для выполнения; мы можем загрузить обработанные данные функций на крепление ноутбука через хранилище интерфейса загрузки данных Linkis, чтобы мы могли использовать GPU для ускоренного обучения работе с нашей контейнерной платформой. С точки зрения хранения, MLLabis в настоящее время предоставляет два вида хранения данных, один — Ceph; другой — наша платформа больших данных HDFS, вот несколько слов о HDFS, мы на самом деле помещаем файлы конфигурации клиента HDFS и HDFS в контейнер через Mount и После управления разрешениями вы можете взаимодействовать с HDFS в контейнере.

Это наша страница списка ноутбуков MLLabis;

Это наш интерфейс к блокноту со страницы списка.

Затем представьте наш другой компонент, MLFlow.

Мы создали распределенную службу управления экспериментами по машинному обучению. Он может либо управлять одной задачей моделирования, либо построить полный эксперимент по машинному обучению, подключившись к DataSphere Studio, нашему универсальному порталу разработки данных для WeDataSphere. Экспериментальные задачи здесь управляются и запускаются на платформе контейнера через контроллер заданий (tf-operator, pytorch-operator, xgboost-operator и т. д.), а также могут запускаться на платформе данных через Linkis.

Позвольте мне еще раз объяснить здесь, что MLFlow и DataSphere Studio взаимодействуют через AppJoint, который может не только повторно использовать возможности управления рабочими процессами, уже предоставленными DSS, но также получить доступ к эксперименту MLFlow в качестве вспомогательного рабочего процесса для рабочего процесса больших данных DSS. , постройте конвейер от предварительной обработки данных до разработки приложений машинного обучения.

Это полный рабочий процесс науки о данных, состоящий из наших экспериментов по обработке данных и машинному обучению.

Это интерфейс DAG для экспериментов машинного обучения MLFlow.В настоящее время он предоставляет два типа задач: GPU и CPU, а также поддерживает одномашинное и распределенное выполнение задач платформы машинного обучения, таких как TensorFlow, PyTorch и xgboost.

Далее я представлю нашу фабрику моделей машинного обучения: Фабрика моделей. После того, как наша модель построена, как мы будем управлять этими моделями, как управлять ее версией модели, как управлять ее развертыванием и как проверять модель, мы используем Фабрику моделей.

Этот сервис в основном основан на Seldon Core для вторичной разработки, предоставляя три возможности интерпретации модели, хранения модели и развертывания модели. Следует подчеркнуть, что сервисный интерфейс этой части также может быть подключен к MLFlow и подключен к эксперименту по машинному обучению в качестве узла, чтобы обученную модель можно было быстро развернуть с помощью конфигурации интерфейса, а затем модель может быть быть проверенным. Следует также отметить, что если мы проверяем только одну модель, мы в основном используем возможности развертывания на основе Helm, предоставляемые MF. Если мы создаем сложный готовый к производству механизм вывода, мы по-прежнему будем использовать возможности CI/CD и управления микросервисами, предоставляемые KubeSphere, для создания и управления службами вывода моделей.

Следующий компонент, который будет представлен, — это наша фабрика данных.

В нашей фабрике данных мы получаем основные метаданные из Hive, MySQL, HBase, Kafka и других компонентов данных через службу обнаружения данных, а также предоставляем возможности предварительного просмотра данных и анализа происхождения данных, сообщая нам специалистам по науке о данных и моделированию, что он хочет. используемые данные выглядят и как их можно использовать. В будущем мы также предоставим некоторые инструменты аннотирования данных или инструменты краудсорсинга данных, чтобы наши студенты, занимающиеся разработкой данных, могли выполнять работу по аннотированию данных.

Последний компонент, который нужно представить, — это Фабрика приложений машинного обучения, Фабрика приложений.

Как я только что сказал, если мы строим какие-то сложные службы вывода для каких-то сложных моделей, на самом деле нам недостаточно использовать простой одноконтейнерный сервис Process, в настоящее время нам действительно нужны более сложные возможности управления контейнерными приложениями. .

Фабрика приложений основана на KubeSphere. После того, как мы подготовим эти модели, мы будем использовать рабочий процесс CI/CD, предоставленный KubeSphere, для завершения общего процесса выпуска приложения модели. , поддерживать и управлять услугами различных деловых сторон.

Практика применения KubeSphere

Затем перейдите в KubeSphere в нашем разделе практики приложений WeBank.

До того, как мы представили KubeSphere, проблемы, с которыми мы сталкивались, в основном касались некоторых проблем с эксплуатацией и обслуживанием. В то время мы также использовали некоторые сценарии, написанные нами или Ansible Playbooks, для управления нашим набором или наборами кластеров K8s, включая наши кластеры разработки и тестирования в общедоступном облаке, а также несколько наборов производственных кластеров K8s в частном облаке в отрасли. . Но в этом случае, поскольку наша рабочая сила и обслуживающий персонал ограничены, на самом деле очень сложно управлять этой вещью; наша построенная модель предназначена для использования в банковском бизнесе, некоторые из которых связаны с контролем рисков и доступностью обслуживания в целом. Требования по-прежнему очень высоки, то, как мы осуществляем управление тенантами, управление использованием ресурсов и контроль различных сторон бизнеса, а также то, как сформировать полную систему мониторинга, также является тем, на чем нам нужно сосредоточиться, в панели управления Kubernetes практически нечем управлять. Поэтому мы по-прежнему надеемся иметь набор простых в использовании интерфейсов управления для нашего персонала по эксплуатации и техническому обслуживанию, чтобы сделать их эксплуатацию и техническое обслуживание более эффективными.

Поэтому мы строим такую ​​контейнерную платформу машинного обучения на базе KubeSphere в качестве базовой базы управления эксплуатацией и обслуживанием.

Общая архитектура службы в основном похожа на текущую архитектуру API KubeSphere.После поступления запроса пользователя он находит службу, доступ к которой осуществляется через API Gateway.Эти службы представляют собой только что представленные компоненты, и Gateway распределяет запрос по соответствующим микрослужбам. Управление этими контейнерными платформами, от которых зависит каждый сервис, — это возможности, которые предоставляет нам KubeSphere: средства CI/CD, мониторинга, управления журналами, сканирования кода и т. д., и затем мы делаем это поверх этого набора решений. Есть некоторые точки трансформации, но, вообще говоря, не так много вещей, которые нужно трансформировать, потому что возможности, предоставляемые текущей версией KubeSphere с открытым исходным кодом, в основном могут удовлетворить наши потребности.

Версия, которую мы используем внутри, — это версия 2.1.1 KubeSphere, и наше преобразование в основном выглядит следующим образом:

  • Мониторинг и оповещение: мы связываем KubeSphere Notification с нашим отраслевым менталитетом мониторинга и оповещения и в то же время связываем информацию о конфигурации экземпляра контейнера с бизнес-информацией, управляемой в нашей системе CMDB, чтобы можно было обнаружить аномалию в контейнере. предупреждено нами Информация отправляет предупреждающее сообщение и сообщает нам, какая бизнес-система затронута;

  • Управление ресурсами: мы внесли небольшое расширение в управление квотами ресурсов пространства имен KubeSphere, чтобы поддерживать управление квотами ресурсов графического процессора пространства имен, что может ограничивать базовые ресурсы графического процессора и максимальные ресурсы графического процессора, которые может использовать каждый арендатор;

  • Постоянное хранилище: мы подключаем хранилище службы ключей в контейнере к нашему высокодоступному распределенному хранилищу (Ceph) и базе данных (MySQL), чтобы обеспечить безопасность и стабильность хранилища данных.

Это административный интерфейс для нашей тестовой среды.

Тогда это то, что мы только что сказали.На самом деле, мы делаем две вещи в этой части.Одна вещь, что мы объединяем весь объект мониторинга с системой CMDB в нашей отрасли. Когда возникает сигнал тревоги, мы связываем конфигурацию с этой системой CMDB. Мы можем знать, на какие бизнес-системы влияет этот экземпляр сигнала тревоги. Затем, как только возникает исключение, мы вызываем нашу систему сигналов тревоги. Вот аварийное сообщение предприятия WeChat. конечно, он также может отправить WeChat, позвонить или отправить электронное письмо.

Вышеупомянутая часть — это наша настройка квоты ресурсов графического процессора.

Этот блок — наш интерфейс запроса журнала на основе KubeSphere.

Далее, давайте поговорим о будущих перспективах.На самом деле, когда дело доходит до этого, в настоящее время у нас очень ограниченная рабочая сила, и тогда давление разработки каждого компонента относительно велико, и тогда мы все еще основаны на предыдущей версии KubeSphere. v2.1.1 В следующих словах мы рассмотрим возможность объединения и адаптации KubeSphere 3.0 с некоторыми из наших существующих возможностей.

Во-вторых, в KubeSphere по-прежнему нет некоторых возможностей для мониторинга графического процессора и управления статистическими показателями, и мы также рассмотрим возможность переноса некоторых вещей, которые мы делали раньше, или некоторых возможностей интерфейса в KubeSphere Console.

Последним является контейнерная адаптация и преобразование всех наших компонентов WeDataSphere на основе KubeSphere.Мы в конечном итоге надеемся, что все компоненты будут контейнеризированы, чтобы еще больше снизить затраты на управление эксплуатацией и обслуживанием и улучшить использование ресурсов.

О WeDataSphere

Сказав это, я кратко представлю WeDataSphere, нашу платформу больших данных WeBank.

WeDataSphere — это полный набор универсальных платформ для машинного обучения финансового класса, реализованный нашей платформой больших данных. Он предоставляет функциональные возможности различных компонентов от разработки приложений данных до промежуточного программного обеспечения и нижнего уровня, а также портал управления эксплуатацией и обслуживанием всей нашей платформы, некоторые из наших функций управления и контроля безопасности, а также полный набор операций и техническое обслуживание возможности оперативного контроля.

В настоящее время части этих компонентов, которые не выделены серым цветом, находятся в открытом доступе, если вам интересно, вы можете обратить внимание.

С нетерпением ожидая будущего WeDataSpehre и KubeSphere, два наших сообщества официально объявили о сотрудничестве с открытым исходным кодом.

Мы планируем поместить все эти компоненты нашей платформы больших данных WeDataSphere в контейнеры, а затем внести свой вклад в хранилище приложений KubeSpehre, чтобы помочь нашим пользователям быстро и эффективно завершить управление жизненным циклом и выпуск наших компонентов и приложений.

Приглашаем вас обратить внимание на наш проект с открытым исходным кодом Prophecis и нашего помощника сообщества с открытым исходным кодом WeDataSphere.Если у вас есть какие-либо вопросы об этой облачной платформе машинного обучения с открытым исходным кодом, вы можете связаться с нами дальше, спасибо.

О Кубесфере

KubeSphereЭто контейнерное гибридное облако, созданное на основе Kubernetes, которое обеспечивает полнофункциональную автоматизацию ИТ-операций и возможности обслуживания, а также упрощает рабочий процесс DevOps для предприятий.

Кубесфера былаAqara Smart Home, Original Life, Sina, China Life Insurance, Hua Xia Bank, SPD Silicon Valley Bank, Sichuan Airlines, Sinopharm Group, WeBank, Zijin Insurance, Radore, ZaloPayОн был принят тысячами предприятий в стране и за рубежом. KubeSphere предоставляет удобный интерфейс в стиле мастера и богатые функции корпоративного уровня, включая управление несколькими облаками и несколькими кластерами, управление ресурсами Kubernetes, DevOps (CI/CD), управление жизненным циклом приложений, управление микросервисами (Service Mesh), мульти - Управление арендаторами, журналы мониторинга, уведомления о тревогах, управление хранилищем и сетью, поддержка GPU и другие функции помогают предприятиям быстро создавать мощную и многофункциональную контейнерную облачную платформу.

Официальный сайт Кубесферы:kubesphere.io/ KubeSphere GitHub:GitHub.com/плачущий шар/…

KubeSphere 微信公众号