Главная » Хабрахабр » [Перевод] Дружба, благодаря которой Google вырос до огромных размеров

[Перевод] Дружба, благодаря которой Google вырос до огромных размеров

Программируя вместе за одним компьютером, Джефф Дин и Санджай Гемават изменили курс компании — и весь Интернет. На иллюстрации: лучшие программисты Google иногда кажутся двумя полушариями одного мозга. Рисунок Дэвида Планкерта

Произошло ЧП: с октября 1999 года остановились краулеры. Однажды в марте 2000 года шесть лучших инженеров Google собрались в импровизированном конференц-зале. На карту было поставлено больше, чем предполагали инженеры. Хотя пользователям ещё выдавали поисковые результаты, но они устарели на пять месяцев. Если краулеры не починят, google.com застрянет в прошлом, сделка с Yahoo может провалиться, а компания рискует сжечь полученные инвестиции и кануть в небытие.
В конференц-зале у лестницы инженеры положили двери на козлы, соорудили импровизированные столы и установили компьютеры. В данный момент Ларри Пейдж и Сергей Брин вели переговоры о поставке поиска Google на крупнейший в интернете портал Yahoo и обещали увеличить поисковый индекс в десять раз, чтобы идти в ногу со Всемирной паутиной, которая за предыдущий год удвоилась в размере. Крэйг был первым сотрудником Google: он пришёл в компанию, когда её главный офис располагался в гостиной Брина, и он лично переписал большую часть кода основателей. У дальней стены сидел печальный Крэйг Сильверстайн: 27-летний худой юноша с тонким голосом. После четырёх дней и ночей работы они с румынским системным инженером по имени Богдан Кокосел ничего не добились: «Ни один из проделанных тестов не имел никакого смысла, — вспоминал Сильверстайн. — Ничего не работало, и мы не знали почему».

Санджая взяли на работу всего несколько месяцев назад, в декабре. Сильверстайн едва заметил рядом Санджая Гемавата — скромного 33-летнего брюнета с густыми бровями и проседью в висках, выпускника MIT. Джефф покинул DEC за десять месяцев до Санджая. Он пришёл вслед за своим коллегой — стройным и энергичным тридцатилетним Джеффом Дином из Digital Equipment Corporation. В «военной комнате» Джефф пододвинул стул к столу Санджая, оставив свой пустым. Они были необычайно дружны и предпочитали писать код совместно. Санджай стучал по клавиатуре, а Джефф откинулся рядом, поправляя и диктуя, как продюсер в наушнике диктора новостей.

Они обнаружили, что некоторые слова в нём отсутствовали: они вводили запрос [почтовый ящик] и не получали результатов, а другие перечислены не по порядку. Джефф и Санджай начали изучать заглохший индекс. Раздел за разделом, проверили всё. В течение нескольких дней они искали ошибку, погружаясь в логику кода. Никаких багов.

На дне этой структуры программное обеспечение встречается с железом: такой спуск от платонических абстракций кода до физики электричества и кремния. Программисты иногда представляют свою программу как структуру слоёв, которая спускается от пользовательского интерфейса вниз к более фундаментальным слоям. Они преобразовали файл индекса в двоичный код. На пятые сутки работы Джефф и Санджай начали подозревать, что проблема не в логике кода, а имеет физическую причину. Они хотели увидеть, что видят машины.

Санджай заметил: на месте 0 стоит 1. На мониторе Санджая появился толстый столбец с нулями и единицами, каждая строка представляла индексированное слово. Повреждение микросхем памяти на серверах. Когда Джефф и Санджай собрали все искажённые слова, то увидели шаблон: одинаковый сбой в каждом слове.

В течение нескольких месяцев Google испытывал всё больше аппаратных сбоев. Санджай посмотрел на Джеффа. Компьютерная техника редко выходит из строя, если только у вас не очень много компьютеров — тогда они ломаются постоянно. Проблема заключалась в том, что по мере роста Google вычислительная инфраструктура тоже расширялась. Многие машины сразу выходят из строя; другие начинают работать медленнее. Провода изнашиваются, жёсткие диски разваливаются, материнские платы перегреваются. При взрыве сверхновой в космосе взрывная волна создаёт высокоэнергетические частицы, которые рассеиваются во всех направлениях: учёные считают, что есть ненулевой шанс, что одна из частиц космического излучения может попасть в компьютерный чип на Земле и сменить 0 на 1. В игру вступают странные природные факторы. Но Google ещё работал как стартап и закупил дешёвые компьютеры, у которых не было такой защиты. Самые надёжные компьютерные системы в мире, в НАСА, финансовых фирмах и тому подобных, используют специальное оборудование, которое защищает от однобитных «флипов». Вычислительный кластер вырос до такого размера, что даже маловероятные аппаратные сбои стали неизбежны. Компания достигла точки перегиба.

