Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Стэк для машинного обучения на исходном коде

Стэк для машинного обучения на исходном коде

Вадим Марковцев (Lead Engineer, Machine Learning at Sourced.Tech) @ Moscow Python Meetup 55

"Машинное обучение на исходном коде (MLoSC) - новая и интересная область исследований, которая расположена на пересечении глубокого обучения, майнинга, работы с естественными языками, социальных наук и программирования. Мы накопили петабайты исходников и историей разработки в открытом доступе, и в то же время было предпринято очень мало попыток использовать весь невероятный человеческий опыт, который в них заключен. Доклад делает обзор текущего состояния дел в MLoSC и рассказывает о доступных инструментах на Python и некоторых примерах их использования, таких как "глубокое" предсказание кода и структурные эмбеддинги для масштабируемой дедупликации".

Видео: http://www.moscowpython.ru/meetup/55/ml-on-source-code/

Moscow Python Meetup

April 24, 2018
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Обнаружим похожий код • По стилю • По структуре •

    По именам И получим Глобальный граф  Лицензии  Рефакторинг
  2. • Предсказание имен классов, функций, переменных • Предсказание типов •

    Какие комментарии бессмысленны? • Какие комментарии прикольные?
  3. Откуда брать данные • GHTorrent - все кроме самих репозиториев,

    70GB • Public Git Archive - репозитории, 3TB • GitHub в Google BigQuery • rovers & borges - DIY
  4. PGA индекс • URL • FILE_COUNT • LANGS (байты, строки,

    файлы) • COMMITS_[HEAD]_COUNT • BRANCHES_COUNT • LINES_COUNT (пустые, комментарии, код) • LICENSE
  5. source{d} engine • Чтение siva для Spark • Классификация и

    парсинг • Открытый код - лицензия Apache • GitHub
  6. source{d} engine >>> from sourced.engine import Engine >>> engine =

    Engine(spark, "/path/to/siva/files", "siva") >>> engine.repositories.references.head_ref \ .commits.tree_entries.blobs \ .classify_languages() \ .select("blob_id", "path", "lang") \ .show()
  7.  Universal AST • Более-менее одинаковая структура • Более-менее стандартные

    роли узлов • Прикидывается XML (XPath запросы) • 4 варианта обхода dashboard.bblf.sh
  8. Интеграция >>> engine.repositories.references.head_ref \ .commits.tree_entries.blobs \ .classify_languages() \ .filter('lang =

    "Python"') \ .extract_uasts() \ .query_uast('//*[@roleIdentifier]') \ .extract_tokens("result", "tokens") \ .select("blob_id", "path", "tokens")
  9. Хотелки  Автозагрузка моделей из интернета  "Магазин моделей" 

    Вменяемый, современный формат (не HDF5)  Версионирование  Воспроизводимость  Поддержка разных ЯП
  10. Modelforge  Автозагрузка моделей из интернета  "Магазин моделей" 

    Вменяемый, современный формат - ASDF  Версионирование  Воспроизводимость  Поддержка разных ЯП GitHub