Вот и небольшая притча о том как делать пет проекты. А сейчас я бы хотел рассказать, что вообще стоит исследовать и с чего начинать.
Безусловно первое что мы делаем - ищем проблему которую нужно решить, почему проблему? Потому что спрос рождает предложение, а предложение не рождает спрос. Если вы сделаете что-то полезное, то можно будет даже продать это или сделать свой маленький стартап и вообще последующее развитие всегда лучше прокрастинации.
Допустим проблему мы определили - нам нужно собрать или взять данные, я вам рекомендую делать непрерывные парсинг данный, это будет несколько сложнее, придется заморочиться с системой мониторинга, но это круче чем ничего не делать и CI/CD опять же подключить можно. Второй вариант это просто скачать откуда то, тоже можно, почему нет, а можно скачать откуда то, а еще и парсить.
Наш следующий шаг правильно создать окружение тут нужны следующие инструменты на мой взгял: docker, git, github/gitlab, poetry + pyenv. И прописать установку окружения и в нем уже создавать свои контейнеры, которые можно запускать. Тот же парсер.
Теперь - рисерч. Допустим мы быстренько написали парсер уже у нас достаточные данные. Нам нужно почистить данные, проверсти тесты и убедиться что мы можем что-то прогназироватью. Сделайте презентацию какую то или дашборд по данным, что бы потом внедрить в мониторинг систему, я думаю это круто и в дальнейшем вам будет что показать.
И так после ричерча мы поняли, что данные очень волатильны и вообще непонятно что происходит с дисперсией, мы хотим использовать деревья для этого они нам дают прекрасный результат, они непараметрические и шумов у нас не так много в данных. Теперь мы будем строить пайплайн.
Что для этого нужно, помимо либ, которые вы используете в обучение: Соотвественно все перевести в скрипты, где каждый файл отдельный миниалгоритм pytest, pydantic для верификации данных и скриптов. Хотим мониторить обучение моделей и данных - WandB. Хотим что бы после изменения данных, пайплайн сам запускался - DVC.
Отлично, давайте посмотрим, что у нас есть:
docker и gitlab проект, так же у нас парсер, который сейчас все сохраняет в csv, какой то скрипт, который создает датасет. У нас есть скрипт по созданию дополнительных данных и чистке. У нас есть скрипт по обучению модели. Получение различных метрик и репортов. И какой то аля сохранение дашбордов в png.
Это, конечно, замечательно. Но как то хочется что бы оно само работало, да и вообще мы устали все вручную запускать через main.py так еще и забываем иногда парсер запускать.
Для этого нам нужно изучить CI/CD, GitLab CI, CLI и разобраться как пользоваться серверами. Допустим на Yandex Cloud.
Тут уже многое зависит от вас, как вы хотите все это сделать. Но что я могу посоветовать: MLOps у ODS и курс Yandex Practicum по Облокам
И так у в итоге кое как получилось создать сервер, теперь у нас парсинг запускается каждые 2 часа, после этого обучаются модели и мы получаем какие то output по метрикам и какие то png дашборды. Как то неправильно, мы хотим что бы вообще все работало автономно.
Теперь начинается наверное самое сложное - backend/ frontend.
И так во первых - нужно создать отдельно папку frontend/backend/database все они будут запускать 3 различных контейнера (в идеале):
Нам нужно знать REST API, gunicorn - что бы связать фронт и бек. А еще как то обращаться к БД. Я бы использовал FastApi для backend и react для фронта.
Теперь у нас есть фронтенд, который должен отсылать запрос к бекенду, бекенд отсылал бы ответ и реакт бы рендерил то что хочет пользователь, например наши дашборды. Они уже не PNG, а какая то динамично изменяющаяся картиночка.
А самое главное, даже если у нас ляжет сервер, так как мы использовали gitlab ci и gitops, мы сможем развернуть наш сервер без проблем на другом.
Возможно я упустил какие то точности и не претендую на лучшего эксперта фронтенда и бекенда, devops, но это то, что я изучал последние несколько недель, пришлось посмотреть достаточно много видос, особенно про gitops. Это не панацея, но на мой взгляд, так и нужно реализовывать проекты.
Еще советую linear.app!
Post #172
1.09K
- 🔥 13