Вскоре построили новый индекс — и чрезвычайная ситуация успешно разрешилась. Вместе Джефф и Санджай написали код для компенсации сбоя на повреждённых системах. Он гениально отлаживал код, но здесь ответ скрывался на аппаратном уровне. Сильверстайн был смущён. Джефф и Санджай зашли глубже.

Пейдж и Брин не были профессиональными программистами. До мартовского фиаско системы Google работали на коде, который основатели компании написали в стэнфордской аспирантуре. Когда краулер упал, он не вывел никакого информативного диагностического сообщения, кроме фразы «Тпру, лошадка!» Они были учёными, проводившими эксперимент в области поисковых технологий.

Крайне важная процедура индексирования занимала несколько дней, а если сталкивалась с проблемой, то начинала с самого начала. Систему BigFiles, написанную Пейджем и Брином, первые сотрудники компании в шутку называли BugFiles. Это была совершенно не масштабируемая система.

Когда Google ещё назывался BackRub в 1996 году весь индекс помещался на компьютерах, установленных в комнате общежития Пейджа. Мы говорим, что «ищем в интернете», но на самом деле это не так: мы работаем с поисковым индексом на серверах поисковой компании. Единственным выходом для Google осталось покупать обычные компьютеры и добавлять их в гигантский кластер. В марте 2000 года уже ни один суперкомпьютер не смог бы его обработать. К тому моменту Google подключила уже 1500 таких самодельных серверов в двухметровые стойки в здании в Санта-Кларе, штат Калифорния. Поскольку половину стоимости обычных компьютеров составляет то, что Google считает «мусором» — дисководы, металлические корпуса — компания заказывала только голые материнские платы и жёсткие диски — и соединяла их. Сбои происходили непредсказуемо и продолжали нарушать работу системы. Из-за аппаратных сбоев в каждый момент времени работали только 1200. Чтобы выжить, Google было необходимо объединить компьютеры в единый жизнеспособный организм, устойчивый к сбоям.

Уэйн Розинг, который проектировал в Apple предшественника Macintosh, пришёл в Google в ноябре 2000 года, собрав команду из ста инженеров. На пару Джефф и Санджай взяли на себя эту работу. Они добавили контрольные точки в процесс обхода Сети, чтобы краулинг перезапускался с момента сбоя, а не с самого начала. Работая по девяносто часов в неделю, они написали код, чтобы ни один сбой HDD не нарушал работу системы. Они были неумолимыми оптимизаторами. Разработав новые схемы кодирования и сжатия, они фактически удвоили возможности системы. Джефф и Санджай использовали это пространство для хранения предварительно обработанных данных для общих поисковых запросов. Например, Google переместил наиболее часто используемые данные на внешнюю сторону пластин HDD, где более высокая скорость вращения диска и, следовательно, более высокая скорость чтения и записи информации, а внутренние области пластин оставили пустыми. Открытие полностью изменило экономику компании. В течение четырёх дней в 2001 году они доказали, что индекс Google можно хранить в быстрой оперативной памяти вместо медленных HDD. Проблема была в том, что скорость требовала вычислительной мощности, а вычислительная мощность стоила денег. Пейдж и Брин знали, что пользователи толпой повалят на сервис, который мгновенно выдаёт ответы. Джефф и Санджай сумели протиснуться в игольное ушко с помощью софтверных оптимизаций.

«Как ни парадоксально, но для решения масштабных задач необходимо знать мельчайшие детали», — говорил Юстас. Алан Юстас возглавил инженерную команду после ухода Розинга в 2005 году. Однажды Джефф распространил список «Показатели задержек, которые должен знать каждый программист». Джефф и Санджай понимали систему до битового уровня. После ряда оптимизаций ключевого программного обеспечения мощность систем Google масштабировалась на порядки. Фактически, это список чисел, о которых почти никто из программистов не думает, но эти цифры буквально встроены в мозг Джеффа и Санджая: например, что вызов из кэша L1 занимает 0,5 нс или что последовательное чтение одного мегабайта из памяти занимает 250 мкс. Даже когда детали изнашивались и выходили из строя, система процветала. Между тем, в обширных центрах обработки данных техники стали ходить извилистыми маршрутами, следуя программно-сгенерированным инструкциям по замене жёстких дисков, блоков питания и модулей памяти.

