<style> .reveal { font-size: 28px; } </style> ## Команда $kas-kir [TOC] --- ## Часть про ML :robot_face: Вначале - про машинное обучение --- ### Предобработка текстов :spiral_note_pad: - stemming, lemmatization - stop words - plural form - pos tagging https://www.machinelearningplus.com/nlp/lemmatization-examples-python/ --- ### Обучение эмбеддингов :table_tennis_paddle_and_ball: - Основной подход: **[Word2Vec CBOW](https://towardsdatascience.com/the-three-main-branches-of-word-embeddings-7b90fa36dfb9)** (Fasttext CBOW показал себя хуже) - Библиотека: **Gensim** - model.train(update=True) - Побдор параметров: - vector_size = 100 - window_size = 10 - min_count = 5 - epochs = 15 - Оценка моделей: - метрики из коробки (есть минусы) - просмотр логов --- - Оценка моделей ![](https://i.imgur.com/cGYKm6E.png) --- ![](https://i.imgur.com/yuMGKoS.png) --- ### Логика загадывания слова :satellite_antenna: - Какую логику загадывания слова вы реализовали? - две Skipgram модели (Fasttext и Gensim) - учитываем фильтрацию - убираем однокоренные и похожие слова - сначала добавляем по два слова из каждой модели, потом все остальное - Какие идеи вы попробовали? - давать похожие на однокоренные слова - использовать простую модель - Как вы оценивали эффект от идей? - метрики Gensim + логи раундов + human opinion --- ### Логика отгадывания слова :headphones: - Какую логику отгадывания слова вы реализовали? - две Skipgram и две CBOW модели с разной предобработкой последовательно меняют друг друга - модели подстраховывают друг друга - минимум предобработки - Какие идеи вы попробовали? - одна сильная модель с разными параметрами - модель с N-grams с похожим набором букв (но не однокоренная) - Как вы оценивали эффект от идей? - метрики Gensim + логи раундов + human opinion --- ### Валидация созданного решения :thinking_face: - Как измеряли качество решений? - evaluate_word_pairs - evaluate_word_analogies - Как выбирали лучшее решение? - логи раундов - стабильность --- - С чем были основные сложности? - автоматизация (токены окружения, CI скрипты) - воспроизводимость - работа с черным ящиком (Docker, Gitlab CI) --- ## Часть про MLOps :exploding_head: Теперь про разработку и MLOps --- ### Разработка :clapper: - Разработка велась **локально** - Основные инструменты: **Docker, Heroku, Neptune, Gitlab CI** - Какие тесты написали - работоспособность модели - порог качества модели --- ### Среда выполнения, окружение и воспроизводимость :scroll: - Среду выполнения и окружение зафиксировал локально - Не версонировал данные и модели, метрики визуализировал в Neptune --- ### Архитектура :cloud: ![](https://i.imgur.com/1IJVTgu.png) --- ![](https://i.imgur.com/xJbI3r3.png) --- ML Pipeline ![](https://i.imgur.com/JeqV18n.png) --- Dockerfile.app ![](https://i.imgur.com/gcUx9OC.png) --- Сервис на heroku ![](https://i.imgur.com/pGiiJVa.png) --- CI/CD ![](https://i.imgur.com/jSjItpe.png) --- ### Точки роста - версионирование данных и моделей - тестирование, мониторинг деплоя и поломок --- ## Главные выводы :roller_coaster: - done is better than perfect - Лучше работать в команде - ML Engineering - это возможно ![](https://i.imgur.com/vCbuzNX.png) --- ## Спасибо за курс!
{"metaMigratedAt":"2023-06-16T03:43:49.879Z","metaMigratedFrom":"YAML","title":"Рассказ о решении соревнования по игре в шляпу","breaks":true,"description":"View the slide with \"Slide Mode\".","slideOptions":"{\"theme\":\"white\",\"transition\":\"slide\"}","contributors":"[{\"id\":\"01ba2d0e-af74-4d6b-9541-9eec9d1eb766\",\"add\":2706,\"del\":2126}]"}
    154 views