Я был очень впечатлен, когда впервые использовал некоторые платформы машинного обучения с открытым исходным кодом, такие как H2O, Dataiku и Datarobot. Хотя эти платформы с открытым исходным кодом превосходны, я все же хочу создать свою собственную платформу машинного обучения по причинам, указанным ниже.
- Бросьте себе вызов
- Создавайте только те функции, которые мне нужны, вместо того, чтобы иметь все функции, которые я никогда не использую.
Это мой результат после 3 недель применения.
Репозиторий: https://github.com/easyautoml/easyml
В этой серии статей я подробно объясню систему, от архитектуры проекта до реализации.
Хорошо, приступим.
1. Разработка функций
Система, которую я собираюсь построить, будет сосредоточена на проблемах с табличными данными. Проблемы, связанные с НЛП, изображениями и аудиоданными, могут быть добавлены в ближайшем будущем.
Следующие функции являются обязательными в процессе построения моделей ML:
- Загрузить данные
- Создание моделей
- оценки
- Прогноз
Хорошие функции:
- Объяснения
2. Архитектура дизайна
Система состоит из трех основных компонентов.
- Бэкенд – внешний интерфейс: пользователь взаимодействует с системой для загрузки данных, разработки модели, подтверждения производительности и прогнозов.
- Worker: здесь будет выполняться процесс создания модели. Обычно процесс построения модели может занимать от нескольких минут до часов, в зависимости от размера обучающих данных, поэтому асинхронная архитектура необходима.
- Хранилище: метаданные сохраняются с помощью PostgreSQL, а сообщения, полученные от серверной части, сохраняются с помощью Redis.
В основном модель будет построена с помощью следующих шагов:
- Пользователь разрабатывает модель во внешнем интерфейсе (например, выбирает цель, функции и оценку). После отправки информации о модели серверная часть сохраняет информацию о модели в БД и отправляет задачу в очередь.
- Рабочий получает задачу из очереди и обрабатывает ее для построения модели.
- После успешного построения модели рабочий процесс отправляет информацию о модели, такую как имя модели, результат теста и результат проверки, обратно в серверную часть через API, а пользователь может подтвердить результат через интерфейс.
3. Подготовьте среду кодирования
Как показано на рис. 1, систему можно разделить на 2 части:
- Хранилище
- Бэкэнд — Фронтенд и Воркер
Для хранилища вы можете установить PostgreSQL и Redis непосредственно в свою ОС, но я настоятельно рекомендую установить их в виртуальную ОС, выполнив следующие действия.
- Шаг 1.Используйте vagrant и виртуальную коробку для создания Centos в Virtualbox. https://computingforgeeks.com/how-to-addinstall-and-run-centos-7-vagrant-box-to-virtualbox-using-vagrant/
- Шаг 2. В Centos установите docker. https://docs.docker.com/engine/install/centos/
- Шаг 3.Извлеките образы Redis и Postgres и запустите образ Docker. https://hub.docker.com/_/redis https://hub.docker.com/_/postgres
Для серверной части, клиентской части и Worker я использовал Miniconda для создания среды непосредственно в ОС Windows. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
Если вы хотите узнать больше подробностей, пожалуйста, проверьте парк 2 в здесь
Не стесняйтесь обращаться ко мне в LinkedIn, если вы хотите продолжить обсуждение, это будет приятно (честно).