Уровень 2 — выпускники колледжей. Сегодня для инженеров Google действует единая система классификации, которая начинается с уровня 1, это техподдержка. Получение уровня 4 занимает несколько лет или требует степени Ph. Сотрудники уровня 3 часто имеют степень магистра. Карьера большинства сотрудников останавливается на уровне 5. D. Седьмой уровень дают сотрудникам уровня 6 с длинным послужным списком. Инженеры 6-го уровня — лучшие 10% персонала, они настолько талантливы, что от них зависит успех проектов. О выдающихся инженерах 9-го уровня говорят с почтением. Главные инженеры уровня 8 отвечают за конкретные продукты или части инфраструктуры. Джефф и Санджай — это Senior Google Fellows, первые и единственные сотрудники уровня 11. Звание Google Fellow (уровень 10) присваивается пожизненно обычно ведущим мировым экспертам в своих областях.

Однажды в понедельник летом 2017 года после утренней сессии парного программирования Джефф и Санджай отправились на обед в кафетерий кампуса под названием Big Table, названный в честь системы, которую они помогли разработать в 2005 году для объединения бесчисленных компьютеров в виртуально единое устройство. Кампус Google, расположенный рядом с шоссе в нескольких минутах от центра Маунтин-Вью, представляет собой серию приземистых, непривлекательных зданий с тонированными окнами. Рядом на солнце он поставил ещё один стул для Джеффа, который прибыл через минуту, широкоплечий спортивный мужчина в рубашке с короткими рукавами и стильных кроссовках. Высокий и худой Санджай в древней рубашке Henley бордового цвета, серых брюках и маленьких очках на проволочной оправе высмотрел столик на террасе и быстренько занял его, открыв зонтик и присев в тени.

Они начали вспоминать о своих первых проектах. Словно влюблённые, Джефф и Санджай рассказывают истории вместе, дополняя кусочки общей картины.

Его очки потемнели на солнце. — Мы всё писали вручную, — говорит Санджай. — Нужно было переписать код и тут вдруг: «О, это похоже на то, что мы написали в прошлом месяце».

— Или немного другой проход в наших данных индексирования, — добавил Джефф.

— И так мы выяснили… — Или немного другой, — говорит Санджай.

— Это суть, — сказал Джефф.

—… что есть общая закономерность, — завершает свою мысль Санджай.

У него пальцы матроса, узловатые и жёсткие. Джефф откусил кусочек пиццы. Он задаётся вопросом, как они начали практиковать парное программирование: «Даже не знаю, как мы решили, что так будет лучше». Санджай выглядит очень нежным в сравнении с ним.

— Мы так работали ещё до Google, — сказал Джефф.

— Но я не знаю, почему мы решили, что лучше за одним компьютером, а не двумя, — говорит Санджай.

— А между ними магазин мороженого. — Моя лаборатория DEC была в двух кварталах от его лаборатории, — говорит Джефф.

— Санджай в восторге. — Так это магазин мороженого!

Дочери Джеффа называют его дядя Санджай, и впятером они часто ужинают по пятницам. Холостой Санджай проводит отпуск с Джеффом, его двумя дочерьми и женой Хайди. «Я видел, как они растут», — с гордостью говорит Санджай. Санджай и Виктория, старшая дочка Джеффа, взялись за выпечку. Санджай живет в скромном доме с тремя спальнями в Старом Маунтин-Вью, а Джефф сам спроектировал свой дом недалеко от центра Пало-Альто, установив батут в подвале. После IPO Google в 2004 году они переехали в новые дома, которые находятся в шести километрах друг от друга. Работая над домом, он обнаружил, что ему нравится проектировать пространство, но не хватает терпения к деталям, которые он называет «Санджай-ориентированными аспектами» архитектуры: деталям балок, креплениям, расчёту нагрузок, которые не дают отличному проекту развалиться.

