Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. Произошло ЧП: с октября 1999 года остановились краулеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. На карту было поставлено больше, чем предполагали инженеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
В конференц-зале у лестницы инженеры положили двери на козлы, соорудили импровизированные столы и установили компьютеры. У дальней стены сидел печальный Крэйг Сильверстайн: 27-летний худой юноша с тонким голосом. Крэйг был первым сотрудником Google: он пришёл в компанию, когда её главный офис располагался в гостиной Брина, и он лично переписал большую часть кода основателей. После четырёх дней и ночей работы они с румынским системным инженером по имени Богдан Кокосел ничего не добились: «Ни один из проделанных тестов не имел никакого смысла, — вспоминал Сильверстайн. — Ничего не работало, и мы не знали почему».
Сильверстайн едва заметил рядом Санджая Гемавата — скромного 33-летнего брюнета с густыми бровями и проседью в висках, выпускника MIT. Санджая взяли на работу всего несколько месяцев назад, в декабре. Он пришёл вслед за своим коллегой — стройным и энергичным тридцатилетним Джеффом Дином из Digital Equipment Corporation. Джефф покинул DEC за десять месяцев до Санджая. Они были необычайно дружны и предпочитали писать код совместно. В «военной комнате» Джефф пододвинул стул к столу Санджая, оставив свой пустым. Санджай стучал по клавиатуре, а Джефф откинулся рядом, поправляя и диктуя, как продюсер в наушнике диктора новостей.
Джефф и Санджай начали изучать заглохший индекс. Они обнаружили, что некоторые слова в нём отсутствовали: они вводили запрос [почтовый ящик] и не получали результатов, а другие перечислены не по порядку. В течение нескольких дней они искали ошибку, погружаясь в логику кода. Раздел за разделом, проверили всё. Никаких багов.
Программисты иногда представляют свою программу как структуру слоёв, которая спускается от пользовательского интерфейса вниз к более фундаментальным слоям. На дне этой структуры программное обеспечение встречается с железом: такой спуск от платонических абстракций кода до физики электричества и кремния. На пятые сутки работы Джефф и Санджай начали подозревать, что проблема не в логике кода, а имеет физическую причину. Они преобразовали файл индекса в двоичный код. Они хотели увидеть, что видят машины.
На мониторе Санджая появился толстый столбец с нулями и единицами, каждая строка представляла индексированное слово. Санджай заметил: на месте 0 стоит 1. Когда Джефф и Санджай собрали все искажённые слова, то увидели шаблон: одинаковый сбой в каждом слове. Повреждение микросхем памяти на серверах.
Санджай посмотрел на Джеффа. В течение нескольких месяцев Google испытывал всё больше аппаратных сбоев. Проблема заключалась в том, что по мере роста Google вычислительная инфраструктура тоже расширялась. Компьютерная техника редко выходит из строя, если только у вас не очень много компьютеров — тогда они ломаются постоянно. Провода изнашиваются, жёсткие диски разваливаются, материнские платы перегреваются. Многие машины сразу выходят из строя; другие начинают работать медленнее. В игру вступают странные природные факторы. При взрыве сверхновой в космосе взрывная волна создаёт высокоэнергетические частицы, которые рассеиваются во всех направлениях: учёные считают, что есть ненулевой шанс, что одна из частиц космического излучения может попасть в компьютерный чип на Земле и сменить 0 на 1. Самые надёжные компьютерные системы в мире, в НАСА, финансовых фирмах и тому подобных, используют специальное оборудование, которое защищает от однобитных «флипов». Но Google ещё работал как стартап и закупил дешёвые компьютеры, у которых не было такой защиты. Компания достигла точки перегиба. Вычислительный кластер вырос до такого размера, что даже маловероятные аппаратные сбои стали неизбежны.
Вместе Джефф и Санджай написали код для компенсации сбоя на повреждённых системах. Вскоре построили новый индекс — и чрезвычайная ситуация успешно разрешилась. Сильверстайн был смущён. Он гениально отлаживал код, но здесь ответ скрывался на аппаратном уровне. Джефф и Санджай зашли глубже.
До мартовского фиаско системы Google работали на коде, который основатели компании написали в стэнфордской аспирантуре. Пейдж и Брин не были профессиональными программистами. Они были учёными, проводившими эксперимент в области поисковых технологий. Когда краулер упал, он не вывел никакого информативного диагностического сообщения, кроме фразы «Тпру, лошадка!»
Систему BigFiles, написанную Пейджем и Брином, первые сотрудники компании в шутку называли BugFiles. Крайне важная процедура индексирования занимала несколько дней, а если сталкивалась с проблемой, то начинала с самого начала. Это была совершенно не масштабируемая система.
Мы говорим, что «ищем в интернете», но на самом деле это не так: мы работаем с поисковым индексом на серверах поисковой компании. Когда Google ещё назывался BackRub в 1996 году весь индекс помещался на компьютерах, установленных в комнате общежития Пейджа. В марте 2000 года уже ни один суперкомпьютер не смог бы его обработать. Единственным выходом для Google осталось покупать обычные компьютеры и добавлять их в гигантский кластер. Поскольку половину стоимости обычных компьютеров составляет то, что Google считает «мусором» — дисководы, металлические корпуса — компания заказывала только голые материнские платы и жёсткие диски — и соединяла их. К тому моменту Google подключила уже 1500 таких самодельных серверов в двухметровые стойки в здании в Санта-Кларе, штат Калифорния. Из-за аппаратных сбоев в каждый момент времени работали только 1200. Сбои происходили непредсказуемо и продолжали нарушать работу системы. Чтобы выжить, Google было необходимо объединить компьютеры в единый жизнеспособный организм, устойчивый к сбоям.
На пару Джефф и Санджай взяли на себя эту работу. Уэйн Розинг, который проектировал в Apple предшественника Macintosh, пришёл в Google в ноябре 2000 года, собрав команду из ста инженеров. Работая по девяносто часов в неделю, они написали код, чтобы ни один сбой HDD не нарушал работу системы. Они добавили контрольные точки в процесс обхода Сети, чтобы краулинг перезапускался с момента сбоя, а не с самого начала. Разработав новые схемы кодирования и сжатия, они фактически удвоили возможности системы. Они были неумолимыми оптимизаторами. Например, Google переместил наиболее часто используемые данные на внешнюю сторону пластин HDD, где более высокая скорость вращения диска и, следовательно, более высокая скорость чтения и записи информации, а внутренние области пластин оставили пустыми. Джефф и Санджай использовали это пространство для хранения предварительно обработанных данных для общих поисковых запросов. В течение четырёх дней в 2001 году они доказали, что индекс Google можно хранить в быстрой оперативной памяти вместо медленных HDD. Открытие полностью изменило экономику компании. Пейдж и Брин знали, что пользователи толпой повалят на сервис, который мгновенно выдаёт ответы. Проблема была в том, что скорость требовала вычислительной мощности, а вычислительная мощность стоила денег. Джефф и Санджай сумели протиснуться в игольное ушко с помощью софтверных оптимизаций.
Алан Юстас возглавил инженерную команду после ухода Розинга в 2005 году. «Как ни парадоксально, но для решения масштабных задач необходимо знать мельчайшие детали», — говорил Юстас. Джефф и Санджай понимали систему до битового уровня. Однажды Джефф распространил список «Показатели задержек, которые должен знать каждый программист». Фактически, это список чисел, о которых почти никто из программистов не думает, но эти цифры буквально встроены в мозг Джеффа и Санджая: например, что вызов из кэша L1 занимает 0,5 нс или что последовательное чтение одного мегабайта из памяти занимает 250 мкс. После ряда оптимизаций ключевого программного обеспечения мощность систем Google масштабировалась на порядки. Между тем, в обширных центрах обработки данных техники стали ходить извилистыми маршрутами, следуя программно-сгенерированным инструкциям по замене жёстких дисков, блоков питания и модулей памяти. Даже когда детали изнашивались и выходили из строя, система процветала.
Сегодня для инженеров Google действует единая система классификации, которая начинается с уровня 1, это техподдержка. Уровень 2 — выпускники колледжей. Сотрудники уровня 3 часто имеют степень магистра. Получение уровня 4 занимает несколько лет или требует степени Ph.D. Карьера большинства сотрудников останавливается на уровне 5. Инженеры 6-го уровня — лучшие 10% персонала, они настолько талантливы, что от них зависит успех проектов. Седьмой уровень дают сотрудникам уровня 6 с длинным послужным списком. Главные инженеры уровня 8 отвечают за конкретные продукты или части инфраструктуры. О выдающихся инженерах 9-го уровня говорят с почтением. Звание Google Fellow (уровень 10) присваивается пожизненно обычно ведущим мировым экспертам в своих областях. Джефф и Санджай — это Senior Google Fellows, первые и единственные сотрудники уровня 11.
Кампус Google, расположенный рядом с шоссе в нескольких минутах от центра Маунтин-Вью, представляет собой серию приземистых, непривлекательных зданий с тонированными окнами. Однажды в понедельник летом 2017 года после утренней сессии парного программирования Джефф и Санджай отправились на обед в кафетерий кампуса под названием Big Table, названный в честь системы, которую они помогли разработать в 2005 году для объединения бесчисленных компьютеров в виртуально единое устройство. Высокий и худой Санджай в древней рубашке Henley бордового цвета, серых брюках и маленьких очках на проволочной оправе высмотрел столик на террасе и быстренько занял его, открыв зонтик и присев в тени. Рядом на солнце он поставил ещё один стул для Джеффа, который прибыл через минуту, широкоплечий спортивный мужчина в рубашке с короткими рукавами и стильных кроссовках.
Словно влюблённые, Джефф и Санджай рассказывают истории вместе, дополняя кусочки общей картины. Они начали вспоминать о своих первых проектах.
— Мы всё писали вручную, — говорит Санджай. Его очки потемнели на солнце. — Нужно было переписать код и тут вдруг: «О, это похоже на то, что мы написали в прошлом месяце».
— Или немного другой проход в наших данных индексирования, — добавил Джефф.
— Или немного другой, — говорит Санджай. — И так мы выяснили…
— Это суть, — сказал Джефф.
—… что есть общая закономерность, — завершает свою мысль Санджай.
Джефф откусил кусочек пиццы. У него пальцы матроса, узловатые и жёсткие. Санджай выглядит очень нежным в сравнении с ним. Он задаётся вопросом, как они начали практиковать парное программирование: «Даже не знаю, как мы решили, что так будет лучше».
— Мы так работали ещё до Google, — сказал Джефф.
— Но я не знаю, почему мы решили, что лучше за одним компьютером, а не двумя, — говорит Санджай.
— Моя лаборатория DEC была в двух кварталах от его лаборатории, — говорит Джефф. — А между ними магазин мороженого.
— Так это магазин мороженого! — Санджай в восторге.
Холостой Санджай проводит отпуск с Джеффом, его двумя дочерьми и женой Хайди. Дочери Джеффа называют его дядя Санджай, и впятером они часто ужинают по пятницам. Санджай и Виктория, старшая дочка Джеффа, взялись за выпечку. «Я видел, как они растут», — с гордостью говорит Санджай. После IPO Google в 2004 году они переехали в новые дома, которые находятся в шести километрах друг от друга. Санджай живет в скромном доме с тремя спальнями в Старом Маунтин-Вью, а Джефф сам спроектировал свой дом недалеко от центра Пало-Альто, установив батут в подвале. Работая над домом, он обнаружил, что ему нравится проектировать пространство, но не хватает терпения к деталям, которые он называет «Санджай-ориентированными аспектами» архитектуры: деталям балок, креплениям, расчёту нагрузок, которые не дают отличному проекту развалиться.
— Не знаю, почему другие не работают таким образом, — говорит Санджай о парном программировании.
— Нужно найти партнёра, который совместим с вами по образу мышления, чтобы вы дополняли друг друга, — сказал Джефф.
Они встали из-за стола и пошли искать мягкое мороженое, прогуливаясь по Big Table среди снующих гуглеров. Пока они шли, Джефф изложил свою стратегию мягкого мороженого: «Я его закручиваю. Думаю, такой подход добавляет стабильности», — сказал он. Довольный и целеустремленный Санджай закрутил шоколадно-ванильную смесь в свой стаканчик.
В книге «Круги сотрудничества: динамика дружбы и творчества» 2001 года социолог Майкл П. Фаррелл исследовал тесные творческие коллективы: французских импрессионистов, Зигмунда Фрейда и его современников. «Большинство хрупких идей, положивших начало новому видению, возникают не тогда, когда вся группа вместе, и не тогда, когда все работают по одиночке, а когда они сотрудничали и взаимодействовали парами», — писал он. Моне и Ренуар работали бок о бок летом 1869 года. Они создали стиль, который стал импрессионизмом; шесть лет совместной работы породили кубизм, Пабло Пикассо и Жорж Брак часто подписывали только обратную сторону холстов, чтобы скрыть друг от друга факт завершения работы («Работа не закончена, пока мы оба не почувствовали, что это так», — вспоминал позже Пикассо). В книге «Двойная сила: поиск сути инноваций в творческих парах» писатель Джошуа Вольф Шенк цитирует интервью 1971 года, в котором Джон Леннон рассказывал, что или он, или Пол Маккартни «писал пару лёгких нот, вроде “I read the news today” или тому подобное. «Один из нас застревал, пока не приходил другой, —говорил Леннон, — я спою половину, а у него находилось вдохновение написать другую часть, и наоборот». Любой может попасть в творческий тупик, но вряд ли два человека одновременно.
На этапе «теоретического строительства» новой науки или искусства важно расширять горизонты, не застревая в тупике. Франсуа Якоб, который вместе с Жаком Монодом совершил прорыв в исследовании регулирующей функции генов, отметил, что к середине 20 века большинство исследований в области молекулярной биологии осуществлялось в парах: «Вдвоём легче, чем одному, изобретать теории и строить модели, — писал Джейкоб. — Когда над проблемой работает два ума, идеи появляются чаще и быстрее. Они отскакивают от партнёра к партнёру. Свиваются друг с другом, словно ветви на дереве. А ложные иллюзии пресекаются в зародыше». За последние 35 лет около половины Нобелевских премий в области физиологии и медицины присуждены парам учёных.
После долгих лет совместной работы партнёры иногда развивают собственный язык, как это делают близнецы. Они подражают друг другу в привычках и одежде, у них общее чувство юмора. Становится невозможно оценить конкретный вклад каждого в совместной работе. Но такие тесные партнёрства редко встречаются в разработке программного обеспечения. Хотя разработчики иногда говорят о «парном программировании», когда два программиста совместно используют один компьютер, один «за рулём», а другой «навигатор» — они обычно представляют только рабочие отношения, как у пилотов в самолёте. Джефф и Санджай, напротив, иногда кажутся двумя полушариями одного мозга. В их самых известных научных работах перечислено до десятка соавторов. Тем не менее, Билл Кохран, один из их менеджеров, вспоминает: «Они были настолько плодовиты и настолько эффективны в паре, что мы часто просто создавали команды вокруг них».
В 1966 году исследователи из System Development Corporation обнаружили, что лучшие программисты более чем в десять раз эффективнее худших. С тех пор продолжаются споры о существовании так называемого «10-кратного программиста». Эта идея подчёркивает индивидуальность, в то время как большие программные проекты создаёт коллектив. В программировании мало что достигается в изоляции. По иронии, многие программисты рассматривают результаты совместной работы Джеффа и Санджая как доказательство того, что 10-кратный программист существует.
Джефф родился на Гавайях в июле 1968 года. Его отец Энди был исследователем тропических болезней; мать Вирджиния Ли — медицинский антрополог, знавшая полдюжины языков. Ради потехи отец и сын собрали компьютер из набора IMSAI 8080. Они паяли детали, изучая каждую часть.
Джефф с родителями часто переезжали. В тринадцать лет он пропустил последние три месяца восьмого класса, чтобы помочь им в лагере беженцев в западной части Сомали. В средней школе он начал писать программу сбора данных для эпидемиологов под названием Epi Info; она стала стандартным инструментом для исследователей, переведена на десятки языков и разошлась тиражом в сотни тысяч экземпляров (на сайте Центра по контролю и профилактике заболеваний опубликована фотография Джеффа с его выпускного). Хайди, с которой Джефф познакомился в колледже Миннесотского университета, узнала о значении этой программы лишь спустя годы. «Он ничем таким не хвастался, — говорит она. — Из него всё приходилось вытягивать». Их первое свидание состоялось на женском баскетбольном матче, где Джефф развлекал публику в костюме суслика.
Докторская диссертация Джеффа посящена компиляторам. «Сами по себе компиляторы довольно скучны», — говорит Алан Юстас, но с другой стороны, «это очень низкий уровень, близкий к железу». Описывая Джеффа, Санджай вращает пальцем у виска: «При написании кода у него в голове образуется некая модель. Какова будет производительность этого кода? Он почти автоматически просчитывает все пограничные ситуации».
Санджай впервые сел за компьютер в возрасте семнадцати лет, когда отправился в Корнелльский университет. Он родился в Западном Лафайете, Индиана, в 1966 году, но вырос в Коте, промышленном городе в Северной Индии. Его отец Махипал был профессором ботаники, мать Шанта заботилась о Санджае и двух его старших братьях и сёстрах. В семье любили книги: его дядя Ашок Мета помнит, как покупал детям «День Шакала» Фредерика Форсайта с порванным переплётои, а детишки все вместе читали потрёпанную книгу, передавая друг другу странички, когда закончили. Брат Санджая, Панкадж, стал самым молодым преподавателем, когда-либо получившим должность в Гарвардской школе бизнеса (сейчас он профессор в Нью-Йоркском университете). Панкадж учился в той же школе, что и Санджай, и слыл человеком эпохи Возрождения: «Я вроде как жил в тени своего брата», — говорит Санджай. Будучи взрослым, он сохранил эту скромность. В 2016 году, когда его представили в Американскую академию искусств и наук, он даже не сказал родителям; новость они узнали от соседа.
В аспирантуре MIT Санджай нашёл друзей. Тем не менее, он никогда там не встречался с девушками, а сейчас делает это «очень, очень редко». Он говорит, что не отказывался заводить семью, просто всё так сложилось. Его близкие друзья научились не тревожить его по этому поводу, а родители давно поняли, что сын останется холостяком. Возможно, потому что он такой закрытый, в Google вокруг Санджая сложился некий ореол тайны. Его считают тихим, но основательным инженером — таким, который думает глубоко и с необычайной ясностью. На столе у него аккуратная стопка тетрадей Mead почти за двадцать лет, заполненных аккуратными списками и диаграммами. Он до сих пор ведёт записи от руки: говорит, что это помогает думать. В MIT его научным руководителем была Барбара Лисков, влиятельный компьютерный ученый, которая изучала в том числе управление сложными кодовыми базами. По её мнению, лучший код — как хорошая литература. У него должна быть тщательно продуманная структура, а каждое слово должно работать. Такое программирование требует сопереживания с читателями. И код рассматривается не только как средство достижения цели, но и как ценный артефакт сам по себе. «Я думаю, что он лучше всего проектирует системы, — говорит Крейг Сильверстайн. — Просто посмотрите на его код: он прекрасен, словно произведение искусства, как скульптура с идеальными пропорциями».
В Google Джефф гораздо более известен. Про него создают мемы как про Чака Норриса. («Чак Норрис досчитал до бесконечности… дважды»; «в резюме Джеффа Дина перечислены вещи, которые он не сделал: так короче»).
«Когда Джефф Дин разрабатывает программу, то сначала создаёт бинарник, а потом пишет исходный код как документацию».«Джефф Дин однажды не прошёл тест Тьюринга, потому что правильно установил 203-е число Фибоначчи менее чем за секунду».
«Однажды в 2002 году, когда поисковый бэкенд отключился, Джефф Дин два часа вручную отвечал на вопросы пользователей. В этот период качество поисковой выдачи существенно возросло»..
Из статьи «Джефф Дин из компании Google — это Чак Норрис нашего времени» — прим. пер.
Но для тех, кто знает их обоих, Санджай равен ему по таланту. «Джефф великолепно придумывает дикие новые идеи и прототипы, — сказал Уилсон Сье, их давний коллега. — Санджай строит вещи на совесть». В жизни Джефф более общительный, Санджай более замкнутый. В коде всё наоборот. Программирование Джеффа ослепительно: он может быстро изложить поразительные идеи, но, поскольку делает это быстро, с вдохновением, может оставить читателей позади. Код Санджая более понятный.
«Некоторые пишут слишком разреженный код, — объясняет Сильверстайн. На одном экране очень мало информации. Приходится прокручивать его вперёд и назад, чтобы понять». Другие пишут слишком плотный код: «Вы смотрите на него и думаете: „Ух. Я не хочу в этом разбираться”. Санджай как-то умудряется найти баланс. Ты смотришь на его код и думаешь: „Окей, я могу это понять”, и всё равно на одной странице много информации». Сильверстайн продолжает: «Всякий раз, когда я хочу добавить новую функциональность в код Санджая, он словно заранее предусмотрел это. Я чувствую себя как Сальери. Я вижу величие, но не понимаю, как такое возможно».
В понедельник утром этой весной Джефф и Санджай стояли на мини-кухне здания 40, где размещается большая часть подразделения искусственного интеллекта Google. Позади них доска, заполненная формулами матричной алгебры, на столе статья о состязательных сетях без учителя. Джефф в выцветшей футболке и джинсах выглядит как пляжный бомж, ставший на путь исправления. Санджай в свитере и серых брюках. За светлыми окнами высокие сосны, за ними — поле. Везде, где Джефф работает в Google, обязательно ставят эспрессо-машины. На кухонном столе гудит La Marzocco метровой ширины. «Опаздываем», — замечает Санджай над кофемолкой. На часах 8:32.
После капучино они идут к компьютерам. Джефф катит стул от своего грязного стола к безупречно чистому столу Санджая. Кладёт ногу на тумбочку, откинувшись назад, в то время как Санджай изучает экран. Открыто четыре окна: слева — браузер и терминал для запуска инструментов анализа; справа — два документа в текстовом редакторе Emacs: в одном список дел в блокноте, другой заполнен красочным кодом. Одна из тетрадей Санджая лежит рядом с компьютером.
— Окей, что мы делали? — спрашивает Санджай.
— Думаю, мы анализировали размер кода TensorFlow Lite, — говорит Джефф.
Это новый крупный проект, связанный с машинным обучением: Джефф и Санджай беспокоятся о раздутой кодовой базе. Словно литературные редакторы, они ищут способы сократить объём. Для этого они создали новый инструмент, который сам по себе нуждается в оптимизации.
— Я пытался выяснить, насколько он медленный, — сказал Санджай.
— Довольно медленный, — Джефф наклонился вперед, всё ещё расслабленный.
— Вот этот был сто двадцать килобайт, — говорит Санджай, — и выходит около восьми секунд.
— Сто двадцать тысяч вызовов стека, не килобайт.
— Ну, килобайтов текста, ну… примерно столько.
— О да, извиняюсь.
— Не знаю, какой порог выбрать для размера юнита, — спрашивает Санджай. — полмега?
— Кажется, нормально, — соглашается Джефф. Санджай начинает стучать по клавиатуре, а Джефф прильнул к экрану. — Так, ты пишешь, что если он больше указанного, мы просто выберем… — он замолчал; Санджай ответил на вопрос кодом.
Когда Санджай ведёт автомобиль, то кладёт руки на десять и два и внимательно смотрит вперед. Такая же дисциплина за клавиатурой. Ноги на ширине плеч, прямая спина, словно он работал над осанкой. Тонкие пальцы мягко бегают по клавишам. В офис начали прибывать первые программисты.
Вскоре они достигли небольшой вехи, и Санджай набрал команду, чтобы запустить тест. Он выглядел измотанным и проверял почту. Тест завершился. Он не заметил.
— Эй! — Джефф щёлкнул пальцами и указал на экран. Хотя в разговоре ему даются шутки и каламбуры, за компьютером с Санджаем он может стать самоуверенным, грубым и неодобрительным. Санджай принимает это как должное. Когда ему кажется, что Джефф движется слишком быстро, то поднимает руки с клавиатуры и разводит пальцы, как бы говоря: «Стоп». Это самое близкое подобие спора: за двадцать лет они не могут вспомнить, когда повышали голос.
Санджай прокрутил страницу, на экране появился новый раздел кода.
— Из этого можно сделать рутинную процедуру, не так ли? — спросил Джефф.
— М-м-м…
Джефф хрустнул костяшками пальцев:
— Кажется, можно. Сделаем?
Санджай оторожен:
— Нет, я…
— Значит, проигнорируем проблему? — возмущённо спрашивает Джефф.
— Нет, я имею в виду, мы просто пытаемся понять, что происходит. Чтобы сделать заметки об этом, правильно?
— Хорошо, — у Джеффа явно поднялось настроение. Они вместе надиктовали заметку.
Приближался обед. Они работали в течение двух часов с одним десятиминутным перерывом, разговаривая большую часть времени (наблюдающего за ними джуниора сильнее всего впечатлил бы факт, что они никогда не останавливались и не застревали). Стандартная инженерная практика — отдать код на ревью, но Джефф и Санджай пропускают этот шаг, ставя пометку lgtm (выглядит хорошо для меня). В некотором смысле, они заняты мелочами. Однако их код выполняется в масштабе Google. Килобайты и микросекунды, о которых они беспокоятся, умножаются в миллиарды раз в центрах обработки данных по всему миру —огромные, шумные дата-центры, где бесконечные стойки серверов охлаждаются чанами с водой. В такие дни Джефф, как известно, приходит домой и говорит своим дочерям: «Сегодня мы с Санджаем ускорили поиск Google на десять процентов».
В 2003 году за четыре месяца Джефф и Санджай провели, возможно, самое крупное обновление в истории Google. Они сделали это с помощью программного обеспечения MapReduce. Идея пришла, когда они в третий раз переписывали краулер и индексатор Google. Они поняли, что каждый раз решают важную проблему: координация работы в огромном количестве географически распределённых, ненадёжных по отдельности компьютеров. Если обобщить решение, то проблема будет решена навсегда. При этом появится инструмент, который любой программист в Google может использовать для управления машинами в дата-центрах, как будто все они — один компьютер размером с планету.
Джефф и Санджай написали MapReduce в угловом офисе с видом на пруд с утками. Этот инструмент навсегда упорядочил умопомрачительно сложный процесс. Раньше каждому программисту приходилось самостоятельно разбираться, как разделять и распределять данные, назначать работы и учитывать аппаратные сбои. MapReduce даёт структурированный способ решения этих проблем. Как шеф-повар готовит ингредиенты перед началом кулинарной работы, так MapReduce делит задачи на два этапа. Сначала программист даёт каждой машине «карту» задачи (например, подсчитать количество упоминаний слова на странице); затем пишет инструкции для «сокращения» результатов со всех машин (например, путём суммирования). MapReduce обрабатывает детали распределения и, таким образом, скрывает их.
На следующий год Джефф и Санджай переписали систему обхода и индексирования Google с точки зрения задач MapReduce. Вскоре другие инженеры поняли, насколько это мощная система — и начали использовать MapReduce для обработки видео и визуализации тайлов на Google Maps. MapReduce был настолько прост, что новые задачи появлялись сами собой. У Google есть суточный цикл нагрузки: днём больше трафика, чем ночью, и задачи MapReduce стали поглощать простаивающую ёмкость. Во сне мозг человека обрабатывает дневной опыт. Теперь Google начал по ночам обрабатывать свои данные.
Давно появились свидетельства, что Google — на самом деле компания ИИ, которая только притворяется поисковой системой. В 2001 году Ноам Шазир, который делил офис с Джеффом и Санджаем, решил переделать систему проверки орфографии, которую Google лицензировал у другой компании. Эта система продолжала совершать неловкие ошибки. Например, слово TurboTax она предлагала заменить на turbot ax (камбала, обитающая в Северной Атлантике).
Качество проверки орфографии зависит от словаря. Шазир понял, что в интернете у Google доступ к самому большому словарю, который когда-либо существовал в истории человечества. Он написал программу, которая использовала статистические свойства текста в интернете, чтобы определить, какие слова скорее всего напечатаны с ошибкой. Программа понимала, что “pritany spears” и “brinsley spears” означают «Бритни Спирс». Когда Шазир показал программу на еженедельном собрании, многие сотрудники многократно старались её обмануть, но в основном безуспешно. Шазир сотрудничестве с Джеффом Дином и инженером по имени Жорж Харик разработал аналогичную систему таргетинга рекламы по содержанию веб-страниц. Этот таргетинг принёс целую лавину денег, которые компания направила в свою вычислительную инфраструктуру. Это стало началом цикла обратной связи: рост инфраструктуры улучшает вычислительные способности и интеллект Google; вычислительные способности становятся источником прибыли, а прибыль позволяет наращивать инфраструктуру. Такой цикл обратной связи принёс компании чрезвычайное и беспрецедентное доминирование на рынке.
Находчивые программисты использовали MapReduce для получения разных инсайтов из данных Google: так стало возможным транскрибировать голосовые сообщения пользователей, отвечать на их вопросы, автодополнять запросы и переводить тексты на более чем сто языков. Эти системы разрабатывались с использованием относительно несложных алгоритмов машинного обучения. Тем не менее, «когда у вас много данных, очень простые методы работают невероятно хорошо», — сказал Джефф. Поскольку «данные, данные, данные» — хранящиеся и обрабатываемые с помощью BigTable, MapReduce и их преемников — главный актив компании, глобальная инфраструктура Google стала более гибкой и масштабируемой. Идея распределённых вычислений появилась давно. Понятия «облачные вычисления» и «большие данные» существовали до появления Google. Но сделав инфраструктуру интеллектуально управляемой для распределённых программ обычных программистов, Джефф и Санджай подняли Google на новый уровень. Пользователи почувствовали: что-то изменилось — облако Google становится умнее.
В 2004 году Джефф и Санджай думали, что система будет полезна астрономам, генетикам и другим учёным с большим количеством данных для обработки. Тогда они опубликовали статью «MapReduce: упрощённая обработка данных в больших кластерах». Документ появился как Бог из машины. Дешёвое оборудование, рост веб-сервисов и подключённых устройств привели к потоку данных, но лишь немногие компании имели программное обеспечение для обработки таких массивов информации. Два инженера, которые изо всех сил пытались масштабировать небольшую поисковую систему под названием Nutch — Майк Кафарелла и Даг Каттинг — были настолько убеждены в важности MapReduce, что решили создать бесплатный клон этой системы с нуля. В конце концов они назвали свой проект Hadoop, по названию игрушечного слоника, которого любил сын Каттинга.
Постепенно Hadoop внедрила у себя половина компаний Fortune 50. Это стало синонимом «больших данных». Facebook использовал Hadoop MapReduce для хранения и обработки метаданных пользователей — информации о кликах, лайках, просмотрах рекламы. В какой-то момент в Facebook работал самый большой кластер Hadoop в мире. Hadoop MapReduce способствовал успеху LinkedIn и Netflix.
Бывший директор по технологиям АНБ Рэнди Гарретт помнит, как демонстрировал технологию директору АНБ, генералу Киту Александеру. Hadoop выполнил задачу анализа в 18 000 раз быстрее, чем предыдущая система. Это стало основой для нового подхода к сбору разведданных, который некоторые наблюдатели называют «тотальный сбор всего».
У Джеффа беспокойный характер: для него проблема теряет интерес, когда он видит вариант решения. В 2011 году облачные технологии охватили мир, а Джефф Дин начал сотрудничать с Эндрю Нг, профессором компьютерных наук из Стэнфорда, который возглавлял секретный проект в Google по исследованиям нейросетей. Джефф столкнулся с нейросетями ещё в студенческие годы, но тогда они не могли решать реальные проблемы. Нг сказал Джеффу, что ситуация изменилась. В Стэнфорде исследователи добились некоторых впечатляющих результатов, если дать нейросети доступ к большим объёмам данных. Нг предположил, что в большом масштабе нейронные сети могут стать не просто полезными, но и мощными.
Нейросети сильно отличаются от традиционных компьютерных программ. Их поведение не определяется обычными командами, вместо этого сеть «обучается» с помощью входных данных и обратной связи. Знания Джеффа о нейронных сетях не продвинулись с его студенческих лет, и Хайди наблюдала, как их ванная комната наполняется учебниками. Джефф стал уделять около дня в неделю проекту, который назывался Google Brain. Многие в Google сомневались в этой технологии. «Пустая трата таланта», — вспоминает свои мысли Алан Юстас, менеджер Джеффа в то время. Санджай тоже не мог понять решение друга: «Ты же работаешь над инфраструктурой, что ты там забыл?»
В течение следующих семи лет команда Google Brain разработала нейросети, которые показали лучший в мире результат в машинном переводе, распознавании речи и изображений. В конце концов, эти нейросети заменили самые важные алгоритмы Google для ранжирования результатов поиска и таргетинга рекламы, и Google Brain стал одной из самых быстрорастущих команд в компании. Клэр Цуй, инженер Google с 2001 года, говорит, что решение Джеффа стало поворотным моментом для развития ИИ в Google: «Одни верили в это, другие нет. Джефф доказал, что это может работать».
Оказалось, что ИИ критически нужен масштаб, и системный инженер Джефф Дин обеспечил его. В рамках этого проекта он руководил разработкой программы под названием TensorFlow — это была попытка создать нечто вроде MapReduce, только для ИИ. TensorFlow упрощает распределение нейросети в кластере компьютеров, превращая их в один большой мозг. В 2015 году, когда TensorFlow выпустили для общественности, он стал стандартом де-факто для работы с ИИ. Недавно исполнительный директор Сундар Пичаи объявил, что главный бизнес компании Google — это Искусственный Интеллект, и назначил Джеффа руководить всеми инициативами в области ИИ.
Теперь Джефф четыре дня в неделю уделяет управлению Google Brain. Он руководит работой 3000 человек. Ездит на переговоры, проводит еженедельные встречи для работы над новым компьютерным чипом (тензорным процессором, разработанным специально для нейронных сетей) и помогает в разработке AutoML, системы, которая использует нейронные сети для проектирования других нейронных сетей. У него есть время программировать с Санджаем только раз в неделю.
История стирает инженерные подвиги. Мы помним великих исследователей восемнадцатого века — Джеймса Кука, Джорджа Ванкувера, — но не Джона Харрисона, плотника из Йоркшира, который после десятилетий работы сделал часы достаточно надёжными, чтобы замерять долготу в море.
Недавно Джефф и Санджай наслаждались маргаритами и энчиладами в любимом мексиканском ресторане Palo Alto Sol. Джефф вытащил свой телефон и спросил: «Когда вышел Gmail?». Телефон ответил: «1 апреля 2004 года». Санджай, соблюдающий этикет за столом, казалось, не оценил порыв друга, но Джефф был в восторге. Теперь Google умеет разговаривать, слушать и отвечать на вопросы, используя стек программ, легко интегрируемых и в значительной степени невидимых, простирающихся от его телефона до дата-центров по всему миру.
Сегодня их роли разошлись. Санджай в Google известен как «индивидуальный участник» — кодер, который работает один и никем не управляет. Он благодарен за это. «Я бы не хотел работать как Джефф», — признаётся он. В настоящее время он создаёт программне обеспечение, которое облегчит инженерам объединение и управление десятками программ — новости, фотографии, цены — которые начинают работать, как только пользователь вводит текст в поле поиска Google. Раз в неделю он встречается с группой «технологических лидеров» (Area Tech Leads) — инженерным «советом джедаев» в Google — для принятия технических решений, которые влияют на всю компанию. Если бы Google был домом, Джефф бы строил пристройку, а Санджай укреплял фундамент, усиливал балки и затягивал болты.
Между тем, во время своих понедельничных сессий парного программирования они начали что-то новое. Это проект ИИ: как говорит Джефф, попытка обучить «гигантскую» модель ML выполнять тысячи или миллионы различных задач. Джефф много лет думал об этой идее; недавно он решил, что это возможно. Он и Санджай планируют построить прототип, вокруг которого сможет расти команда. В мире программного обеспечения лучший способ управления коллективом основан на программном коде.
«Думаю, они скучают друг по другу», — говорит Хайди, жена Джеффа. Пятничные ужины в кругу семьи появились, когда их сотрудничество замедлилось.
В мартовское воскресенье Джефф и Санджай встретились для загородного похода. Погода ясная, хотя жарко на солнце. Джефф прибыл к теристической тропе на синем Tesla Roadster с наклейкой на бампере Bernie 2016. Санджай вскоре за ним на красной Model S. Санджай с утра читал книгу, Джефф играл в футбол (устройство на запястье показало, что он пробежал 11 километров. Через два десятилетия после починки того индекса Джефф напоминает загорелого выносливого атлета в отставке. Санджай, кажется, вообще не постарел.
Путь представляет собой 10-километровую петлю через густые леса. Джефф пошёл первым. В лесу они вспоминали, как быстро вырос Google. Санджай вспоминал, как после первого укрупнения компании сантехник установил в мужском туалете два туалета в одной кабинке. «Помню комментарий Джеффа, — сказал он. — Две головы лучше, чем одна!». Он засмеялся.
Они спустились с леса на сухую открытую местность. В небе пролетел стервятник.
— Горы круче, чем я думал, — признался Джефф.
— А кто-то говорил, что это равнинный поход.
— Думаю, поэтому тут нет велосипедных дорожек.
Они забрались обратно в лес. Поднимаясь в гору, Джефф увидел просвет среди деревьев: «В какой-то момент будет хороший вид», — сказал он.
Тропа выходила на вершину холма, высокую и широкую, без леса, с панорамным видом. Дымка на горизонте не закрывала горы Санта-Крус на юге и Mission Peak на востоке. «Санджай, вот твой кабинет!» — сказал Джефф. Они стояли вместе и смотрели через долину.
Комментариев нет:
Отправить комментарий