АКАДЕМИЯ ОС.ИТ-университеты
Юрий Матвеевич Баяковский возглавляет лабораторию компьютерной графики и мультимедиа на факультете ВМиК МГУ им. М.В. Ломоносова и является основателем отдела машинной графики в Институте прикладной математики РАН им. М.В. Келдыша, а ACM SIGGRAPH официально признала его «пионером машинной графики» -- фактически именно он создал в нашей стране это направление компьютерных наук. Сегодня Баяковского волнуют, в частности, вопросы организации подготовки специалистов, способных работать на современных параллельных высокопроизводительных системах, однако в ходе беседы с ним была поднята и более широкая тема новой роли информатики в современном мире.
- Какова сегодня ситуация с развитием информатики и программирования в мире и в России?
Третий девиз академика Николая Доллежаля гласит: «если можешь, иди впереди века, если не можешь, иди в ногу с ним, но никогда не отставай», но как узнать, где ты оказался – впереди, вровень или позади века?
С моей точки зрения, развитие информатики сегодня определяют два фактора. Во-первых, это закон Мура -- за 60 лет производительность компьютеров выросла в 100 млрд раз; выпущенная в 1955 году ЭВМ «Стрела» имела быстродействие 2 KFLOPS, а сегодня скорость современных машин достигает 200 TFLOPS. Другим, внешним, фактором является расширение сферы применения компьютеров, захватывающей все новые области: транспорт, биомедицина, медиа и т.д., генерирующие все больше данных. Результатом только одного эксперимента в биологии может быть гигабайт данных в день, а в астрономии автоматический сбор данных порождает более терабайта данных за ночь. В 2003 году было произведено 5 экзабайт новой информации, а в 2010-м ожидают уже 988. Именно второй фактор и определяет сегодня развитие информатики.
В истории развития компьютерных приложений можно выделить эпохи по 25 лет: 1950-1975 годы, появление первых ЭВМ -- эпоха научных вычислений, движущей силой которых были создание атомного оружия, исследования космоса; 1960-1985 годы – эпоха бизнес-вычислений, АСУ, АСУТП, САПР и баз данных; 1970-1995 годы – эпоха распределенных решений, систем разделения времени, Интернет; 1980-2005 годы – персональные вычисления, архитектура клиент-сервер, локальные сети; 1990-2015 годы – развитие Всемирной паутины, электронная коммерция, grid; 2000-2025 годы – компьютеры, взаимодействующие с окружающей средой, развитие за счет совершенствования интерфейсов, мобильное и интерактивное телевидение, домашние сети. И, наконец, ближайшее будущее, 2010-2035 годы – бионический компьютинг, взаимопроникновение компьютеров и биологии.
Этой классификации соответствуют волны технологического развития. С 1970 года шла системо-центрическая волна, связанная с развитием системного ПО. С чего начинали программисты? С кодирования формул, которые составляли для них математики и физики. С появлением языков программирования характер работы программиста изменился -- начало развиваться системное программирование, создавались операционные системы, компиляторы и т.д. В начале 70-х годов в вузах появились факультеты вычислительной математики и кибернетики, а системное программирование стало учебной дисциплиной. Вся эта деятельность была связана с научными вычислениями. Пик ее развития приходится примерно на 1975 год, именно к этому периоду относятся наиболее значительные отечественные разработки в области программирования. В 1980 году началась следующая, ПК-центрическая волна, в которой мы уже участвовали только как пользователи. Следующая, сете-центрическая волна шла с начала 90-х годов, а сейчас идет контент-центрическая волна, связанная с науками о жизни. С каждой новой волной количество вовлеченных в нее специалистов возрастало.
Однако в России сегодня другая тема номер один в области информатики. В сентябре 2009 года в Санкт-Петербурге проводился форум «Наука и общество», посвященный ИТ, и большинство обсуждений на нем, так или иначе, сводились к параллельным вычислениям и суперкомпьютерам. Академик Евгений Велихов говорил о том, что [I]«требуется ускоренное развитие суперкомпьютерных технологий на принципах единого государственного целеполагания, управления, финансирования и персональной ответственности»[$]. Но проблема в том, что для применения суперкомпьютеров в стране практически нет задач, и хотя Велихов приводил примеры из гидро-, аэродинамики, сейсмики и др., все это старые проблемы, и непонятно, что им даст суперкомпьютер. Действительно, академик Радий Илькаев, научный руководитель Российского федерального ядерного центра в Сарове, в одном своем интервью отмечал, что [I]«без суперкомпьютера невозможно совершенствование ядерного оружия, есть еще несколько важных задач в авиастроении, климатологии, атомной энергетике, но в целом суперкомпьютеры российской наукой не востребованы»[$]. Меня это как раз и беспокоит — руководство страны подталкивают к отчислению огромных средств на отечественные суперкомпьютеры, а в итоге деньги будут потрачены, но результатов не будет.
Необходима постановка стратегических задач национального масштаба. Барак Обама выделил на развитие информационных технологий 37 млрд долл., предварительно четко определив ключевые области инвестиций: компьютеризация ведения медицинской документации, создание «умных» электросетей, расширение доступа к высокоскоростному Интернету для сельского населения. Материальные вложения в эти технологии будут преследовать вполне понятные, обоснованные цели, а у нас же выделяются миллионы на суперкомпьютеры вообще, и нет критериев проверки результативности этих затрат.
- Какие задачи возникают с точки зрения подготовки специалистов в связи с суперкомпьютерным бумом?
Министр образования и науки РФ Андрей Фурсенко замечает, что [I]«вокруг суперкомпьютеров сегодня спекуляций больше, чем дел. На практике же для суперкомпьютеров есть ограниченное количество задач»[$]. И в этих условиях, например, в МГУ говорят о том, что надо просто учить студентов работать на параллельных машинах. Зачем? Какое-то количество специалистов необходимо учить, но я хочу подчеркнуть, что суперкомпьютер – изделие индивидуальное. Для Сарова они должны быть одни, для задач моделирования климата – другие. Это не массовое производство, а штучный продукт, и работать на них будут также «штучные» специалисты.
Есть и другая проблема -- многоядерные компьютеры, поступающие сегодня к массовому пользователю, но он не будет упражняться в параллельном программировании, поэтому задача системных программистов в том, чтобы превратить многоядерные компьютеры в доступное средство, которое сможет эффективно использовать специалист в конкретной прикладной области, а не программист. Мы должны готовить разработчиков новых системных инструментов, упрощающих использование многоядерных платформ.
Известно, что на задачах информатики при увеличении числа ядер свыше восьми производительность падает и для таких компьютеров должен измениться сам характер программирования. Если приспосабливать к многоядерной платформе последовательную программу, то надо анализировать, какие ее участки вообще не распараллеливаются. Согласно закону Амдала, если половина программы не распараллеливается, то увеличить производительность можно не более чем в два раза, сколько бы ядер вы ни взяли. Поэтому необходимо создание масштабируемых системных инструментов, которые смогут автоматически обеспечивать ускорение решения задачи при увеличении числа ядер.
Таким образом, есть параллельное аппаратное обеспечение, есть его потребители, но между ними «провисающий мост» – программное обеспечение, которое пока остается слабым звеном. Если мы не найдем эффективное ПО, которое свяжет эти две составляющие, пропадает смысл использования параллельных платформ. Именно для этого и нужно готовить соответствующих специалистов. К сожалению, сегодня вузы ставят перед собой другую задачу, например, разрабатывая список компетенций студента в области параллельных вычислений, которые в основном сводятся к тому, чтобы научить технологиям OpenMP и MPI. Это означает, что кто-то будет разрабатывать математическое решение задачи, писать программу на Фортране, а мы подготовим «шерпов», которые должны будут для такой задачи анализировать и оптимизировать программу для выполнения на параллельной платформе, вместо того чтобы создать инструмент для автоматического распараллеливания. При этом, например на ВМиК МГУ уже есть три курса по параллельному программированию, хотя в вузах США -- один, да и тот по выбору.
- Какие имеются пути организации обучения параллельным технологиям?
В университетах США изучение суперкомпьютерных технологий объединяется с вычислительной математикой — именно для решения сложных задач математической физики необходима «молотилка чисел». Поэтому обучение программированию на суперкомпьютерах нужно вести для студентов, которые учатся на кафедрах вычислительных методов, матфизики и т.д.
Студенты, изучающие решение задач информатики на параллельных платформах, вовлекаются в учебные исследовательские проекты, цель которых – найти оптимальный вариант распараллеливания тех или иных программ. Такие проекты реализуются, например, в Калифорнийском университете Беркли, в Массачусетском технологическом институте. Причем эти исследования ведутся не на традиционных задачах, имеющих четкое описание с помощью математических уравнений, например, задачах баллистики, а на более сложных и современных, таких как распознавание речи, выборка изображений, основанная на содержании, параллельные браузеры, медицинские приложения.
Обычные задачи научных вычислений оперируют понятными, хорошо организованными данными, и для их решения существует множество уравнений: Лапласа, Максвелла, Пуассона и т.д., так что вам достаточно просто выбрать подходящую модель и провести расчеты. Но сегодня очевидна тенденция компьютеризации множества областей, где математических описаний моделей нет. Мы в лаборатории компьютерной графики и мультимедиа ВМиК сейчас начинаем работать с факультетом психологии – там ставятся задачи, связанные с психологическими экспериментами, например, реабилитация человека, страдающего боязнью высоты. Такого пациента постепенно приучают к высоте – отводят на балкон сначала на втором этаже, потом на третьем и т.д. Этот эксперимент можно провести средствами виртуальной реальности – создать на компьютере прозрачный лифт, в котором человек поднимается и видит обстановку в здании, которая постепенно уходит вниз. Или другая задача – трехмерное моделирование стрессовых ситуаций, например, разрушение дома, позволяющее анализировать реакцию человека и на основе таких данных делать выводы о его психологической устойчивости. Для программирования подобных задач нет уравнений, и средством создания таких моделей становится виртуальная реальность.
- Таким образом, перед информатикой и программированием встают совсем новые задачи?
Профессор Калифорнийского технологического института Джордж Джорговски отмечает, что [I]«прикладная информатика сегодня играет ту роль, какую играла математика с XVII по XX век, обеспечивая организующие и формальные рамки и объяснительный аппарат для других наук»[$]. Computer science и программирование в традиционном понимании ориентированы на то, чтобы обеспечивать компьютеры системными инструментами – ОС, драйверами, компиляторами, базами данных и т.д. В научных исследованиях специалисты по вычислительной математике и физике ставили задачу и вводили ее в компьютер сначала с помощью программистов-кодеров, а потом сами, когда появились языки программирования высокого уровня. Однако сегодня, когда мы уходим в другие области, скажем, в биомедицину, где эти математические описания не действуют, нужны другие модели. Математики за их создание не возьмутся, поскольку модели в форме уравнений здесь не годятся. В результате эта задача попадает в область прикладной информатики.
Есть математика, и есть прикладная математика. Математика – это общие идеи, теоремы и т.д., а прикладная математика – это решение научных задач математическими методами. Фактически, это совсем другая математика. Так получается и в информатике. Есть информатика, ориентированная на сами компьютеры, отвечающая за то, чтобы «железо» правильно и эффективно работало. И информатика, ориентированная на построение моделей для решения конкретных задач. Программирование по-прежнему воспринимают как кодирование, и престиж этой профессии теряется, потому что высшее достижение кодирования – это хакеры и вирусописатели. А сейчас перед информатикой встает новая, гораздо более сложная задача – создание моделей для тех областей исследований, которые невозможно описать математическими уравнениями.
Мы в лаборатории занимаемся подобными вещами, но, к сожалению, представители традиционного программистского направления воспринимают пока машинную графику как маргинальную дисциплину, и она действительно пограничная, поскольку не существует сама по себе. Информатика, вообще, дисциплина инновационная, и бессмысленно делать что-то в графике, если не знаешь, что этим будет кто-то пользоваться, поэтому мы беремся за совместные проекты с рядом коммерческих компаний, но только за те, которые имеют исследовательский характер. Для информатики нового типа специалистов надо готовить иначе, не в рамках традиционных кафедр, а в лабораториях, так, чтобы студент сразу приобщался к коллективной исследовательской работе.
- Что препятствует внедрению новых подходов к информатике в России?
Для развития новых областей применения компьютера самая большая проблема сегодня – отсутствие специалистов; никто не подготовит мне специалистов по машинной графике, если я не возьмусь за это сам. А в России вместо создания новых образовательных направлений звучат призывы, например, возрождать русскую классическую инженерную школу. Фактически, это призыв «вперед в прошлое». Образование сегодня должно быть другим.
К сожалению, в нашей профессиональной сфере нет желания к изменениям по существу. Сегодня в Чехии читается восемь курсов по виртуальной реальности, в Англии – 20, а в России ни одного. Необходимо растить кадры на такого рода исследованиях, чтобы потом они могли вести соответствующие программы для студентов. Но у нас предпочитают купить суперкомпьютер и таким способом завоевывать для университета место в топ-листах. Заметьте, что прогрессивные с точки зрения развития науки страны, например, Китай, Испания, Италия не кричат о своих суперкомпьютерах -- для них важна не сама машина, а перспективные научные или военные направления, например, биомедицинские исследования, проводимые с ее помощью. А уже потом, косвенно, созданный для решения конкретной задачи суперкомпьютер может попасть в Top500, но это уже вторично. У нас тоже сейчас имеются аналогичные задачи, например совместно с НИИ нейрохирургии им. Н.Н. Бурденко. Процесс подготовки нейрохирурга очень длителен и затратен -- за время подготовки хирург должен набрать определенное количество операций по разным клиническим случаям. Если создать виртуальный атлас мозга, с которым будут работать молодые врачи, то они получат возможность не на живом человеке, а в виртуальной реальности учиться выполнять операции, а практикующие врачи смогут готовиться к операциям, прорабатывая различные варианты на виртуальном мозге, персонифицированном с помощью данных томограммы, и выбирая из них оптимальный. Для создания такого атласа нельзя построить явную математическую модель мозга, учитывающую массу различных факторов: деформации, эластичность тканей, расположение сосудов и т.д. Для ее решения не нужен суперкомпьютер, но необходимы специалисты, которых сегодня катастрофически не хватает.
В новых областях никто в России специалистов не готовит. Необходимы лидеры, способные возглавить новые научные направления, набрать учеников и обучить их. Как показывает опыт нашей лаборатории, формирование такого лидера – молодого специалиста, который сможет самостоятельно руководить студентами и решать научные задачи, – это три года целенаправленной интенсивной работы в период студенчества, с третьего по пятый курс, а затем еще три года аспирантуры, то есть не менее шести лет.
- Можно ли исправить ситуацию?
У математики и у прикладной математики разные цели, и должен быть разный уровень знаний у студентов, а у нас прикладных математиков готовят как классических математиков, при этом с выпускниками мехмата они все равно соревноваться не могут, но и не получают многих вещей, необходимых специалистам в прикладной математике и информатике. Представители классических математических кафедр отказываются включать в свои курсы темы, важные, например, для освоения машинной графики, ссылаясь на годами устоявшуюся целостность своего курса. Либо говорят о том, что они не учат, как применять математику, а прививают студентам общематематическую культуру. Да, на прикладных кафедрах нужно прививать общеинформатическую культуру, информатическое мышление (computational thinking). Однако пока это очень сложно, например, на факультете ВМиК МГУ из 18 кафедр программистских только три, как на момент создания факультета, и ресурсов для внедрения и развития нового нет.
[Фото. Osmag/Editors/N3/Bajakovsky photo] Юрий Баяковский: «Перед информатикой сегодня встает новая задача – создание моделей для тех областей исследований, которые невозможно описать математическими уравнениями»