— Не знаю, почему другие не работают таким образом, — говорит Санджай о парном программировании.

— Нужно найти партнёра, который совместим с вами по образу мышления, чтобы вы дополняли друг друга, — сказал Джефф.

Пока они шли, Джефф изложил свою стратегию мягкого мороженого: «Я его закручиваю. Они встали из-за стола и пошли искать мягкое мороженое, прогуливаясь по Big Table среди снующих гуглеров. Довольный и целеустремленный Санджай закрутил шоколадно-ванильную смесь в свой стаканчик. Думаю, такой подход добавляет стабильности», — сказал он.

Фаррелл исследовал тесные творческие коллективы: французских импрессионистов, Зигмунда Фрейда и его современников. В книге «Круги сотрудничества: динамика дружбы и творчества» 2001 года социолог Майкл П. Моне и Ренуар работали бок о бок летом 1869 года. «Большинство хрупких идей, положивших начало новому видению, возникают не тогда, когда вся группа вместе, и не тогда, когда все работают по одиночке, а когда они сотрудничали и взаимодействовали парами», — писал он. В книге «Двойная сила: поиск сути инноваций в творческих парах» писатель Джошуа Вольф Шенк цитирует интервью 1971 года, в котором Джон Леннон рассказывал, что или он, или Пол Маккартни «писал пару лёгких нот, вроде “I read the news today” или тому подобное. Они создали стиль, который стал импрессионизмом; шесть лет совместной работы породили кубизм, Пабло Пикассо и Жорж Брак часто подписывали только обратную сторону холстов, чтобы скрыть друг от друга факт завершения работы («Работа не закончена, пока мы оба не почувствовали, что это так», — вспоминал позже Пикассо). Любой может попасть в творческий тупик, но вряд ли два человека одновременно. «Один из нас застревал, пока не приходил другой, —говорил Леннон, — я спою половину, а у него находилось вдохновение написать другую часть, и наоборот».

Франсуа Якоб, который вместе с Жаком Монодом совершил прорыв в исследовании регулирующей функции генов, отметил, что к середине 20 века большинство исследований в области молекулярной биологии осуществлялось в парах: «Вдвоём легче, чем одному, изобретать теории и строить модели, — писал Джейкоб. На этапе «теоретического строительства» новой науки или искусства важно расширять горизонты, не застревая в тупике. Они отскакивают от партнёра к партнёру. — Когда над проблемой работает два ума, идеи появляются чаще и быстрее. А ложные иллюзии пресекаются в зародыше». Свиваются друг с другом, словно ветви на дереве. За последние 35 лет около половины Нобелевских премий в области физиологии и медицины присуждены парам учёных.

Они подражают друг другу в привычках и одежде, у них общее чувство юмора. После долгих лет совместной работы партнёры иногда развивают собственный язык, как это делают близнецы. Но такие тесные партнёрства редко встречаются в разработке программного обеспечения. Становится невозможно оценить конкретный вклад каждого в совместной работе. Джефф и Санджай, напротив, иногда кажутся двумя полушариями одного мозга. Хотя разработчики иногда говорят о «парном программировании», когда два программиста совместно используют один компьютер, один «за рулём», а другой «навигатор» — они обычно представляют только рабочие отношения, как у пилотов в самолёте. Тем не менее, Билл Кохран, один из их менеджеров, вспоминает: «Они были настолько плодовиты и настолько эффективны в паре, что мы часто просто создавали команды вокруг них». В их самых известных научных работах перечислено до десятка соавторов.

С тех пор продолжаются споры о существовании так называемого «10-кратного программиста». В 1966 году исследователи из System Development Corporation обнаружили, что лучшие программисты более чем в десять раз эффективнее худших. В программировании мало что достигается в изоляции. Эта идея подчёркивает индивидуальность, в то время как большие программные проекты создаёт коллектив. По иронии, многие программисты рассматривают результаты совместной работы Джеффа и Санджая как доказательство того, что 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 на десять процентов».

Они сделали это с помощью программного обеспечения MapReduce. В 2003 году за четыре месяца Джефф и Санджай провели, возможно, самое крупное обновление в истории Google. Они поняли, что каждый раз решают важную проблему: координация работы в огромном количестве географически распределённых, ненадёжных по отдельности компьютеров. Идея пришла, когда они в третий раз переписывали краулер и индексатор Google. При этом появится инструмент, который любой программист в Google может использовать для управления машинами в дата-центрах, как будто все они — один компьютер размером с планету. Если обобщить решение, то проблема будет решена навсегда.

Этот инструмент навсегда упорядочил умопомрачительно сложный процесс. Джефф и Санджай написали MapReduce в угловом офисе с видом на пруд с утками. MapReduce даёт структурированный способ решения этих проблем. Раньше каждому программисту приходилось самостоятельно разбираться, как разделять и распределять данные, назначать работы и учитывать аппаратные сбои. Сначала программист даёт каждой машине «карту» задачи (например, подсчитать количество упоминаний слова на странице); затем пишет инструкции для «сокращения» результатов со всех машин (например, путём суммирования). Как шеф-повар готовит ингредиенты перед началом кулинарной работы, так MapReduce делит задачи на два этапа. MapReduce обрабатывает детали распределения и, таким образом, скрывает их.

Вскоре другие инженеры поняли, насколько это мощная система — и начали использовать MapReduce для обработки видео и визуализации тайлов на Google Maps. На следующий год Джефф и Санджай переписали систему обхода и индексирования Google с точки зрения задач MapReduce. У Google есть суточный цикл нагрузки: днём больше трафика, чем ночью, и задачи MapReduce стали поглощать простаивающую ёмкость. MapReduce был настолько прост, что новые задачи появлялись сами собой. Теперь Google начал по ночам обрабатывать свои данные. Во сне мозг человека обрабатывает дневной опыт.

В 2001 году Ноам Шазир, который делил офис с Джеффом и Санджаем, решил переделать систему проверки орфографии, которую Google лицензировал у другой компании. Давно появились свидетельства, что Google — на самом деле компания ИИ, которая только притворяется поисковой системой. Например, слово TurboTax она предлагала заменить на turbot ax (камбала, обитающая в Северной Атлантике). Эта система продолжала совершать неловкие ошибки.

Шазир понял, что в интернете у Google доступ к самому большому словарю, который когда-либо существовал в истории человечества. Качество проверки орфографии зависит от словаря. Программа понимала, что “pritany spears” и “brinsley spears” означают «Бритни Спирс». Он написал программу, которая использовала статистические свойства текста в интернете, чтобы определить, какие слова скорее всего напечатаны с ошибкой. Шазир сотрудничестве с Джеффом Дином и инженером по имени Жорж Харик разработал аналогичную систему таргетинга рекламы по содержанию веб-страниц. Когда Шазир показал программу на еженедельном собрании, многие сотрудники многократно старались её обмануть, но в основном безуспешно. Это стало началом цикла обратной связи: рост инфраструктуры улучшает вычислительные способности и интеллект Google; вычислительные способности становятся источником прибыли, а прибыль позволяет наращивать инфраструктуру. Этот таргетинг принёс целую лавину денег, которые компания направила в свою вычислительную инфраструктуру. Такой цикл обратной связи принёс компании чрезвычайное и беспрецедентное доминирование на рынке.

Эти системы разрабатывались с использованием относительно несложных алгоритмов машинного обучения. Находчивые программисты использовали MapReduce для получения разных инсайтов из данных Google: так стало возможным транскрибировать голосовые сообщения пользователей, отвечать на их вопросы, автодополнять запросы и переводить тексты на более чем сто языков. Поскольку «данные, данные, данные» — хранящиеся и обрабатываемые с помощью BigTable, MapReduce и их преемников — главный актив компании, глобальная инфраструктура Google стала более гибкой и масштабируемой. Тем не менее, «когда у вас много данных, очень простые методы работают невероятно хорошо», — сказал Джефф. Понятия «облачные вычисления» и «большие данные» существовали до появления Google. Идея распределённых вычислений появилась давно. Пользователи почувствовали: что-то изменилось — облако Google становится умнее. Но сделав инфраструктуру интеллектуально управляемой для распределённых программ обычных программистов, Джефф и Санджай подняли Google на новый уровень.

