Skip to content

Сервис для предсказания популярности паролей

Notifications You must be signed in to change notification settings

Lisstrange/password_complexity

Repository files navigation

Password complexity


Сервис для предсказания популярности паролей

Источники

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


Описание проекта

Данный репозиторий представляет собой: Ml архитектуру + базовый flask софт
Главная задача проекта - сделать ml архитектуру, которая будет:

  • Автоматизированной - модель должна самостоятельно принимать на вход данные и автоматически выдавать ответ.
  • Гибкой - модель можно менять, дополнять без каких-то проблем.
  • Надёжной - модель должна устанавливаться и работать без каких-нибудь ошибок. В процессе....
  • Стабильной - модель должна выдавать периодически одинаковый результат на тестовых данных. Обновлённая модель не должна сильно отличаться от предыдущей. Данные должны иметь одинаковыве распределения и не менятся со временем. В проессе..

Реализация:

В качестве реализации я использовал Pipeline архитектуру. Главный плюс данного выбора - он проще в реализации и гораздо удобнее в его изменении, так как каждый метод пайплайна изолирован и никак не связан с остальными. Каждый отдельный скрипт я писал в отдельном python файле и импортировал эти методы как кастомные библиотеки с помощью setuptools. Всю методы я обернул в один Pipeline из библиотеки sklearn в отдельный файл pipeline_structure.py. В pipeline_structure.py написана готовая архитектура, которую мы можем изменять независимо от других методов. На данный момент в стрктуре пайплайна реализовано 2 первых конечных процессов из 3; bench Данный пайплайн проходить через байесовский алгоритм подбора гиперпараметров OptunaSearchCV. Мы можем самостоятельно указывать пространство признаков пайплайна в файле hyperparameters.py. Данный файл импортируется во время обучения модели. Для обучения модели использовалась метрика RMSLE Score. Так как данная метрика не предоставляется в библиотеке sklearn , я создал отдельный файл с реализацией кастомных метрик и оптимизацией их под метрики sklearn в файле metrics.py. Для каждого пайплайна я сделал возможность обращения через argparse. Каждый метод можно протестировать отдельно. Обученная пайплайн архитектура с нужными гиперпараметрами и весами сохраняется в формате joblib.

Для реализации базового приложения испоьлзовал библиотеку Flask. На данный момент приложение app.py может предсказывать частоту встречаемости пароля через Post запрос и так же она может дообучиться через фронт оболочку;


bench


Требования:

  • python 3.9.0+
  • poetry

Установка:

  • клонируем репозиторий
  • в терминале проекта прописываем команды:
make requirements
make downloads
poetry run python password_complexity/app/app.py
  • скопировать ссылку в терминале и вставить её в любой браузер

Установка через Docker:

Данный контейнер есть на DockerHub, вы можете запусть его с помощью команды

docker run -p 9095:5000 lisstrange/password_complexity

Вы можете просто собрать контейнер и запустить его , пробросив нужные порты:

docker build -t password_complexity .
docker run -p 9095:5000 password_complexity

Либо, вы можете просто воспользоваться docker compose:

docker compose-up

About

Сервис для предсказания популярности паролей

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published