Недавно реально существующий ChipMan побывал в в Штатах и специально для Хабра привез уникальный в своем роде репортаж.
Солнечный майский день в калифорнийской Санта-Кларе, где находится штаб-квартира Intel: разгар рабочей недели, но Джерри Батиста, главный менеджер по развитию бизнеса в Intel Labs согласился поговорить с нами об Intel Labs, исследовательском подразделении компании, включающем в себя дюжину подразделений по всему миру, которые занимаются десятками самых передовых научных проектов.
Здание SC12, штаб-квартира Intel Labs, залито солнцем — у стойки администратора практически нет людей: кажется, что все сотрудники лаборатории, как тяжелые бомбардировщики, улетели на задание. Мы выбираем переговорную у кафетерия, надпись на стене настраивает на беседу: “Your kid’s kid’s kid won’t think what we’re doing is crazy at all” («Правнуки не будут думать, что мы здесь занимаемся чем-то странным»).
Чем же мы занимаемся в Intel Labs? Ключевая тема наших исследований — то, как мы будем использовать вычисления в будущем. Поясню свою мысль. Вот смотри, чем больше у наших процессоров ядер, тем больше у нас вычислительной мощности. Конечно, если все, что мы делаем, это работа с текстом и просмотр простых вебсайтов, то такие задачи не требуют большой вычислительной мощности.
А какие требуют?
Вот это мы и хотим выяснить — какими задачами захотят заниматься люди будущего? Что будет их заботить и волновать? Какие штуки можно будет делать при помощи совершенно иных вычислительных возможностей, которые будут гораздо больше современных?
Например?
Например, то, что принято называть естественными интерфейсами (natural interfaces): распознавание жестов и лиц, распознавание речи. Взять, к примеру, распознавание речи — люди пытаются заниматься этой темой десятилетиями, но пока что результатами этих исследований невозможно пользоваться. Распознавание речи бесполезно, пока его качество не достигает практически ста процентов. И самое сложное тут — повысить качество распознавания речи на вот эти вот последние процентики, верно? Это большая проблема. Вот примерно такими большими проблемами мы и занимаемся.
Распознавание образов это вообще одна из самых больших проблем современной информатики.
О да, это касается и фотографий, и видео, и других видов мультимедийных данных. Думаю, у многих из нас есть цифровой эквивалент картонных коробок, в которых мы храним сотни гигабайт фотографий, и эти фотографии в лучшем случае сложены в кучи. Конечно, их можно как-то пометить: «моя бабушка, моя тетушка», или рассортировать по дате. Но это очень рудиментарная система сортировки; у таких снимков нет никакого внятного центрального каталога, так что большинство людей — я тут не исключение, у меня четыре ребенка — совершенно не организует свои цифровые фотоархивы, так что все эти сотни гигабайт фотографий просто свалены в кучу.
Но ведь появляются современные алгоритмы распознавания образов?
Верно, есть способы узнать, где сделано фото, опознав какие-то известные здания или объекты, попавшие в фон, например, Нотр-Дам, Красную площадь или другое популярное место — это очень хорошо отфотографированные объекты, так что система может распознать их с любой стороны. Такой подход решает часть проблем с разметкой изображений, потому что не у всех фотографий есть геотег, то есть привязка к географическим координатам. Сейчас появились несколько моделей камер, сразу проставляющих GPS-координаты у отснятого материала, но у нас уже есть годы отснятых снимков; как определить, где они были сделаны? Это не такая простая задача. Но, допустим, мы нашли, где снимок был сделан, и есть топографическая информация о том месте и даже о рельефе того места, и еще есть куча других снимков в открытом доступе, ваших или чужих, и вот система составляет их вместе таким образом, чтобы можно было буквально прогуляться в прошлое, рассмотреть эти фотографии каким-то простым образом, как если бы ты листал фотоальбом-путешествие.
Звучит красиво.
Есть и другие штуки — безопасность. Мы в Intel Labs понимаем, что для нужд безопасности нужны серьезные вычислительные мощности. Скажем, уже есть куча алгоритмов распознавания лиц, которые используются правительственными службами для того, чтобы находить людей в розыске, но они устроены немного наивно. Вот пример: скоро ты поедешь в Россию, зайдешь в аэропорт, там будут висеть камеры, снимающие тебя вне зависимости от твоего желания. Может быть, ты их даже не заметишь, но они все равно где-то там висят и снимают тебя. Если ты в розыске, где-то внутри системы совершенно точно сработает сигнал. Но на самом деле количество людей в розыске не настолько велико, чтобы они находились в том же месте в одно и то же время — система ищет подозрительные лица, пытаясь предотвратить потенциальные неприятности. Но вот какая штука — куча нехороших вещей делается людьми, даже не находящимися в розыске. Может быть, преступление или теракт совершает какой-то случайный человек, доселе не известный, как преступник. И вот что можно сделать: взглянуть на действия людей в аэропорту, и попытаться сделать какие-то выводы о том, насколько их действия, снимающиеся камерами, подозрительны.
Но это же огромное поле для исследований? Черные лебеди, wildcards, ситуации, которые в принципе могут случиться, но статистически никак не прогнозируются и не обнаруживаются. Это такие конструкции из отдельных микрособытий, в итоге разворачивающиеся в катастрофу.
Да, они могут быть едва заметными. Но ты сейчас говоришь об анализе данных (data mining) на очень высоком уровне: анализ электронной почты, фотографий, закономерностей перемещения транспортных средств и статистики посещений вебсайтов с целью распознать какую-либо угрозу. Да, этим тоже сейчас занимаются, и это действительно большая исследовательская и практическая область, но я хочу рассказать о другом подходе. Вот смотри, у тебя есть запись с видеокамеры, на которой видно человека; он чем-то занимается, какими-то своими делами. У него есть сумка, затем следующий кадр — и у него больше нет сумки. Куда делась сумка? Что это за сумка, она может представлять какую-то опасность? Возможно, в ней взрывное устройство? Можно попробовать отследить действия этого подозрительного человека, используя данные сразу нескольких аэропортовых камер. Сейчас этот процесс абсолютно не автоматизирован, нет таких программных пакетов и алгоритмов, которые позволили бы это сделать. Но представь: допустим, ты отыскиваешь кадр, в котором этот человек передает сумку кому-то другому, и пытаешься определить, что это за другой человек? Он такого же возраста? Это женщина? Есть какие-то кадры, на которых они вместе? Если ответы утвердительные, тогда это, скорее всего, муж и жена, и муж отдал жене ее сумочку, ничего страшного не произошло. Но если первый человек перемещался в одиночку, в какой-то момент «потерял» сумку, а затем на одном из кадров эта сумка появляется одиноко стоящей в укромном углу, а на другой камере видно, что человек в спешке покидает аэропорт — вот это уже больше похоже на проблему. Согласись, что это очень тонкая, неочевидная ситуация, и ни у какого сотрудника безопасности не хватит терпения отслеживать подобные ситуации. Но вот интеллектуальной компьютерной системе это по плечу. Что я хочу этим примером показать — мы видим огромные возможности в подобного рода вычислениях, где мы можем использовать не очень сложные, но довольно интенсивные алгоритмы распознавания образов, которые лягут в основу программы, делающей умозаключения и выводы относительно довольно длинных и сложных паттернов. Если такой программе показалось, что действительно происходит что-то подозрительное, она может уведомить соответствующего сотрудника безопасности и показать ему сводный отчет о происходящем.
Еще один тренд, который мы видим — различные социальные применения вычислений. Например, уход за пожилыми людьми. Допустим, у тебя есть старенькая бабушка, и ты хочешь видеть некие регулярные фотоизображения из ее дома, ведь ей в любой момент может потребоваться помощь. Однако сразу же возникают вопросы безопасности и приватности — такие изображения не должны попасть в посторонние руки. И вот как можно решить эти вопросы: на основании изображений с очень низким разрешением, на которых не различимы детали и которые не требуют яркого света, можно проводить анализ того, как бабушка живет своей жизнью. Если заметно, что она спит и просыпается в свои обычные часы, ходит в ванную комнату, готовит еду, гуляет или смотрит телевизор — все в порядке. Или делает себе уколы инсулина — такие вещи тоже можно отслеживать и журналировать.
Ведь у Intel Digital Health уже есть похожий продукт?
Да, но не такой сложный и универсальный. Я сейчас говорю про более сложное устройство — в результате анализа изображений оно будет просто посылать тебе SMS «у бабушки все в порядке»; тебе не нужно видеть бабушку готовящей еду, ты просто хочешь знать, что с ней все в порядке, а она хочет знать, что никто за ней не следит. Система просто-напросто проводит комплексный анализ изображений и делает выводы о поведении бабушки, и затем отправляет тебе короткое сообщение. Все изображения всех камер остаются в ее доме и никуда не передаются, так что ее частная жизнь не находится под угрозой.
Другими словами, в будущем мы будем окружены умными устройствами.
Верно, мы в Intel называем эту концепцию «вычислительным континуумом», и она говорит о том, что в будущем серьезные вычисления будут производиться не только в «облаках», но и локально. Наша жизнь будет буквально окружена вычислителями — от облачных услуг, выполняющихся на суперкомпьютерах и до мелкой персональной электроники вроде телефонов, которую можно носить в кармане. Все устройства и все приложения будут взаимодействовать друг с другом через стандарты обмена данных, социальные связи и текущий контекст пользователя. Видишь, вот тебе сразу несколько тенденций — есть очень, очень большое количество вычислительных ресурсов, и закон Мура чувствует себя очень неплохо, и все большее число ядер, которое мы сможем разместить в компьютерах, мы затем можем всерьез использовать.
Но закон Мура не вечен.
О, нас регулярно спрашивают — когда остановится закон Мура, что вы будете делать с этими транзисторами? Кому вообще нужны такие сумасшедшие вычислительные мощности? Но из приведенных мною примеров понятно, что мы можем идти дальше и дальше; причина тут не в том, что это удобно Intel — в нашем обществе есть вполне объективные потребности во все возрастающих вычислительных мощностях. Взять хотя бы современные игры, которые сейчас уже трудно представить без реалистичной игровой физики объектов, а ведь это очень ресурсоемкая задача. Когда что-то на экране взрывается, и осколки ведут себя чрезвычайно убедительным образом — точно так же, как и в реальности. Учитываются и столкновения, и движущая сила, эластичность столкновений тоже рассчитывается. Когда вы показываете такую игру двенадцатилетке, вам не нужно объяснять ему законы Ньютона — он уже в курсе, и он в полном восторге от увиденного. И ведь ребенку не объяснить, что на расчет всей этой красоты на экране требуется мощная четырехядерная система.
Если представить игру, похожую на кэмероновского «Аватара», то она потребует фантастических вычислительных мощностей.
Именно!
И нам до таких мощностей далеко?
О, это большая тема — тут ведь не только физика важна, есть же еще и поведение. Мы знаем, что в многих играх, когда плохие парни нападают на тебя, они действуют довольно грубо, по сценарию. Они просто бегут на тебя толпой и стреляют. Но еще мы знаем, что в природе все не так. Скажем, волки и другие хищники используют охотничье поведение, охотничьи паттерны — и акулы тоже. Если они охотятся группой, то внутри группы распределены роли — один загоняет добычу, другие ее окружают; стая действует слаженно, сообща, причем задолго до того, как жертва видит стаю. Мы можем использовать схожие поведенческие модели в современных развлечениях, чтобы игры были еще более правдоподобными. Ну и качество картинки действительно играет роль — короче, когда начинаешь суммировать физику, графику, поведенческие модели, становится понятно, что игры будущего будут очень, очень сложными и реалистичными, и будут требовать совершенно нового уровня вычислительных мощностей. А потом вам захочется попасть в «Аватар», вам как живому человеку, у которого есть лицо и вполне четкие физические возможности в игре — это же чрезвычайно интересно узнать, а как я отреагирую, если меня будут преследовать инопланетные существа, которые ведут себя как акулы, окружающие добычу? Все это выводит игры на совершенно новый уровень, требующий совершенно других вычислительных мощностей.
Вот такие проекты мы и делаем в Intel Labs — их великое множество, но все они касаются того, как мы хотим использовать вычислительные ресурсы будущего. Не отдаленного будущего, даже не через десять лет — а через пять лет, через четыре года. Все, о чем я говорю — это не научная фантастика, а наше с вами ближайшее будущее.
Я только что вернулся с презентации нескольких интеловских проектов, и пользовательский контекст проходил через них красной нитью. Но есть проблема — множество современных мобильных устройств, не совместимых друг с другом. Как заставить их разговаривать между собой? Приходит твой друг с айфоном, а у тебя андроид, и ты хочешь просто-напросто переслать ему несколько фотографий, просто р-раз и движением пальца перетащить на его телефон. Прямо сейчас это невозможно — нужно писать письмо, тащить туда фотографии, или заводить фликр, или открывать Bluetooth-сессию… сплошная головная боль.
Да, внутри платформы ты можешь делать такие штуки, но не вне ее, не на соседних платформах. Даже передать фото с телефона на ноутбук уже проблема. Есть несколько способов решить эту проблему. Один из них — когда мы создаем какую-то железку, мы всегда… ох, зря я говорю «всегда»… скажем так, в подавляющем большинстве случаев мы стараемся создать референсный дизайн, какое-то полноценное тестовое решение, которое может использоваться разработчиками конечных продуктов как образец. Так что обычно мы показываем, как именно можно использовать нашу аппаратную часть в какой-то реально работающей системе. Например, к чипам, которые отправляются в мобильные устройства, мы создаем референсные устройства, которые на самом деле являются полноценными мобильными гаджетами (хороший пример — Canoe Lake). У таких гаджетов есть интерфейс, дисплей, система ввода и так далее. Но тут надо правильным образом проводить границу — все же мы по большей части предоставляем не конечные решения, а компьютерные чипы и чипсеты, все остальное — просто способ показать, как наши чипы можно использовать. Так и с нашими программными разработками — мы пишем приличное количество приложений, даже игр, которые мы потом показываем изнутри, чтобы ISV, производители программного обеспечения, могли потом заглянуть в код и понять, как мы это сделали. И мы делимся этими приложениями.
Еще у нас есть обширный инструментарий, касающийся оптимизации кода, средств многопоточного программирования и так далее — так что когда разработчики понимают, чего они хотят, и начинают заниматься непосредственно разработкой, мы можем помочь им с настройкой и улучшением их программ. Это такой процесс: когда ты создаешь что-то новое, сразу же возникает некая кривая обучения этому новому, и тебе нужно снабдить свою новинку примерами использования и инструментами разработки. Мы много раз проделывали этот путь с нашими аппаратными продуктами, и я знаю, что мы занимаемся этим в программных разработках.
С примерами все понятно, но что делать с пользовательским опытом, с user experience, который довольно трудно как-то формально померять? Как программист может понять, каким образом создается этот пользовательский опыт, если его не учили когнитивной психологии и куче смежных тем — неужели он должен все это домыслить на основе каких-то файлов из библиотеки примеров?
Думаю, ты прав. Функционально это сложно сделать, нужно смотреть на способы работы с естественными интерфейсами. И ты снова прав — сейчас для этого нет никакого инструментария.
Intel Labs делает какие-то исследования в этой области?
Не на таком высоком уровне, увы. Это очень сложно. Ты заглядываешь дальше конкретных устройств, на более высокий уровень абстракций — ты смотришь на экосистему, на какие-то паттерны хорошего дизайна.
Конечно — тот же пользовательский контекст, его невозможно правильно реализовать без взгляда на экосистему в целом, верно?
Верно. И это большая проблема. Ее можно решить для очень крупного клиента, потратив на это огромное количество времени и ресурсов, потому что ты знаешь, что твое устройство продастся большим тиражем, но вот у нас есть большое сообщество производителей ПО, которые занимаются своими разработками, и мы просто не можем индивидуально подойти к каждому. У Apple довольно успешно получилось сделать что-то подобное — я знаю, что у них есть курсы по разработке приложений, которые они читают в Стенфорде и других местах. Возможно, такие курсы — хороший способ попробовать решить системную проблему с разработчиками. NVIDIA очень неплохо поработала с CUDA похожим образом, так что я думаю, что с моей стороны будет честным сказать что мы в Intel, конечно, тоже могли бы заняться подобными вещами. Так что да, хороший вопрос. Если выяснится, что отсутствие такого системного взгляда, системного подхода действительно мешает развертыванию новых платформ и экосистем, я думаю, что мы займемся этим вопросом.
Тут еще вот какой момент — в конечном счете Intel пытается монетизировать все эти увлекательные исследования, и вот что касается пользовательского контекста — с точки зрения социальной сети довольно круто знать, где твои друзья, но вот заплатишь ли ты за такое знание деньги? Или за сервис, который согласится предоставлять тебе такие услуги за деньги? Пока что контекст существует в виде набора различных геосервисов, и все эти сервисы бесплатны.
Но, допустим, контекстная реклама может оказаться крутой штукой?
Верно, однако с ней тоже куча вопросов. Скажем, ты получаешь рекламу, потому что проходишь мимо магазина, магазин уже знает твой социальный круг и твой возраст, и что ты мужчина, и что ты проходишь мимо, и вот он тебе пишет — внутри холодное пиво, заходи. Но не становится ли это в какой-то момент слишком навязчивым? Тоже вопрос. В любом случае, мы все-таки стараемся коммерциализировать какие-то свои находки, чтобы они превращались в бизнес или услуги, и вот это та часть нашей работы, которую обычно упускают из виду или о которой не очень часто говорят.
Intel Labs это же не отдел продуктового дизайна, это скорее отдел концептуального дизайна?
Да, верно. Мы занимаемся полным спектром работ — кое-какие из наших штук слишком забегают вперед, и нет особых мыслей по поводу того, как превратить их в продукты. Другая часть наших разработок касается более близкого будущего, эти разработки более практичны, и вот по поводу их мы всерьез задумываемся — а как они могут стать продуктами? Есть краткосрочные проекты, есть долгосрочные проекты, есть такие эзотерические разработки, что мы вообще не уверены, что они хоть когда-нибудь заработают (смеется).
Еще момент: не знаю, насколько это очевидно людям снаружи компании, но довольно большая часть работы внутри Intel Labs включает работу с научным миром; мы даем ощутимые деньги различным университетам на целевые исследовательские программы, которые касаются интересных нам тем, и мы стараемся помогать таким исследованиям — не только деньгами, но и руководством. Наши лаборатории находятся по всему миру, в самых разных частях света, которые занимаются локальной работой — в Китае, Испании, Мексике или России. В каждой из этих стран есть свои экспертные области, вокруг которых мы и образуем ту или иную лабораторию Intel. Разумеется, есть привязка и к местным рынкам, которая касается того, как продукты затачиваются под конкретные условия рынка. Так что мы думаем о деталях но, конечно, работа в Intel Labs основана на сотрудничестве между лабораториями. Впрочем, давай я попробую рассказать и показать несколько наших проектов.
Продолжение следует.