Тогда они опубликовали статью «MapReduce: упрощённая обработка данных в больших кластерах». В 2004 году Джефф и Санджай думали, что система будет полезна астрономам, генетикам и другим учёным с большим количеством данных для обработки. Дешёвое оборудование, рост веб-сервисов и подключённых устройств привели к потоку данных, но лишь немногие компании имели программное обеспечение для обработки таких массивов информации. Документ появился как Бог из машины. В конце концов они назвали свой проект Hadoop, по названию игрушечного слоника, которого любил сын Каттинга. Два инженера, которые изо всех сил пытались масштабировать небольшую поисковую систему под названием Nutch — Майк Кафарелла и Даг Каттинг — были настолько убеждены в важности MapReduce, что решили создать бесплатный клон этой системы с нуля.

Это стало синонимом «больших данных». Постепенно Hadoop внедрила у себя половина компаний Fortune 50. В какой-то момент в Facebook работал самый большой кластер Hadoop в мире. Facebook использовал Hadoop MapReduce для хранения и обработки метаданных пользователей — информации о кликах, лайках, просмотрах рекламы. Hadoop MapReduce способствовал успеху LinkedIn и Netflix.

Hadoop выполнил задачу анализа в 18 000 раз быстрее, чем предыдущая система. Бывший директор по технологиям АНБ Рэнди Гарретт помнит, как демонстрировал технологию директору АНБ, генералу Киту Александеру. Это стало основой для нового подхода к сбору разведданных, который некоторые наблюдатели называют «тотальный сбор всего».

В 2011 году облачные технологии охватили мир, а Джефф Дин начал сотрудничать с Эндрю Нг, профессором компьютерных наук из Стэнфорда, который возглавлял секретный проект в Google по исследованиям нейросетей. У Джеффа беспокойный характер: для него проблема теряет интерес, когда он видит вариант решения. Нг сказал Джеффу, что ситуация изменилась. Джефф столкнулся с нейросетями ещё в студенческие годы, но тогда они не могли решать реальные проблемы. Нг предположил, что в большом масштабе нейронные сети могут стать не просто полезными, но и мощными. В Стэнфорде исследователи добились некоторых впечатляющих результатов, если дать нейросети доступ к большим объёмам данных.

Их поведение не определяется обычными командами, вместо этого сеть «обучается» с помощью входных данных и обратной связи. Нейросети сильно отличаются от традиционных компьютерных программ. Джефф стал уделять около дня в неделю проекту, который назывался Google Brain. Знания Джеффа о нейронных сетях не продвинулись с его студенческих лет, и Хайди наблюдала, как их ванная комната наполняется учебниками. «Пустая трата таланта», — вспоминает свои мысли Алан Юстас, менеджер Джеффа в то время. Многие в Google сомневались в этой технологии. Санджай тоже не мог понять решение друга: «Ты же работаешь над инфраструктурой, что ты там забыл?»

В конце концов, эти нейросети заменили самые важные алгоритмы Google для ранжирования результатов поиска и таргетинга рекламы, и Google Brain стал одной из самых быстрорастущих команд в компании. В течение следующих семи лет команда Google Brain разработала нейросети, которые показали лучший в мире результат в машинном переводе, распознавании речи и изображений. Джефф доказал, что это может работать». Клэр Цуй, инженер Google с 2001 года, говорит, что решение Джеффа стало поворотным моментом для развития ИИ в Google: «Одни верили в это, другие нет.

В рамках этого проекта он руководил разработкой программы под названием TensorFlow — это была попытка создать нечто вроде MapReduce, только для ИИ. Оказалось, что ИИ критически нужен масштаб, и системный инженер Джефф Дин обеспечил его. В 2015 году, когда TensorFlow выпустили для общественности, он стал стандартом де-факто для работы с ИИ. TensorFlow упрощает распределение нейросети в кластере компьютеров, превращая их в один большой мозг. Недавно исполнительный директор Сундар Пичаи объявил, что главный бизнес компании Google — это Искусственный Интеллект, и назначил Джеффа руководить всеми инициативами в области ИИ.

Он руководит работой 3000 человек. Теперь Джефф четыре дня в неделю уделяет управлению Google Brain. У него есть время программировать с Санджаем только раз в неделю. Ездит на переговоры, проводит еженедельные встречи для работы над новым компьютерным чипом (тензорным процессором, разработанным специально для нейронных сетей) и помогает в разработке AutoML, системы, которая использует нейронные сети для проектирования других нейронных сетей.

Мы помним великих исследователей восемнадцатого века — Джеймса Кука, Джорджа Ванкувера, — но не Джона Харрисона, плотника из Йоркшира, который после десятилетий работы сделал часы достаточно надёжными, чтобы замерять долготу в море. История стирает инженерные подвиги.

Джефф вытащил свой телефон и спросил: «Когда вышел Gmail?». Недавно Джефф и Санджай наслаждались маргаритами и энчиладами в любимом мексиканском ресторане Palo Alto Sol. Санджай, соблюдающий этикет за столом, казалось, не оценил порыв друга, но Джефф был в восторге. Телефон ответил: «1 апреля 2004 года». Теперь Google умеет разговаривать, слушать и отвечать на вопросы, используя стек программ, легко интегрируемых и в значительной степени невидимых, простирающихся от его телефона до дата-центров по всему миру.

Санджай в Google известен как «индивидуальный участник» — кодер, который работает один и никем не управляет. Сегодня их роли разошлись. «Я бы не хотел работать как Джефф», — признаётся он. Он благодарен за это. Раз в неделю он встречается с группой «технологических лидеров» (Area Tech Leads) — инженерным «советом джедаев» в Google — для принятия технических решений, которые влияют на всю компанию. В настоящее время он создаёт программне обеспечение, которое облегчит инженерам объединение и управление десятками программ — новости, фотографии, цены — которые начинают работать, как только пользователь вводит текст в поле поиска Google. Если бы Google был домом, Джефф бы строил пристройку, а Санджай укреплял фундамент, усиливал балки и затягивал болты.

Это проект ИИ: как говорит Джефф, попытка обучить «гигантскую» модель ML выполнять тысячи или миллионы различных задач. Между тем, во время своих понедельничных сессий парного программирования они начали что-то новое. Он и Санджай планируют построить прототип, вокруг которого сможет расти команда. Джефф много лет думал об этой идее; недавно он решил, что это возможно. В мире программного обеспечения лучший способ управления коллективом основан на программном коде.

Пятничные ужины в кругу семьи появились, когда их сотрудничество замедлилось. «Думаю, они скучают друг по другу», — говорит Хайди, жена Джеффа.

Погода ясная, хотя жарко на солнце. В мартовское воскресенье Джефф и Санджай встретились для загородного похода. Санджай вскоре за ним на красной Model S. Джефф прибыл к теристической тропе на синем Tesla Roadster с наклейкой на бампере Bernie 2016. Через два десятилетия после починки того индекса Джефф напоминает загорелого выносливого атлета в отставке. Санджай с утра читал книгу, Джефф играл в футбол (устройство на запястье показало, что он пробежал 11 километров. Санджай, кажется, вообще не постарел.

Джефф пошёл первым. Путь представляет собой 10-километровую петлю через густые леса. Санджай вспоминал, как после первого укрупнения компании сантехник установил в мужском туалете два туалета в одной кабинке. В лесу они вспоминали, как быстро вырос Google. — Две головы лучше, чем одна!». «Помню комментарий Джеффа, — сказал он. Он засмеялся.

В небе пролетел стервятник. Они спустились с леса на сухую открытую местность.

— Горы круче, чем я думал, — признался Джефф.

— А кто-то говорил, что это равнинный поход.

— Думаю, поэтому тут нет велосипедных дорожек.

Поднимаясь в гору, Джефф увидел просвет среди деревьев: «В какой-то момент будет хороший вид», — сказал он. Они забрались обратно в лес.

Дымка на горизонте не закрывала горы Санта-Крус на юге и Mission Peak на востоке. Тропа выходила на вершину холма, высокую и широкую, без леса, с панорамным видом. Они стояли вместе и смотрели через долину. «Санджай, вот твой кабинет!» — сказал Джефф.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Из песочницы] Создание домашнего медиацентра. Пролог

Пролог Всё имеет своё начало. Вот и эта история началась с желания иметь свой медиацентр. Внимательно присмотревшись к предложениям продавцов, я понял, что серийные модели не удовлетворяют мои потребности. А аппетит у меня здоровый… Сразу приведу перечень моих пожеланий: Всё ...

Дайджест интересных материалов для мобильного разработчика #279 (10 — 16 декабря)

В новом дайджесте у нас шикарное расследование про геолокацию и то, как приложения делятся данными с рекламодателями, Metal и SceneKit для разработчиков, история приложения на $500,000, лучшие SDK, рост и реклама 2018. SceneKit — высокоуровневый фреймворк трехмерной графики в iOS, ...