Выпускник ИТМО, PhD Виталий Аксенов: Писать не свое скучно, интереснее реализовывать свои идеи |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-10-16 14:57 Сотрудник факультета информационных технологий и программирования Университета ИТМО Виталий Аксенов окончил школу в 15 лет, а в 24 — получил PhD во Франции. Успешно выступить на защите ему помогло в том числе знание французского, который он начал изучать в профильной гимназии. Последние несколько лет Виталий работает в области параллельных вычислений и решает фундаментальные задачи по оптимизации структур данных. А в будущем, уже на позиции постдока, он планирует продолжить исследования в сфере параллельного машинного обучения в Австрии. Что такое структуры без ожидания и почему над их реализацией исследователи бьются уже 20 лет, как защитить PhD во Франции, даже если вам пришлось сменить научного руководители, и почему научные задачи интереснее работы в Facebook, Виталий Аксенов рассказал ITMO.NEWS. «Олимпиадами по информатике заниматься проще, если у вас есть хорошая математическая база» Я пошел в школу с пяти лет, но это не моя заслуга. Маме показалось, что мне было скучно в детском саду. Моей первой школой стала французская гимназия, поэтому я изучал французский достаточно долго. Но позже мама решила, что мне нужно заниматься математикой, поэтому я пошел в кружок Математического центра Президентского ФМЛ №239. У меня были не самые низкие показатели, поэтому в итоге я перешел в эту школу и забросил изучение французского. Когда я перешел в девятый класс, мама решила, что перспективы за программированием и надо подтягивать информатику. На тот момент она у меня была не самая сильная, поэтому я понял, что надо поехать на Летнюю компьютерную школу. Туда я попал с огромным трудом, потому что программированию меня практически не учили. Пришлось заниматься в дополнительное время с нашей учительницей по информатике, чтобы я смог сдать вступительные. В итоге я написал вступительную работу в ЛКШ на уровне D. Это не очень сильная группа, но в тот год впервые в школе организовали группу между C и D, группу С-штрих, где можно было быстро нагнать какую-то информацию. После этого я пошел на кружок по информатике в Университет ИТМО. А уже через год проскочил две группы и попал на ЛКШ в группу A-штрих. Думаю, что во многом мне помогла хорошая математическая база. В 10 классе я вышел на Всероссийскую олимпиаду по математике. Это помогло мне и в информатике: решать задачи по этому предмету все-таки проще, если есть математический бэкграунд. Тогда я не только решал олимпиадные задачи по информатике, но и с нуля сделал свою игру — летом, просто от нечего делать. Это была пошаговая стратегия. Знаете Age of Empires? В этой игре можно строить здания, развиваться, делать юниты — как в любой real time strategy. Но представьте, если сделать то же самое можно не в реальном времени, а пошагово, чтобы определенное действие можно было совершить за один ход? Так честнее и дает свободу пользователю: он может оценить ситуацию, понять, что происходит. По сути, как в шахматах, где можно обдумать ход наперед. Интересно, что таких игр до сих пор нет. По крайней мере, я не встречал. Оставить спортивное программирование и найти себя в науке Я окончил школу в 15 лет, тогда я не особо понимал, чем буду заниматься дальше. У меня был выбор между матмехом СПбГУ и Университетом ИТМО, но в случае с матмехом было не понятно, чем я буду заниматься дальше, а после окончания ИТМО перспективы были более очевидны. Кроме того, еще когда я ходил в кружок, познакомился с Павлом Мавриным (тьютор факультета информационных технологий и программирования, чемпион мира по программированию — прим.ред.), здесь сложилась более целостная, дружеская атмосфера. Уже поступив в университет, научной деятельностью я не занимался очень долго. В то время, вплоть до третьего курса, я занимался олимпиадным программированием, начинал с Ниязом Нигматуллиным (тьютор факультета информационных технологий и программирования, двукратный чемпион ACM ICPC — прим.ред.). Но в отличие от тех, кто много времени отдает только тренировкам, у меня был немного другой подход: я занимался программированием, ходил на тренировки а также посещал все пары и делал домашние задания. В какой-то момент я перегорел, и на финал так и не поехал. В итоге меня перевели сразу в члены жюри. Первым шагом в науку можно считать бакалаврскую, целью которой было определитель матрицы смежности графа-прямоугольника. По сути, это чистая математика. В магистерской я решил продолжить исследования в этой же области и развить тему. Мы сделали статью по бакалаврской, потом получилось сделать еще две статьи по магистерской и довести исследование до логической точки. Тогда же я начал интересоваться параллельным программированием. Еще на третьем курсе у нас были лекции от Романа Елизарова (разработчик языка Kotlin в компании JetBrains, эксперт в области многопоточного программирования, тьютор факультета информационных технологий и программирования Университета ИТМО — прим.ред.), и мне понравилась сама идея распределенных вычислений. А после пятого курса к нам приехал читать курс Умут Акар (Umut Acar), он рассказал о задачах в области параллельных структур данных. Тогда он искал аспиранта, и я решил, почему бы не попробовать, раз мне интересна эта тема. Так я вписался в аспирантуру. Как защитить PhD во Франции, даже сменив научного руководителя На тот момент Умут базировался во Франции, в INRIA, это национальный исследовательский институт, работающий в области компьютерных наук, теории управления и прикладной математики. Он позвал меня к себе на работу, а для моего факультета было бы полезно организовать совместную аспирантуру. Этот процесс был достаточно непростым, потому что INRIA — не вуз, он не выдает дипломы. Поэтому необходимо было зарегистрироваться в другом университете. В итоге в результате длительного процесса удалось организовать совместную аспирантуру с Университетом Париж 7 Дениса Дидро. Обучение в аспирантуре во Франции похоже на то, как было у нас раньше. Это сейчас у нас в аспирантуре действительно учатся, ходят на занятия, сдают экзамены. Там тебя, по сути, никто не трогает: ты можешь почти все время посвятить своей научной работе. Поэтому три года я занимался своим исследованием, во Франции я находился примерно восемь месяцев в год, а четыре проводил в Петербурге. Но в моей истории было не все так гладко: почти сразу мне пришлось сменить своего научного руководителя, так как он уехал в Америку, а работать таким образом было достаточно сложно. Поэтому по большей части я работал один. Но потом я познакомился с профессором Петром Кузнецовым (профессор T?l?com ParisTech, выпускникУниверситета ИТМО — прим.ред.), с которым получилось продолжить работу. Поэтому в итоге на защите у меня было три научных руководителя — Анатолий Абрамович Шалыто из Университета ИТМО, Петр Кузнецов и профессор Carole Delporte из Университета Париж 7, с которым была организована совместная аспирантура. Структуры без ожидания: почему над этой задачей исследователи бьются 20 лет Интересно, что в процессе работы Петр Кузнецов поставил мне задачу, которая является открытой уже около 20 лет. Суть ее в том, можно ли реализовать очередь без ожидания, иными словами систему, в которой каждый процесс завершает операцию за конечное число своих шагов. Представьте процессы, все они выполняют свои операции. Но что может произойти? Процесс пытается добавить элемент, но кто-то его постоянно опережает, и он не может это сделать. В итоге этот процесс фактически стоит и ждет. Это система с ожиданием. Без ожидания — это когда ему кто-то помогает и добавляет перед собой. Известно, как это сделать, используя такую универсальную операцию, как compare-and-swap (CAS), реализованную в большинстве процессоров. Но вопрос в другом: а что если взять не этот универсальный примитив, а несколько более упрощенный примитив, который, скорее всего, проще реализовать на физическом уровне. Над этой задачей исследователи бьются уже 20 лет и пока результатов нет. Зачем в целом все это нужно? По-хорошему все структуры данных должны быть без ожидания. Иначе процесс попросту простаивает, он не может продвинуться вперед, и мы не можем давать никаких гарантий на время работы — процесс может выйти через десять минут, а может быть, через час. К примеру, в ядерных реакторах так нельзя: здесь нужно все по расписанию, поэтому структуры без ожидания очень важны. Оптимизация структур данных и уменьшение синхронизации: как параллельные вычисления могут помочь ускорить многие процессы В самой диссертации у меня получилось несколько результатов. В целом моя работа состоит из пяти различных частей. Первая часть, которую я делал со своим первым научным руководителем, рассматривает именно параллельные программы. Как именно? Есть такая операция Fork/Join. Она подразумевает, что у нас есть две задачи и мы можем выполнить их в параллель. Безусловно, мы можем выполнить их последовательно, но тогда никакого выигрыша от запуска различных процессов не будет. Поэтому логичнее сказать: «Fork/Join, запусти мне эти задачи параллельно». Проблема в том, что каждый Fork/Join сколько-то стоит, то есть его вызов занимает сколько-то времени. Поэтому важная задача — определить, когда их нужно вызывать, а когда нет. Ведь если у вас две маленькие задачи, которые вы хотите запустить в параллель, то стоимость Fork/Join может просто перебить стоимость самих задач и вам будет выгоднее сделать все последовательно. Я занимался разработкой метода, который позволит автоматически определить, как сделать оптимальнее в каждом конкретном случае. У меня получилось разработать схему такого автоматического определения. Где это нужно? Параллельные программы на Fork/Join пишут все, они встречаются повсюду. Возьмите, например, любую игру — тот же CS:GO, где нужно как-то обработать пули при их столкновении с фигурой. Пуль много и хочется их обрабатывать быстрее, в ином случае, при последовательной обработке, мы теряем скорость. Параллельное программирование позволяет сделать все быстрее. И, по сути, это можно написать простым способом с помощью Fork/Join. Другие части моей работы были посвящены задаче оптимизации разных структур данных. Например, я занимался конкурентно оптимальным деревом поиска. Дерево поиска используется везде, например, в базах данных. Основной целью было ускорить эту структуру данных. Почему это необходимо? Если мы возьмем обычную последовательную структуру данных и в нее будут параллельно добавляться элементы, то может произойти что-то не то. Например, они будут добавлять одновременно информацию в одно и то же место, и одна операция попросту затрет другую. Именно поэтому нужна синхронизация: если один процесс уже добавляет данные, второй «видит» это, стоит и ждет. Я же, в свою очередь, попытался подумать, как сделать так, чтобы этой синхронизации стало меньше. Это фундаментальная задача, которая применима в разных областях, к примеру, в тех же поисковиках. Нужно ли для общения в научной среде знать не только английский На защите мне немного помог французский язык, который я когда-то учил в специализированной гимназии. Конечно, перед тем, как ехать во Францию, я еще походил на курсы, чтобы подтянуть разговорную часть. Потому что единственное, что я помнил со школы, — как читать тексты на французском, и читаю я неплохо. Во время защиты одна из членов комиссии сказала, что, если она будет говорить мне на английском, скорее всего, я ее не пойму и задала вопрос по-французски. В итоге я ей также ответил по-французски. И в результатах защиты PhD мне даже написали: «Он ответил хорошо на английском и французском языках». Но в целом я думаю, что сегодня для общения в научной среде и на международных конференциях и школах достаточно хорошо знать один английский. Даже во Франции сегодня молодые люди знают английский язык на хорошем уровне, а те, кто работает в научной среде, тем более. Перспективы после PhD Сейчас пока надо разобраться с документами. Но в перспективе я планирую поехать постдоком в Австрию, уже есть соответствующая договоренность с Дэном Алистархом (Dan Alistarh) из IST Austria. Он работает с очень интересными вещами, структурами данных, но конкретно к нему я еду, чтобы заниматься машинным обучением. Сегодня, наверно, все этим занимаются, но я хочу работать именно в области параллельного машинного обучения. Объяснить это несложно: есть обычное машинное обучение, где мы последовательно обучаем нейросеть. А теперь представим, что мы будем обучать ее параллельно. Как нам ускорить последовательное время работы, если у нас есть много ядер, например, 60? Необходимо придумать алгоритмы, которые будут позволять обрабатывать данные как можно скорее. В идеале — во столько раз, сколько у нас есть ядер. Конечно, это недостижимая цифра. Я считаю, что если на 60 ядрах можно будет достичь ускорения хотя бы в 20 раз, это будет прогресс. Я буду заниматься базовыми алгоритмами машинного обучения, например, градиентным спуском, который хочется распараллелить. И здесь я также буду работать над уменьшением синхронизации в известных алгоритмах машинного обучения. Почему научные задачи интереснее работы в Facebook Еще со школы больше всего в программировании меня привлекала возможность запрограммировать какие-то математические идеи. Как в науке: в голову приходит идея, например, как можно что-то оптимизировать, какой алгоритм можно придумать, а после она воплощается в жизнь. Когда ты работаешь программистом в компании, ты просто поддерживаешь продукт, делаешь довольно простые вещи и не пишешь какие-то сложные алгоритмы. Я работал некоторое время в индустрии: год провел в Mail.ru и стажировался три месяца в Facebook. Но это было далеко не самое полезное времяпровождение. Да, в индустрии прилично платят, но, на мой взгляд, это единственное преимущество. Задачи, которые ставятся в компаниях, не очень интересны, и, более того, ты сам не можешь выбрать себе задачу. Иногда везет с интересными проектами, но по большей части нет. В Facebook, например, я полтора месяца занимался только тем, что переписывал файл из одного формата в другой просто потому, что мне дали такое задание. В науке ты можешь придумать что-то новое, что может продвинуть всю сферу вперед. Писать не свое очень скучно, мне интереснее реализовывать свои идеи. Елена Меньшикова, редакция новостного портала Источник: m.vk.com Комментарии: |
|