<style> .reveal { font-size: 28px; } /* .reveal p { text-align: left; } */ .reveal section img { background:none; border:none; box-shadow:none; } v=1.1 </style> # Воспроизводимость, трекинг и сравнение экспериментов Глеб Ерофеев DMIA Production ML :rocket: весна 2021 [TOC] --- ## Почему нужна воспроизводимость * Наука и научный метод * Постановка эксперимента в науке * Дизайн эксперимента * Принятие/непринятие гипотезы или новый эксперимент * Как это применимо в реальных ML системах --- ## Примеры когда воспроизводимость выручает * Пример: Выход на продакшен * Создали и обучили модель * Проверили локально - все ок * Выкатили на прод - все запускается * Пользователи не довольны - не то * Сравниваем локальную модель с продакшен - результаты по метрике разные * Пример: Проблема в продакшен * Новый сценарий, которого не было при создании модели. На нём модель ломается в продакшен. * Что бы исправить, нужно воспроизвести и отладить проблему в Dev окружении --- ## Что мешает воспроизводимости и как с этим бороться * Фиксируем данные (на которых учим модель) * Фиксируем random state - везде где это применимо * Фиксируем фичи (и пайплайн их подготовки) * Фиксируем модель (обучение и инференс) * Фиксируем код обучения и инференса * Фиксируем окружение (библиотеки и их версии) NB: некоторые операции в GPU CuDNN не детерминированны по умолчанию - эту настройку необходимо фиксировать (https://towardsdatascience.com/reproducible-model-training-deep-dive-2a4988d69031) * pytorch ```torch.set_deterministic()``` * tensorflow ``` pip install tensorflow-determinism; export TF_DETERMINISTIC_OPS=1 ``` * Особенности работы на кластере --- ## MLOps vs Управление моделями vs Управление экспериментами ![](https://i.imgur.com/DX4ADno.jpg) --- ## Инструменты помогающие обеспечить воспроизводимость * [Optuna](https://optuna.readthedocs.io/) - нет визуализации, удобно для персонального использования * [MLFlow](https://mlflow.org/) - если готовы к DevOps * [Neptune](https://neptune.ai/) - Хорошее решение из коробки (для команды нужна платная версия) * [W&B](https://www.wandb.com/) - Хорошее решение из коробки (сравнимо с Neptune) * [Tensorboard](https://www.tensorflow.org/tensorboard) - Для персонального использования * [Kuberflow](https://www.kubeflow.org/) - если вы на GCP * [SageMaker](https://aws.amazon.com/blogs/aws/amazon-sagemaker-studio-the-first-fully-integrated-development-environment-for-machine-learning/) - если вы на Amazon [Сравнение](https://neptune.ai/blog/best-ml-experiment-tracking-tools) --- ## Пример использования ``` # Регистрируемся на neptune.ai, получаем токен !pip install neptune-client import neptune neptune.init(project_qualified_name='my_workspace/my_project', api_token='', Ваш токен ) # Определяем параметры - например для RFC из sklearn: params = {'n_estimators': 10, 'max_depth': 3, 'min_samples_leaf': 1, 'min_samples_split': 2, 'max_features': 3, } # Создаем эксперимент neptune.create_experiment(name='my_study', params=params) # Пришем метрику neptune.log_metric('train_f1', train_f1) neptune.log_metric('test_f1', test_f1) # После завершения эксперимента - закрываем проект (Если запускали из notebook) neptune.stop() ``` --- ## Резюме * Воспроизводимость * Данные * Рандом стейты * Код * Гиперпараметры * Результат - метрики * Трекинг экспериментов * Оценка качества моделей - метрики и параметры * Подбор гиперпараметров * Тестирвание моделей в стейдж и продакшен --- ## Семинар * Регистрируемся на neptune.ai * Получаем код * Воспроизводим эесперимент на готовом ноутбуке (очистка + TFIDF + LogReg) * Расширяем возможности трекинга * Задание - анализ и подбор параметров
{"metaMigratedAt":"2023-06-15T18:11:25.773Z","metaMigratedFrom":"YAML","title":"Воспроизводимость, трекинг и сравнение экспериментов","breaks":false,"slideOptions":"{\"theme\":\"white\",\"transition\":\"slide\"}","contributors":"[{\"id\":\"e0bc91de-98f7-46f8-a3a9-852912833a93\",\"add\":106,\"del\":47},{\"id\":\"38b0f324-6648-4b08-b1c3-8bc762b8ab7b\",\"add\":9592,\"del\":5717}]"}
    284 views
   Owned this note