Можно ли заставить суперкомпьютеры работать с максимальной отдачей? Об этом мы поговорили с заведующим кафедрой суперкомпьютеров и квантовой информатики МГУ Владимиром Воеводиным, который ведёт проект «Обеспечение эффективности суперкомпьютерных центров будущего на основе технологий обработки больших объемов данных и экстремальных вычислений», поддержанный ФЦП «Исследования и разработки по приоритетным направлениям развития научно-технического комплекса России на 2014–2020 годы».
- Владимир Валентинович, суперкомпьютеры – это всё же high-tech device. Почему в наш век высоких скоростей и технологий они оказываются для нас непостижимыми?
- Потому, что очень сложно устроена архитектура и отдельных процессоров, и суперкомпьютера в целом. Плюс все суперкомпьютеры имеют очень высокую степень параллельности. Десятки тысяч, сотни тысяч параллельно работающих процессоров – это уже норма. При этом возникает огромная проблема: как организовать алгоритм работы этой системы таким образом, чтобы всю её мощь использовать эффективно, не допуская ситуации, когда 100 тыс. процессоров ждут, пока один доделает работу. Работа должна быть аккуратно сбалансирована. Простоя быть не должно. Добиться этого – и есть наша задача.
- Интересно, что предполагали разработчики суперкомпьютеров, когда закладывали такой невероятный потенциал в свои машины? Понимали ли они, что потом никто с этим не разберётся?
- Предполагалось, что люди найдут способ, как с этим работать. Но на самом деле это обычная песня о том, кто управляет развитием компьютерной отрасли: те, кто производит машины, или те, кто ставит им задачи? С одной стороны, хочется сказать: ну, конечно же, эти акулы империализма предлагают свою архитектуру и совершенно не думают про то, как потом мы, бедные пользователи, всем этим будем управлять. Но это только полуправда, потому что развитие идёт с двух сторон. Производители видят потребности. Они понимают, что нужно считать всё больше и больше.
Модели усложняются, точность повышается, производительность растёт. А для того, чтобы обеспечить повышение производительности суперкомпьютеров, никакого другого способа, кроме как увеличение степени параллельности, не придумано.
Прошло то время, когда забесплатно, просто повышая тактовую частоту процессора, переходили от 500 МГц к 1 ГГц, а потом к 3 ГГц, в разы увеличивая производительность.
Сейчас тактовая частота практически не растёт, а растёт количество ядер, количество процессоров, вычислительных устройств, машин, которые могут работать вместе. И за счёт этого вот что получилось. Было, условно говоря, одно ядро – сделали четыре, производительность выросла вчетверо. А потом уже начали разбираться, как ядра будут общаться между собой и т. д. Вот последствия такого подхода сейчас и приходится расхлёбывать.
- Что вы можете сделать, чтобы повысить КПД суперкомпьютеров?
- Наша задача – предоставить такие средства, создать такое окружение, такой программный стек, который бы следил за тем, что делается в суперкомпьютере, и заранее предупреждал: здесь возникает очень много обменов, здесь конфликт, здесь перегрев, а здесь вообще пошла ошибка. Ошибки тоже возникают, причём на уровне аппаратуры. Но когда у вас один кабель, вы это сразу заметите. А когда, как в суперкомпьютере «Ломоносов», 5000 кабелей, и один из них начал давать сбой, то обнаружить «узкое место» получится далеко не сразу. Вот отсюда и нарастают все эти потери. Это всё нужно научиться отлавливать с учётом того, что мы имеем дело с огромной степенью параллельности, за которой ни один человек глазками уже не уследит.
Суперкомпьютер должен сам, с помощью специальных средств, отслеживать своё здоровье и выдавать всем целевым группам пользователей рекомендации по профилактике и лечению в доступной форме.
- У вас есть какие-то наработки, задел для решения этих задач? Или пока это только идеи?
- Какие-то наработки есть. Что-то на уровне полуфабрикатов, а что-то уже можно использовать. Но программного окружения как законченного инструмента пока нет. На самом деле, не так просто понять, что же требуется для того, чтобы предоставить всю необходимую информацию в понятном виде и обычному пользователю, и системному администратору, и руководству. Пользователю ведь не важно, как это всё устроено, на основе каких моделей работают эти программы. Но ему важно, где и какая возникла проблема и как её устранить.
- Что в итоге будет представлять собой ваш продукт? Это будет программный комплекс?
- Да, это будет программный комплекс, состоящий из набора отдельных компонентов. Один будет следить за «железом», другой - за программами пользователей, третий - заниматься аналитикой, поскольку собирается огромный объём данных, четвёртый – предсказанием, чтобы заранее предвидеть вероятные проблемы. Надо подчеркнуть, что объём данных действительно большой. Мы прикидывали, что для машины порядка «Ломоносова» получается поток приблизительно 120 Мб в секунду. Это очень много. За день набегают уже гигабайты, за год – петабайты. Каким образом вынимать оттуда полезную информацию, это отдельный вопрос и отдельная технология.
Она найдена, придумана, и мы её сделали. Вроде бы, сейчас это работает.
- То есть система сама будет и проводить мониторинг эффективности работы всех компонентов, и выявлять сбои, и принимать решения по их устранению?
- Система, конечно, будет работать в автоматизированном режиме. Тот интеллект, который у нас есть, мы туда заложим. Но конечные решения всё равно будет принимать администратор.
В некоторых случаях, и мы на это втайне надеемся, решения будут приниматься автоматически.
- Существуют ли в мире технологии, аналогичные тем, которые вы планируете создать?
- В той полноте, как мы задумали, нет таких оболочек, которые отслеживали бы сразу всё: и проблемы пользователей, и проблемы программного обеспечения на суперкомпьютере, и проблемы самой аппаратуры. Более того, эта задача настолько масштабная и актуальная в мировом контексте, что здесь правильнее говорить не столько о международной конкуренции, сколько о взаимодействии.
Мы сотрудничаем со всеми основными суперкомпьютерными центрами и коллективами в мире, а также с учёными, даже несмотря на нынешнюю турбулентную обстановку по отношению к России. Им интересно с нами, а нам интересно с ними. Эти связи крайне важны, потому что силами одной команды решить столь сложные задачи трудно, нужен такой «коллективный разум», чтобы друг друга подпирать.
-На каком этапе сегодня находится ваш проект?
- У нас есть хорошее понимание того, как должен быть устроен этот программный комплекс. Мы уже сделали прототип системы мониторинга, который позволяет посмотреть, успеваем мы обрабатывать этот поток данных, справляемся ли мы с этими терабайтами, гигабайтами и петабайтами, и можем ли мы что-то содержательное оттуда вынимать. Есть примерная идея того, как должна быть построена система с ориентацией на пользователя, на системного администратора и так далее. Есть понимание, как должна быть устроена та самая аналитика, которая из моря данных вынимает то полезное, что потом можно трансформировать на язык, понятный пользователю. Т. е., с одной стороны, мы представляем, как всё это должно выглядеть, а с другой стороны, уже делаем первые шаги в апробации своих разработок.
- Что осталось сделать?
- Впереди самое интересное! Сделать, чтобы это работало и чтобы потом использовалось. Ведь если нашим «классным инструментом» никто не будет пользоваться, значит, мы сделали что-то не то. Поэтому всё это нужно повернуть в сторону человека.
- Допустим, вам удалось реализовать задуманное и вы создали инструменты, при помощи которых резко повысился КПД суперкомпьютеров. И что? Быстрее будут происходить расчёты? Можно будет решать какие-то более сложные задачи?
- Ну, тут ответ достаточно простой. У нас очередь заданий на «Ломоносове» такова, что людям приходится стоять сутки-двое. Вот ускорили мы работу пусть даже в 5 раз: был 1, а станет 5% КПД. Это означает, что надо будет ждать не сутки, а всего лишь несколько часов. Точно так же, когда планируется расширение суперкомпьютерного комплекса. Можно вложить в 10 раз больше денег в покупку в 10 раз более производительного суперкомпьютера, а можно в 10 раз повысить эффективность приложений. И результат будет тем же.
- Заставить суперкомпьютер работать с большей отдачей – это здорово. Но мне почему-то кажется, что разработчики всё равно вас будут немножко опережать. Каков ваш прогноз: кто победит в этой гонке?
- Я думаю, что вы правы в данном случае. Предположим, что мы научились каким-то образом жить с теми «железками», которые нам отдают разработчики. Или же они научились прислушиваться к нам, и делают то, что нам понятно. Но вот эта потребность в вычислениях неистребима, и она будет существовать всегда. И любой новый шаг по совершенствованию системы вычислений будет вызывать у пользователей некоторые проблемы. Казалось бы, только-только мы научились использовать многоядерные процессоры, а уже появились ускорители – графические процессоры от NVIDIA и сопроцессоры от Intel. Это же совершенно другая технология программирования должна быть! В общем, пока не видно того, что этой гонке когда-нибудь придёт конец.
- В названии вашего проекта есть фраза: «суперкомпьютеры будущего». Вообще как вы себе представляете это будущее, и когда оно наступит?
- Будущее, о котором мы говорим в проекте, наступит через 5–7 лет, когда все компьютерные устройства будут сверхпараллельными, что заставит менять весь стек программного обеспечения. Это значит, что все программисты, которые пишут ПО даже для таких устройств, как мобильные телефоны, не говоря уже о суперкомпьютерах, должны будут владеть этими технологиями, понимать, как они устроены и как с этим жить.
Поэтому все разрабатываемые нами средства заодно примеряются и к устройствам будущего с огромной степенью параллельности, чтобы потом не пришлось всё это заново повторять.
- Что от этого выиграет пользователь? Что должно измениться, к примеру, в моём телефоне, который, кстати, меня устраивает, чтобы он стал для меня более полезным?
- Вам только кажется, что вас всё устраивает. Пять лет назад вы, наверное, тоже думали, что всего хватает, но теперь же не готовы отказаться от современных телефонов в пользу устройств пятилетней давности. Простой пример: вы делаете фото какого-то цветочка, потом отправляете в Google и спрашиваете: а чего это я сняла? Он сканирует миллионы цветочков, находит что-то похожее и говорит, что, наверное, это гладиолус. Со временем подобные сложнейшие вычислительные задачи, как сравнение тысяч и миллионов объектов, будут делать обычные устройства в оффлайн.
- Ещё один вопрос из области прогнозов. Будет ли когда-нибудь «компьютер будущего» обладать интеллектом, схожим с человеческим разумом?
- А какой смысл вы в это вкладываете? Когда компьютер начнёт творить? Когда у него проснётся интуиция? Когда что именно произойдёт? Многие решения суперкомпьютер и сейчас принимает автоматически. Конечно, он делает только то, чему его научили. А как он будет новые знания получать из набора имеющихся – это некий вопрос. Его научили реагировать на эту, эту, эту и ту ситуацию, но не научили на другую, хотя она похожа. Как ему сообразить, что вообще он тут должен тоже принять достойное решение?
Это, конечно, интересная тема, но не совсем из нашей области, хотя мы много чего по ней смотрим и читаем. Казалось бы, интуиция – это вообще такое человеческое понятие. Но почему оно человеческое? Интуиция – это всего лишь вывод из того, что у тебя было, с лёгкой проекцией на перспективу. Поэтому если научить компьютер структурировать то, что у него есть, и попытаться объяснить, как из построенной структуры сделать ещё шаг, чтобы не в пропасть попасть, а сделать разумное решение, то вполне можно привить ему и интуитивное мышление.