company_banner

Машинное обучение — микроскоп современного ученого. Зачем ЦЕРНу технологии Яндекса

    В начале июля в нашем офисе прошел семинар, посвященный взаимодействию Яндекса и ЦЕРН. В понедельник мы опубликовали первую его часть — доклад Андрея Голутвина о новом эксперименте SHiP (Search for Hidden Particles). Вторая часть этого семинара была отведена Андрею Устюжанину о совместных проектах Яндекса и ЦЕРН.



    Андрей рассказал о применении технологий Яндекса в физике высоких энергий. В наши дни над экспериментами зачастую работает огроное количество людей из разных стран. Объединенная экосистема для автоматизации экспериментов может сделать работу исследователей более скоординированной и поможет решить множество других проблем. Единый интерфейс, онлайн-доступ к результатам других участников, система версионирования и возможность обмена библиотеками — все это может сильно упростить исследователям жизнь.

    Кроме того, в современной физике высоких энергий активно применяется машинное обучение. На основе тестовых выборок обучаются классификаторы, которые в дальнейшем определяют наличие тех или иных событий уже в реальных данных. При этом количество формул, которые может потребоваться обучить для одного анализа, достигает нескольких сотен или даже тысяч. Надо, однако, иметь в виду, что наши разработки применимы не только в этой сфере, но и в других отраслях науки. Этот доклад — скорее про исследования в целом, про процесс экспериментального подтверждения различных теорий, гипотез и моделей. С такими задачами обычно сталкиваются люди из научно-исследовательских организаций, но сейчас все чаще они возникают и в коммерческих компаниях.



    Сначала люди искали ответы на вопросы в умозрительных построениях, а потом проверяли свои гипотезы, используя различные инструменты и практические технологии: секундомеры, весы, линейки. В инструментарии экспериментатора такие инструменты имели значительный вес вплоть до недавнего времени.



    На картинке выше приведена фотография с пузырьковой камеры которая регистрирует движение заряженных частиц через среду, насыщенную парами водорода. Видно, что заряженные частицы оставляют за собой траектории — пузырьки. Одна из частиц выбила электрон из атома водорода — в электрическом поле он совершает заметные спиральные движения. Крестиками отмечено, какие траектории рассматривать, а какие — нет. Отметки сделал человек.



    Сейчас всё сложнее. Чтобы проверить гипотезу, проводят эксперименты стоимостью сотни миллионов и даже миллиардов швейцарских франков. Стоимость эксперимента — это не только аппаратная часть (прорыть туннель, поставить ускорители, установить детекторы, которые с нужной точностью будут регистрировать пролетающие заряженные или незаряженные частицы). Это еще и алгоритмы, позволяющие проанализировать накопленные данные и сделать достоверные выводы, а также технологии для хранения данных и их эффективной обработки. Таким образом, задача усложняется на много порядков по сравнению с тем, что было до недавнего времени.

    Схематично обрисуем то, что происходит в адронном коллайдере от регистрации столкновения заряженных частиц до публикации статьи. При анализе и обработке событий происходят следующие шаги.

    Здесь еще важно отметить, что физиков больше интересуют не конкретные события внутри детектора и то, как они протекают (например, что происходит при трансформации и взаимодействии частиц), а статистические характеристики происхождения определённого вида событий. Если физик пытается оценить популяцию некой страны, его интересуют число женщин, мужчин, людей определённой возрастной группы, то есть суммарные характеристики. Они могут подтверждать или опровергать определённые гипотезы.

    Например, стандартная модель предсказывает, что распад b-мезона на мюон-антимюонную пару происходит 3*10-9 число раз. Если вы проанализируете имеющийся объём событий и докажете, что это так, то стандартная модель справедлива. Если же выяснится, например, что события происходят на порядок чаще, значит, стандартная модель чего-то не учитывает. Это повод сделать заявку на новую физику. В ЦЕРН люди пытаются найти хоть какие-то отклонения от стандартной модели.

    Вернёмся к шагам. Сначала детектор генерирует поток данных. С частотой 40 миллионов раз в секунду соударяются пучки протонов. В результате соударений рождаются частицы, которые, в свою очередь, распадаются на что-то еще.



    Эти данные попадают в ферму обработки, которая работает в режиме реального времени. Ей надо успеть обработать поток входящих данных, пока порция от следующего соударений не заняла вычислительные мощности. Задача фермы — из всего потока событий (107 событий в секунду) выделить небольшую часть: 10-4, 10-3 или даже меньше. Это самые интересные события, в которых что-то происходит.

    Полученные результаты попадают в систему хранения — GRID. Так, эксперимент LHCb даёт 1010 событий в год. Каждое из событий весит примерно 100 килобайт. Бывает по-разному, конечно, в зависимости от того, считаются ли событиями сырые данные или только прошедшие обработку.

    Допустим, группа физиков решает проверить модель или гипотезу. Сначала они делают предварительную выборку данных. Из всего массива (1010 событий) по определенным параметрам выбирается какая-то часть, например, 105 или 106 событий. Это выборка.



    Вопрос сводится к тому, как можно оценить количество сигнальных событий в нашей выборке? Ну и затем можно ответить на вопрос, сколько всего сигнальных событий было в объеме? В итоге наша задача — оценить вероятность происхождения данного сигнального события.

    Выборкой можно распорядиться по-разному, то есть существуют разные методы анализа. Первый — это cut-based-анализ. Он заключается в том, что мы накладываем ограничения на некоторые характеристики событий: импульс, поперечный импульс, различные углы взаимодействующих частиц и т.д. Таким образом мы сужаем критерии, чтобы увидеть сигнальные события в выделенном регионе. Основываясь на том, какое количество событий попало в выделенный регион, мы пытаемся оценить, сколько событий есть во всем объёме.

    Когда ищутся относительно редкие события (например, события, происходящие с вероятностью 3*10-9), подходы типа cut-based работают не очень хорошо. Захватываются слишком большие области пространства, в которые могут попасть фоновые события, которые не имею отношения к тому, что мы хотим найти.

    Чтобы повысить точность метода, было предложено использовать технологии машинного обучения. С их помощью можно, обучившись на выборке (где мы точно можем сказать, что является сигналом, а что — нет), найти набор признаков. Эти признаки наилучшим образом — или с наибольшей достоверностью — описывают появление сигнальных событий.

    Чтобы получить данные для классификатора и построить модель машинного обучения, используют разного рода симуляторы. Они пишутся, строятся и настраиваются специальной группой физиков. Симуляторы позволяют сгенерировать события в количестве, достаточном для того, чтобы научиться отличать сигнал от фона.

    Мы строим классификатор, который позволяет выделить из объёма данных некоторую часть (область пространства). Мы можем определить, сколько событий попало в эту область из реальных данных. Далее происходит достаточно сложный процесс анализа оценок работы классификатора. В результате получается число или пара чисел: вероятность происхождения нашего события и достоверность происхождения этого события на нашей выборке.



    После утверждения анализа на рабочих группах и на внутренних проверках в ЦЕРН публикуется документ. В нем описываются все шаги анализа, которые были проделаны. Также публикуется статья в журнале.

    Есть важный момент, который не всегда, к сожалению, выполняется. Данные и код анализа — вся вычислительная часть — сохраняются в специальном репозитории. Это делается для того, чтобы к ним можно было вернуться. Важно уметь проводить исследования таким образом, чтобы к результатам можно было вернуться спустя, например, десять лет. За это время могут появиться новые, более продвинутые методы анализа. Они позволят получить более точные результаты на тех же данных.



    Постараемся схематично обозначить основные этапы. Есть область онлайн-обработки данных (это работа в режиме реального времени с большой производительностью). Есть область хранения и пост-обработки данных (инфраструктурная часть).



    Есть область, связанная с генерацией различных модельных событий. Есть пост-анализ данных, накопленных в GRID. Голубой цвет на схеме обозначает офлайн-анализ. Он происходит вплоть до получения нужных оценок, конкретных чисел, которые идут в публикацию. Последняя область — это репозиторий, сохранение данных и анализа для последующего воспроизведения. За эту область физики не получают никаких плюшек, поэтому они концентрируются на других областях.

    Звёздочками отмечены части, в которых задействованы системы и сервисы Яндекса. Это поиск и фильтрация событий (обработка и построение классификатора и его использование), а также сохранение данных. Над последним мы только начали работать. Мы вошли в рабочую группу по Data Preservation. Пока это сводится к модификациям тех сервисов, которые мы сделали раньше: поиск по событиям и сохранение результатов построения классификатора. Иначе — это история сравнения производительности разных классификаторов.

    В случае с SHIP перед нами открываются новые возможности. В этом эксперименте можно посмотреть, насколько технологии, используемые в Яндексе для построения распредёленных систем, соответствуют ожиданиям физиков.

    Модели вычислений


    Проведу короткий экскурс, посвящённый моделям вычислений и способам организации работы распределённой вычислительной системы.

    В левой части — суперкомпьютер БЭСМ-6, наверно, самый серьёзный после счётов вычислительный инструмент в истории человечества. С другой стороны мы видим персональные компьютеры, объединённые в сеть. За счёт организации совместной работы они могут получать результаты, превосходящие производительность суперкомпьютеров на тот момент времени.



    Второй этап — это появление возможности строить процессоры, объединённые друг с другом быстрой шиной внутри одного компьютера. За счёт этого повышается производительность. С другой стороны — системы, объединяющие много производительных компьютеров в вычислительный кластер. Компьютеры связаны друг с другом относительно устойчивым соединением с низкой задержкой и высокой пропускной способностью. Используя некоторые техники написания распределенных программ, можно также повысить производительность.

    Это некоторая спираль. Слева — этапы, связанные с централизованным развитием (наращиванием мощностей), справа — с децентрализацией (увеличение подобных сущностей). Прорыв в одной области (создание некоторого серьезного вычислительного ресурса) дает масштабирование этого ресурса на некоторое количество вычислительных единиц.

    С одной стороны суперкомпьютер (CRAY, Ломоносов, Beowulf), с другой стороны — модель распределенных вычислений GRID, которой в ЦЕРН сейчас очень активно пользуются. GRID появилась в середине 1990-х годов и с тех пор заметно выросла, но во многом сохранила заложенные в неё принципы. Для нужд коммерческих компаний такие системы, как GRID, были не очень востребованы. Это дало другое направление развития технологий — виртуализацию.

    Виртуализация — это возможность использовать ресурсы и вычислительные системы как сервисы, иными словами — облачные технологии. Сейчас появляются системы, позволяющие объединять друг с другом разные облака, координируя действия и передачу данных, тем самым позволяя увеличить производительность. Конечно, такая схема никак не может обойтись без Skynet в качестве финального этапа централизации ресурсов.

    Использование ресурсов GRID


    Если говорить о GRID, то стоит рассмотреть график загруженности того участка, который касается ЦЕРН. Есть моменты, когда нагрузка на ресурсы очень высока, и есть моменты, когда, по большому счету, ничего не происходит. Это циклы; конкретно на этом графике циклы «день-ночь», наверное, не очень видны, но есть самые разные колебания.



    Если нужно за короткое время провести большой объём вычислений, то на GRID это сделать непросто. ДЛя этого нужно будет специально настроить определенные машины, которые предоставит какой-нибудь университет или крупная компания типа Яндекса. Если необходимость много считать отпала, отказаться от использования кластера также не очень просто. Эта инерционность — свойство большой системы, отчасти обусловленное политическими или административными причинами. GRID — это своего рода федерация разных исследовательских организаций. Каждая из них по мере сил вкладывает ресурсы в общую систему. Получается, что вы оплачиваете работу вычислительных машин вне зависимости от того, какова сейчас степень нагрузки на GRID.

    Все входящие в GRID машины имеют общие интерфейс, набор программ и библиотеки. Но есть сложность. Если вы хотите использовать машины для решения задач, требующих особых библиотек, которых нет на GRID, вы не сможете этого сделать. Для настройки окружения на всех компьютерах требуются определенные действия администраторов.

    Облачные технологии


    Облачные технологии можно рассматривать как следующий шаг развития вычислительных систем. В число преимуществ виртуализации входят возможность оплаты за фактические вычисления, а также возможность использовать нужную именно вам конфигурацию.

    Можно совместить эти два направления. Если говорить про конкретные решения, которые используются в Яндексе (и не только — они распространены по всему миру) — это Cocaine, Elliptics, Docker, OpenStack и т.д. Технологий много, и задача — разобраться, какие из них лучше всего подходят для нужд физиков и исследователей.



    На картинке выше представлена схема работы YARN — Yet Another Resource Negotiator. «Yet Another» не имеет ничего общего с Яндексом. Модель использования ресурсов здесь достаточно гибкая и в то же время мощная.

    Для каждого клиента можно создать уникальное окружение для выполнения его задач. Вы как клиент запрашиваете у resource-менеджера необходимый набор ресурсов. Получив его, вы работаете с ним как с отдельным кластером (или отдельным набором машин).

    Вторая технология, применимая в контексте распределенных вычислений, — это Docker. Она позволяет упаковать ваши приложения, библиотеки и зависимости в отделяемый контейнер. Контейнер можно выполнить на любом компьютере. В Linux это все работает совсем хорошо, от него требуется только ядро и базовые библиотеки. С точки зрения администрирования Docker — простая и понятная вещь: он не требует специальных установок зависимостей и окружения. Единственное, что требуется, — это ядро с поддержкой определенной функциональности. Во всех дистрибутивах Linux это сложностей не составляет.

    Эксперименты по «скрещиванию» GRID и облака продолжают идти. Один из недавних примеров — Helix Nebula, проект, поддержанный Еврокомиссией. С одной стороны, в него входят несколько исследовательских учреждений, включая ЦЕРН и EASA, а с другой — коммерческие компании — провайдеры облачных технологий.


    Это пример одного из флагманских проектов для ЦЕРН, в котором моделирование Монте-Карло было сделано с использованием облачных технологий. Есть сервер распределения задач, для этой цели использовался фреймворк Panda. Виртуальные машины с образами Panda обращались к серверу, а результаты работы и входные данные они размещали в GRID-хранилище ЦЕРН. Размещение и управление виртуальными машинами осуществлялось из проекта Helix Nebula. Bluebox — это старое название этого проекта.

    Задачи


    Если суммировать задачи, которые стоят перед теми, кто строит модель вычислений для экспериментов, то это: симуляция событий (MC), поиск реальных и симулированных (MC) событий, онлайн- и офлайн-анализ, сохранение данных (интерфейс доступа) и сохранение кода и структуры анализа.

    Про онлайн-анализ я не рассказывал, так как я знаю о нем не так много, как хотелось бы. Отмечу лишь, что инфраструктура должна поддерживать обработку данных в режиме реального времени (данные поступают из эксперимента). Если сфокусироваться на конкретной задаче — анализе данных — то надо отметить, что это сложный процесс. В нем пересекаются много сущностей. Индикаторы сложности — это те проблемы, с которыми сталкиваются исследователи, вопросы, которые они задают сами себе. Возможно, кому-то из вас они покажутся знакомыми.
    • Каким способом я сгенерировал график «13»?
    • Новый студент хочет воспользоваться моделью, опубликованной мной 3 года назад, но я не могу воспроизвести ни одного графика.
    • Я думал, что использую те же параметры, но у меня получаются другие результаты!?!?
    • Где взять события, отобранные предыдущей версией моих скриптов?
    • Оно работало еще вчера!
    • Зачем я это сделал?

    Источники сложности: физика, работа с данными, стратегия анализа, шаги анализа, командное взаимодействие. Если все было бы просто, то проанализировать данные и написать статью смог бы один человек.

    Когда вы работаете со сложными физическими явлениями, вам нужно учитывать много нюансов — например, существует несколько разных моделей, объясняющих происхождение тех или иных явлений. В физике есть огромное количество таких моделей, и разбираться в них — большое искусство. Объем данных велик, и если вы в этих данных что-то меняете — появляется множество версий одного и того же файла.

    Стратегия анализа — это последовательность шагов, которые необходимо выполнить, чтобы получить некий значимый результат. Вытащить данные, заказать генерацию Монте-Карло, вытащить данные, вытащить нормировочный канал, чтобы сравнивать его с Монте-Карло, обучить один классификатор, обучить второй классификатор, применить классификатор к реальным данным, проверить его эффективность на боковых регионах, открыть центральную часть с самым интересным, оценить примерное количество событий в сигнальной части, посчитать, сколько их было в действительности. Целая история.

    Шаги анализа бывают разными и достаточно сложными. Например, для построения классификатора нужно провести множество проверок, прежде чем убедиться, что его можно использовать, как минимум, оценить качество, проверить, не переобучен ли классификатор. Над анализом работают множество людей, которые находятся в разных странах. Необходимо, чтобы они нашли общий язык и могли понимать друг друга.

    Экосистема экспериментов


    Мы считаем, что для противостояния трудностям необходима экосистема, поддерживаемая аппаратно-программной инфраструктурой. Она должна позволять проводить совместные исследования в данной предметной области. У вас есть стандартный набор инструментов, и эти инструменты привычны людям (ROOT, PyROOT).

    Важно обеспечить онлайн-доступ к тому, что делает каждый из участников команды, чтобы в случае необходимости поменять параметры. Должны быть критерии качества и инструментарий для их применения.

    Мы начали двигаться в этом направлении. В Яндексе мы сталкивались с подобными задачами, требующими участия большого числа исследователей. Например, при обучении формулы ранжирования поиска (в нем участвовали несколько сотен человек). Пока мы не научились автоматизировать значительную часть процесса, люди мешали друг другу, наступали друг другу на ноги, сравнивали апельсины с огурцами, делали одну и ту же работу. В итоге мы создали систему, которая автоматизирует проведение экспериментов, что показалось нам хорошей идеей.

    Система завязана на нашей внутренней инфраструктуре, и перебрасывать ее в другие области проблематично. Мы пытаемся сделать систему для физики с нуля, используя доступный нам инструментарий.

    Например, один из сервисов, которые мы предоставили ЦЕРН, Event Filter, построен вокруг Матрикснет — системы построения классификаторов. Изначально это был просто веб-интерфейс, позволяющий загрузить свои данные, обучить формулу и выгрузить формулу обратно. Оказалось, что это не очень удобно, так как формулы нужно обучать, оптимизировать на пространстве параметров. Для одного анализа может потребовать обучить несколько тысяч разных формул. Прокликивать все это руками невозможно. Поэтому мы сделали систему, оборачивающую доступ к Event Filter через Python, второй по популярности язык в физике высоких энергий.



    За счет объединения системы с Python стало возможным использовать в одном пространстве разные библиотеки (ROOT, Matplotlib SciKit-Learn, интерактивное отображение графиков).



    Так как мы использовали для работы IPython, все библиотеки и возможности слились для пользователя в одном интерфейсе. За интерфейсом, однако, скрывается несколько важных компонентов. Для пользователя это выглядит как веб-страничка, на которой доступны определенные модули. Он сам пишет эти модули и может их публиковать, чтобы ими могли воспользоваться и другие исследователи: библиотеки, распределенная среда для выполнения вычислений и система версионирования для сохранения промежуточных результатов. Для пользователя все это выглядит примерно так: страничка, на которой перемежаются код и результаты его работы, можно видеть, во что выливаются те или иные изменения.



    Школа анализа данных


    Среди студентов ШАД преобладают математики — их 70%. Далее идут физики — 25% и инженеры — 5%. Курсы, преподаваемые в ШАД, не очень сильно связаны с физикой, но у людей остается привязанность к основной специальности и они применяют в ней свои знания. Основные курсы ШАД: алгоритмы и структуры данных, машинное обучение, дискретная математика, теория вероятности, статистика, обработка текстов на естественном языке, теория графов.



    На даный момент кафедры ШАД есть МФТИ, МГУ, ВШЭ и других ведущих вузах. В этом году открылся факультет теоретической информатики в ВШЭ, есть аспирантура в МФТИ, ВШЭ. Сейчас открывается программа стажировок для студентов из европейских вузов.

    Вот небольшой пример исследования на стыке физики и машинного обучения:



    Тут происходит Анализ событий, небольшая подвыборка (105), из которой мы хотим понять: там присутствует только шум или шум + сигнал. Если есть сигнал, то надо выяснить, сколько этого сигнала. Когда мы пытаемся обучить классификатор, работе на сымитированных данных, важно, чтобы график распределения отобранных (по какому-либо порогу) сигналов в случае, когда классификатору дают только фон, имел примерно ту же форму, что и фон.

    Если окажется, что распределения фона до и после применения классификатора по какой-то переменной отличаются, то классификатор нельзя использовать для реального анализа, так как сложно оценить вносимую им систематическую погрешность.



    Заключение


    Сервисы, которые мы сейчас предоставляем ЦЕРН — это Event Index и Event Filter. Они могут быть востребованы и в новых экспериментах — в частности, в SHIP, который дает нам новое направление работы. У нас есть технологии, которые могут дать хорошую площадку для развития исследований.

    Сейчас мы умеем применять эти технологии для решения своих собственных задач, но нам интересно научиться применять их где-нибудь ещё. Это одно из направлений развития компании. Студентам ШАД по их профилю это направление тоже может показаться интересным.
    • +48
    • 18,9k
    • 2
    Яндекс 579,77
    Как мы делаем Яндекс
    Поделиться публикацией
    Комментарии 2
    • +1
      Весьма познавательно, спасибо.

      Однако, есть нюанс.

      Чтобы получить данные для классификатора и построить модель машинного обучения, используют разного рода симуляторы. Они пишутся, строятся и настраиваются специальной группой физиков. Симуляторы позволяют сгенерировать события в количестве, достаточном для того, чтобы научиться отличать сигнал от фона.


      Получается, что методами машинного обучения настраивается фильтр на те события, которые мы ожидаем увидеть (вычислив их заранее по стандартной модели). Как обнаружить события, которые мы не ожидаем увидеть? Должна решаться задача кластеризации без учителя? Понятно, что в связи с колосcальными объёмами информации пытаться выявить неожиданные закономерности — задача очень ресурсоёмкая, но ведь её тоже необходимо решать.

      Что скажете?
      • 0
        какие забавные ROC кривые )

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое