Amizade que tornou o Google tão grande

Programando juntos no mesmo computador, Jeff Dean e Sanjay Gemavat mudaram o curso da empresa - e toda a Internet. Na ilustração: os melhores programadores do Google às vezes parecem ser dois hemisférios do mesmo cérebro. Desenho de David Plankert

Um dia, em março de 2000, seis dos melhores engenheiros do Google se reuniram em uma sala de conferências improvisada. Ocorreu uma emergência: desde outubro de 1999, os rastreadores pararam. Embora os usuários ainda recebam resultados de pesquisa, eles estão desatualizados por cinco meses. Mais estava em jogo do que os engenheiros esperavam. No momento, Larry Page e Sergey Brin estavam negociando a entrega da pesquisa no Google para o maior portal da Internet Yahoo e prometeram aumentar o índice de pesquisa em dez vezes para acompanhar a World Wide Web, que dobrou de tamanho em relação ao ano anterior. Se os rastreadores não forem reparados, o google.com ficará bloqueado no passado, o acordo com o Yahoo poderá falhar e a empresa corre o risco de queimar seu investimento e cair no esquecimento.

Na sala de conferências, perto da escada, os engenheiros colocaram portas no pórtico, construíram mesas improvisadas e instalaram computadores. Na parede oposta estava um Craig Silverstein triste: um jovem magro de 27 anos com uma voz magra. Craig foi o primeiro funcionário do Google: ele ingressou na empresa quando seu escritório principal estava localizado na sala de Brin e ele pessoalmente reescreveu a maior parte do código dos fundadores. Depois de quatro dias e noites de trabalho, eles não conseguiram nada com um engenheiro de sistemas romeno chamado Bogdan Kokosel: "Nenhum dos testes realizados fazia sentido", lembrou Silverstein. "Nada funcionou e não sabíamos o porquê."

Silverstein mal notou Sanjay Gemavat, uma morena modesta de 33 anos com sobrancelhas grossas e cabelos grisalhos nas têmporas, formada no MIT. Sanjaya foi contratado apenas alguns meses atrás, em dezembro. Ele veio atrás de seu colega, o esbelto e enérgico Jeff Dean, da Digital Equipment Corporation, de trinta anos. Jeff partiu de dezembro dez meses antes de Sanjay. Eles eram incomumente amigáveis ​​e preferiam escrever código juntos. Na "sala de guerra", Jeff puxou uma cadeira para a mesa de Sanjay, deixando-a vazia. Sanjay bateu no teclado, e Jeff sentou-se ao lado dele, corrigindo e ditando, como um produtor de fone de ouvido para um locutor de notícias.

Jeff e Sanjay começaram a estudar o índice parado. Eles descobriram que algumas palavras estavam ausentes: inseriram uma consulta [caixa de correio] e não receberam resultados, enquanto outras foram listadas fora de ordem. Por vários dias, eles procuraram por um erro, mergulhando na lógica do código. Seção por seção, verificamos tudo. Sem bugs.

Às vezes, os programadores apresentam seu programa como uma estrutura de camada que desce da interface do usuário para camadas mais fundamentais. Na parte inferior dessa estrutura, o software encontra o ferro: uma descida das abstrações do código platônico à física da eletricidade e do silício. No quinto dia de trabalho, Jeff e Sanjay começaram a suspeitar que o problema não estava na lógica do código, mas tinha uma causa física. Eles converteram o arquivo de índice em binário. Eles queriam ver o que viram carros.

Uma coluna grossa com zeros e uns apareceu no monitor de Sanjay, cada linha representando uma palavra indexada. Sanjay observou: 0 está no lugar de 1. Quando Jeff e Sanjay coletaram todas as palavras distorcidas, eles viram um padrão: a mesma falha em cada palavra. Danos aos chips de memória nos servidores.

Sanjay olhou para Jeff. Por vários meses, o Google experimentou mais e mais falhas de hardware. O problema era que, à medida que o Google crescia, a infraestrutura de computação também se expandia. O equipamento de computador raramente trava, a menos que você tenha muitos computadores - eles quebram constantemente. Os fios se desgastam, os discos rígidos desmoronam, as placas-mãe superaquecem. Muitos carros falham imediatamente; outros começam a trabalhar mais devagar. Fatores naturais estranhos entram em cena. Em uma explosão de supernova no espaço, uma onda de explosão cria partículas de alta energia que se espalham em todas as direções: os cientistas acreditam que há uma chance diferente de zero de que uma das partículas de radiação cósmica possa entrar em um chip de computador na Terra e mudar de 0 para 1. Os sistemas de computador mais confiáveis ​​do mundo , na NASA, empresas financeiras e similares usam equipamentos especiais que protegem contra oscilações de um bit. Mas o Google ainda funcionava como uma startup e comprava computadores baratos que não tinham essa proteção. A empresa atingiu um ponto de inflexão. O cluster de computação cresceu para um tamanho que até falhas improváveis ​​de hardware se tornam inevitáveis.

Juntos, Jeff e Sanjay escreveram um código para compensar um mau funcionamento em sistemas danificados. Um novo índice foi criado em breve - e a emergência foi resolvida com sucesso. Silverstein estava confuso. Ele genuinamente depurou o código, mas aqui a resposta estava escondida no nível do hardware. Jeff e Sanjay foram mais fundo.

Antes do fiasco de março, os sistemas do Google trabalhavam no código que os fundadores da empresa escreveram na faculdade de Stanford. Page e Brin não eram programadores profissionais. Eles eram cientistas conduzindo um experimento em tecnologia de busca. Quando o rastreador caiu, ele não exibiu nenhuma mensagem informativa de diagnóstico, exceto a frase "Uau, cavalo!"

O sistema BigFiles, escrito por Page e Brin, foi chamado de BugFiles pela brincadeira pelos primeiros funcionários da empresa. O procedimento de indexação extremamente importante levou vários dias e, se eu encontrar um problema, ele começou do começo. Era um sistema completamente não escalável.

Dizemos que estamos pesquisando na Internet, mas na verdade não é assim: trabalhamos com o índice de pesquisa nos servidores da empresa de pesquisa. Quando o Google ainda era chamado de BackRub em 1996, todo o índice era colocado em computadores instalados no dormitório de Page. Em março de 2000, nem um único supercomputador conseguiu lidar com isso. A única saída do Google era comprar computadores comuns e adicioná-los a um cluster gigante. Como metade do custo dos computadores convencionais é o que o Google considera “lixo” - unidades de disco, estojos de metal - a empresa encomendou apenas placas-mãe e discos rígidos nus - e os conectou. Naquela época, o Google já havia conectado 1.500 servidores caseiros a racks de dois metros em um prédio em Santa Clara, Califórnia. Devido a falhas de hardware, apenas 1.200 funcionaram em um determinado momento.Falhas ocorreram de forma imprevisível e continuaram a interromper o sistema. Para sobreviver, o Google precisava integrar computadores em um único organismo viável e tolerante a falhas.

Jeff e Sanjay assumiram este trabalho. Wayne Rosing, que projetou o antecessor Macintosh na Apple, ingressou no Google em novembro de 2000, reunindo uma equipe de cem engenheiros. Trabalhando noventa horas por semana, eles escreveram um código para que nenhuma falha no HDD atrapalhasse o sistema. Eles adicionaram pontos de interrupção ao processo de travessia da Web, para que o rastreamento reinicie a partir do ponto de falha e não desde o início. Ao desenvolver novos esquemas de codificação e compactação, eles realmente dobraram os recursos do sistema. Eles eram otimizadores implacáveis. Por exemplo, o Google moveu os dados usados ​​com mais freqüência para fora das placas de disco rígido, onde há uma velocidade de rotação do disco mais alta e, portanto, maior velocidade de leitura e gravação de informações, e as áreas internas das placas são deixadas em branco. Jeff e Sanjay usaram esse espaço para armazenar dados pré-processados ​​para consultas de pesquisa geral. Por quatro dias em 2001, eles provaram que o índice do Google pode ser armazenado em RAM rápida, em vez de HDDs lentos. A descoberta mudou completamente a economia da empresa. Page e Brin sabiam que a multidão iria para um serviço que respondesse instantaneamente. O problema era que a velocidade exigia poder de processamento e esse custo custa dinheiro. Jeff e Sanjay conseguiram se espremer no olho da agulha usando otimizações de software.

Alan Eustace liderou a equipe de engenharia depois que Rosing saiu em 2005. "Paradoxalmente, para resolver tarefas em grande escala, você precisa conhecer os menores detalhes", disse Eustace. Jeff e Sanjay entendiam o sistema no nível de bits. Uma vez Jeff distribuiu uma lista de "Atrasos que todo programador deveria conhecer" . De fato, esta é uma lista de números em que quase nenhum programador pensa, mas esses números estão literalmente embutidos no cérebro de Jeff e Sanjay: por exemplo, que a chamada do cache L1 leva 0,5 ns ou que a leitura seqüencial de um megabyte da memória leva 250 μs. Após uma série de otimizações importantes de software, o poder dos sistemas do Google foi escalado por ordens de magnitude. Enquanto isso, os técnicos começaram a seguir rotas sinuosas em vastos datacenters, seguindo instruções geradas por software para substituir discos rígidos, fontes de alimentação e módulos de memória. Mesmo quando as peças se desgastaram e falharam, o sistema floresceu.

Hoje, os engenheiros do Google têm um sistema de classificação unificado que começa no nível 1, é o suporte técnico. Nível 2 - graduados. Os funcionários de nível 3 geralmente têm mestrado. A obtenção do nível 4 leva vários anos ou requer um Ph.D. A carreira da maioria dos funcionários para no nível 5. Os engenheiros do 6º nível são os melhores 10% da equipe, são tão talentosos que o sucesso dos projetos depende deles. O nível 7 é atribuído a funcionários do nível 6 com um longo histórico. Os engenheiros-chefe da camada 8 são responsáveis ​​por produtos ou partes específicas da infraestrutura. Engenheiros de nível 9 proeminentes são respeitados. O título do Google Fellow (nível 10) é atribuído para toda a vida aos geralmente líderes mundiais especialistas em seus campos. Jeff e Sanjay são bolsistas sênior do Google, o primeiro e único funcionário de nível 11.

O campus do Google, localizado fora da rodovia, a poucos minutos do centro de Mountain View, é uma série de edifícios agachados e pouco atraentes, com janelas coloridas. Numa segunda-feira de manhã no verão de 2017, após uma sessão matinal de pares, Jeff e Sanjay foram almoçar na cafeteria do campus chamada Big Table, em homenagem ao sistema que ajudaram a desenvolver em 2005 para integrar inúmeros computadores em um dispositivo praticamente único. O alto e magro Sanjay, com uma antiga camisa Henley bordô, calça cinza e pequenos óculos com aro de arame, procurou uma mesa no terraço e rapidamente a ocupou, abrindo um guarda-chuva e agachando-se à sombra. Perto do sol, ele colocou outra cadeira para Jeff, que chegou um minuto depois, um homem atlético de ombros largos em uma camisa de manga curta e tênis estiloso.

Como amantes, Jeff e Sanjay contam histórias juntos, complementando partes do quadro geral. Eles começaram a relembrar seus primeiros projetos.

"Escrevemos tudo à mão", diz Sanjay. Seus óculos escureceram ao sol. "Era necessário reescrever o código e, de repente," parece que o que escrevemos no mês passado ".

"Ou uma passagem ligeiramente diferente em nossos dados de indexação", acrescentou Jeff.

"Ou um pouco diferente", diz Sanjay. "E então descobrimos ..."

"Esse é o ponto", disse Jeff.

"... que existe um padrão geral", Sanjay conclui seu pensamento.

Jeff deu uma mordida na pizza. Ele tem dedos de marinheiro, ásperos e rígidos. Sanjay parece muito terno comparado a ele. Ele se pergunta como eles começaram a praticar a programação em pares: "Eu nem sei como decidimos que seria melhor".

"Fizemos isso antes do Google", disse Jeff.

"Mas não sei por que decidimos que era melhor ter um computador, não dois", diz Sanjay.

"Meu DEC estava a dois quarteirões do laboratório", diz Jeff. - E entre eles é uma sorveteria.

- Então é uma sorveteria! - Sanjay está encantado.

Sanjay solteiro está de férias com Jeff, suas duas filhas e sua esposa Heidi. As filhas de Jeff o chamam de tio Sanjay, e as cinco costumam jantar às sextas-feiras. Sanjay e Victoria, a filha mais velha de Jeff, começaram a assar. "Eu os vi crescer", diz Sanjay orgulhosamente. Após o IPO do Google em 2004, eles se mudaram para novas casas, separadas por seis quilômetros. Sanjay vive em uma modesta casa de três quartos em Old Mountain View, enquanto Jeff ele mesmo projetou sua casa perto do centro de Palo Alto, montando um trampolim no porão. Enquanto trabalhava na casa, ele descobriu que gosta de projetar o espaço, mas não tem paciência para os detalhes que ele chama de “aspectos orientados a Sanjay” da arquitetura: os detalhes de vigas, luminárias, balanceamento de carga, que impedem um excelente design de desmoronar.

"Não sei por que os outros não funcionam dessa maneira", diz Sanjay sobre programação em pares.

"Precisamos encontrar um parceiro que seja compatível com você de uma maneira que pense que você se complementa", disse Jeff.

Eles se levantaram da mesa e foram procurar sorvete macio, caminhando ao longo da Grande Mesa entre os googlers que corriam. Enquanto caminhavam, Jeff delineou sua estratégia de sorvete macio: “Estou girando. Eu acho que essa abordagem agrega estabilidade ”, disse ele. Satisfeito e decidido, Sanjay enrolou a mistura de chocolate e baunilha no copo.

No livro de 2001 "Círculos de cooperação: a dinâmica da amizade e da criatividade" , o sociólogo Michael P. Farrell explorou grupos criativos próximos: os impressionistas franceses, Sigmund Freud e seus contemporâneos. "A maioria das idéias frágeis que lançaram as bases para uma nova visão não surge quando todo o grupo está junto, e não quando todos trabalham sozinhos, mas quando colaboram e interagem em pares", escreveu ele. Monet e Renoir trabalharam lado a lado no verão de 1869. Eles criaram um estilo que se tornou impressionismo; Seis anos de colaboração deram origem ao cubismo, Pablo Picasso e Georges Braque costumavam assinar apenas a parte de trás das telas para esconder um do outro o fato de que o trabalho estava concluído ("O trabalho não está terminado até que ambos sentimos que sim", lembrou Picasso mais tarde). No livro "Double Power: Searching the Essence of Innovation in Creative Couples", o escritor Joshua Wolf Schenck cita uma entrevista em 1971, na qual John Lennon disse que ele ou Paul McCartney "escreveram algumas notas leves, como" eu leio as notícias hoje "ou coisas assim. “Um de nós ficou preso até o outro chegar”, disse Lennon, “cantarei metade, e ele foi inspirado a escrever outra parte e vice-versa.” Qualquer um pode entrar em um impasse criativo, mas dificilmente duas pessoas ao mesmo tempo.

No estágio de "construção teórica" ​​de uma nova ciência ou arte, é importante expandir horizontes sem ficar preso em um beco sem saída. François Jacob, que, juntamente com Jacques Monod, fez um avanço no estudo da função reguladora dos genes, observou que, em meados do século 20, a maioria das pesquisas no campo da biologia molecular era realizada em pares: "Juntos, é mais fácil do que alguém inventar teorias e construir modelos", escreveu Jacob. - Quando duas mentes trabalham em um problema, as idéias aparecem com mais frequência e mais rapidez. Eles saltam de parceiro para parceiro. Eles se torcem como galhos em uma árvore. E falsas ilusões são cortadas pela raiz. Nos últimos 35 anos, cerca de metade dos prêmios Nobel no campo da fisiologia e medicina foram concedidos a pares de cientistas.

Depois de muitos anos trabalhando juntos, os parceiros às vezes desenvolvem sua própria linguagem, como os gêmeos. Eles se imitam em hábitos e roupas, têm um senso comum de humor. Torna-se impossível avaliar a contribuição específica de cada um na colaboração. Mas essas parcerias estreitas raramente são encontradas no desenvolvimento de software. Embora os desenvolvedores às vezes falem sobre "programação em pares", quando dois programadores compartilham um computador, um "ao volante" e outro "navegador", eles geralmente representam apenas uma relação de trabalho, como pilotos de avião. Jeff e Sanjay, por outro lado, às vezes parecem ser dois hemisférios do mesmo cérebro. Nos trabalhos científicos mais famosos, são listados até uma dúzia de colaboradores. No entanto, Bill Cochran, um de seus gerentes, lembra: "Eles eram tão prolíficos e tão eficazes em pares que muitas vezes criamos equipes em torno deles".

Em 1966, pesquisadores da System Development Corporation descobriram que os melhores programadores são dez vezes mais eficientes que os piores. Desde então, disputas sobre a existência do chamado "programador 10 vezes". Essa idéia enfatiza a individualidade, enquanto grandes projetos de software são criados pela equipe. Na programação, pouco é alcançado isoladamente. Ironicamente, muitos programadores veem os resultados da colaboração de Jeff e Sanjay como prova de que existe um programador de 10x.

Jeff nasceu no Havaí em julho de 1968. Seu pai, Andy, era um explorador de doenças tropicais; A mãe de Virginia Lee é uma antropóloga médica com meia dúzia de idiomas. Por uma questão de diversão, pai e filho montaram um computador com o kit IMSAI 8080. Eles soldaram peças, estudando cada peça.

Jeff e seus pais costumavam se mudar. Aos treze anos, ele perdeu os últimos três meses da oitava série para ajudá-los em um campo de refugiados no oeste da Somália. No ensino médio, ele começou a escrever um programa de coleta de dados para epidemiologistas chamado Epi Info;tornou-se uma ferramenta padrão para pesquisadores, traduzida para dezenas de idiomas e vendeu centenas de milhares de cópias (no site do Centro de Controle e Prevenção de Doenças publicou uma fotografia de Jeff em sua graduação). Heidi, que Jeff conheceu na Universidade de Minnesota College, aprendeu sobre o significado desse programa apenas anos depois. "Ele não se gabava de nada disso", diz ela. "Tudo tinha que ser arrancado dele." Seu primeiro encontro foi em um jogo de basquete feminino, onde Jeff divertiu a platéia com uma fantasia de esquilo.

A tese de doutorado de Jeff se concentra em compiladores. “Os próprios compiladores são muito chatos”, diz Alan Eustace, mas, por outro lado, “é um nível muito baixo, próximo ao hardware”. Descrevendo Jeff, Sanjay gira um dedo em sua têmpora: “Ao escrever código, um determinado modelo é formado em sua cabeça. Qual será o desempenho desse código? Ele calcula quase automaticamente todas as situações de fronteira. ”

Sanjay se sentou pela primeira vez em um computador aos dezessete anos quando foi para a Universidade de Cornell. Ele nasceu em West Lafayette, Indiana, em 1966, mas cresceu em Kota, uma cidade industrial no norte da Índia. Seu pai, Mahipal, era professor de botânica; a mãe de Shant cuidava de Sanjay e seus dois irmãos e irmãs mais velhos. A família adorava livros: seu tio Ashok Meta lembra como ele comprou o "Jackal Day" para crianças .Frederick Forsyth, encadernado, e as crianças leram um livro esfarrapado juntos, passando páginas um para o outro quando terminaram. O irmão de Sanjay, Pankaj, tornou-se o professor mais jovem a receber um cargo na Harvard Business School (agora é professor da Universidade de Nova York). Pankaj estudou na mesma escola que Sanjay e era conhecido como homem do Renascimento: "Eu meio que vivia na sombra do meu irmão", diz Sanjay. Quando adulto, ele manteve essa modéstia. Em 2016, quando ele foi apresentado à Academia Americana de Artes e Ciências, ele nem contou aos pais; eles aprenderam as notícias de um vizinho.

Na MIT Graduate School, Sanjay fez amigos. No entanto, ele nunca conheceu garotas lá, e agora ele faz isso "muito, muito raramente". Ele diz que não se recusou a iniciar uma família, apenas aconteceu dessa maneira. Seus amigos íntimos aprenderam a não incomodá-lo com isso, e seus pais há muito perceberam que seu filho continuaria solteiro. Talvez por ser tão fechado, um halo de segredo tenha se desenvolvido em torno do Google em torno de Sanjay. Ele é considerado um engenheiro quieto, mas sólido - que pensa profundamente e com extraordinária clareza. Em cima da mesa, ele tem uma pilha organizada de cadernos Mead por quase vinte anos, repleta de listas e diagramas organizados. Ele ainda faz anotações à mão: ele diz que ajuda pensar. No MIT, sua supervisora ​​era Barbara Liskov, uma influente cientista da computação,que estudou incluindo o gerenciamento de bases de código complexas. Na sua opinião, o melhor código é como uma boa literatura. Deve ter uma estrutura cuidadosamente pensada, e cada palavra deve funcionar. Essa programação requer empatia com os leitores. E o código é considerado não apenas como um meio para um fim, mas também como um artefato valioso em si. "Acho que ele projeta melhor os sistemas", diz Craig Silverstein. “Basta olhar para o código: é bonito, como uma obra de arte, como uma escultura em proporções perfeitas.”"Acho que ele projeta melhor os sistemas", diz Craig Silverstein. “Basta olhar para o código: é bonito, como uma obra de arte, como uma escultura em proporções perfeitas.”"Acho que ele projeta melhor os sistemas", diz Craig Silverstein. “Basta olhar para o código: é bonito, como uma obra de arte, como uma escultura em proporções perfeitas.”

No Google, Jeff é muito mais famoso. Eles criam memes sobre ele, como sobre Chuck Norris. ("Chuck Norris contou ad infinitum ... duas vezes"; "O currículo de Jeff Dean resume as coisas que ele não fez: tão curto").

"Quando Jeff Dean desenvolve um programa, ele primeiro cria um binário e depois escreve o código-fonte como documentação."

"Jeff Dean falhou uma vez no teste de Turing porque ele definiu corretamente o número 203 de Fibonacci em menos de um segundo."

“Uma vez em 2002, quando o back-end da pesquisa foi desconectado, Jeff Dean respondeu manualmente às perguntas dos usuários por duas horas. Durante esse período, a qualidade dos resultados da pesquisa aumentou significativamente ...


No artigo "Jeff Dean, do Google - este é o Chuck Norris do nosso tempo" - aprox. trans.

Mas para quem conhece os dois, Sanjay é igual em talento para ele. "Jeff é ótimo em apresentar novas idéias e protótipos", disse Wilson Sie, seu colega de longa data. "Sanjay está construindo coisas em sua consciência." Na vida, Jeff é mais sociável, Sanjay mais reservado. O código é o oposto. A programação de Jeff é deslumbrante: ele pode rapidamente fornecer idéias surpreendentes, mas, ao fazê-lo rapidamente, com inspiração, pode deixar para trás os leitores. O código Sanjaya é mais compreensível.

"Algumas pessoas escrevem código muito escasso", explica Silverstein. Há muito pouca informação em uma tela. Eu tenho que rolar para frente e para trás para entender. Outros escrevem código muito denso: “Você olha para ele e pensa:“ Uau. Eu não quero entender isso. " Sanjay de alguma forma consegue encontrar um equilíbrio. Você olha para o código e pensa: "Tudo bem, eu consigo entender", e ainda há muita informação em uma página. " Silverstein continua: “Sempre que eu quero adicionar novas funcionalidades ao código de Sanjay, ele parecia prever. Eu me sinto como Salieri. Vejo a grandeza, mas não entendo como isso é possível. "

Na segunda-feira de manhã desta primavera, Jeff e Sanjay estavam na cozinha do prédio 40, que abriga a maior parte da divisão de IA do Google. Atrás deles, um quadro-negro cheio de fórmulas de álgebra matricial; em cima da mesa, há um artigo sobre redes competitivas sem professor. Jeff, de camiseta desbotada e jeans, parece um vagabundo de praia que seguiu o caminho da correção. Sanjay de suéter e calça cinza. Atrás das janelas brilhantes há pinheiros altos, atrás deles há um campo. Em todos os lugares em que Jeff trabalha no Google, eles sempre colocam máquinas de café expresso. O La Marzocco zumbe na mesa da cozinha. "Estamos atrasados", observa Sanjay sobre o moedor de café. Às 8:32 da manhã

Após o cappuccino, eles vão para os computadores. Jeff rola uma cadeira de sua mesa suja para a mesa impecavelmente limpa de Sanjay. Ele coloca o pé na mesa de cabeceira, recostando-se enquanto Sanjay estuda a tela. Quatro janelas estão abertas: à esquerda - um navegador e um terminal para iniciar ferramentas de análise; à direita, há dois documentos no editor de texto do Emacs: um possui uma lista de tarefas no bloco de notas e o outro é preenchido com código colorido. Um dos notebooks de Sanjay fica ao lado de um computador.

- Ok, o que estávamos fazendo? - pergunta Sanjay.

"Acho que analisamos o tamanho do código TensorFlow Lite", diz Jeff.

Este é um novo projeto importante de aprendizado de máquina: Jeff e Sanjay estão preocupados com uma base de código inchada. Como editores literários, eles estão procurando maneiras de reduzir o volume. Para fazer isso, eles criaram uma nova ferramenta, que por si só precisa ser otimizada.

"Eu tentei descobrir o quão lento é", disse Sanjay.

"Bem devagar", Jeff se inclinou para frente, ainda relaxado.

"Este era cento e vinte kilobytes", diz Sanjay, "e leva cerca de oito segundos."

"Cento e vinte mil chamadas de pilha, não kilobytes."

"Bem, kilobytes de texto, bem ... sobre isso."

- Oh sim, me desculpe.

"Não sei qual limite escolher para o tamanho da unidade", pergunta Sanjay. - meio mega?

"Parece bom", Jeff concorda. Sanjay começa a bater no teclado e Jeff se apega à tela. "Então, você escreve que, se for mais do que o especificado, apenas escolhemos ..." ele fez uma pausa; Sanjay respondeu à pergunta com um código.

Quando Sanjay dirige um carro, ele coloca as mãos em dez e duas e olha com cuidado para a frente. A mesma disciplina por trás do teclado. Pernas largura dos ombros, costas retas, como se ele estivesse trabalhando na postura. Dedos finos correm suavemente pelas teclas. Os primeiros programadores começaram a chegar ao escritório.

Logo eles alcançaram um pequeno marco, e Sanjay recrutou uma equipe para fazer o teste. Ele parecia exausto e verificou o correio. O teste foi concluído. Ele não percebeu.

Ei! - Jeff estalou os dedos e apontou para a tela. Embora em conversas ele receba piadas e trocadilhos, no computador com Sanjay ele pode se tornar autoconfiante, rude e desaprovador. Sanjay toma isso como garantido. Quando lhe parece que Jeff está se movendo rápido demais, ele levanta as mãos do teclado e abre os dedos, como se dissesse: "Pare". Esta é a aparência mais próxima de uma disputa: durante vinte anos eles não conseguem se lembrar de quando levantaram a voz.

Sanjay rolou a página, uma nova seção de código apareceu na tela.

"Você pode fazer disso uma rotina, certo?" Jeff perguntou.

- Mmm ...

Jeff estalou os nós dos dedos.

Parece possível. Vai fazer?

Sanjay cercou:

- não eu ...

"Então, ignore o problema?" - Jeff pergunta indignado.

"Não, quero dizer, estamos apenas tentando descobrir o que está acontecendo." Para tomar notas sobre isso, certo?

"Bom." Jeff estava claramente de bom humor. Eles ditaram uma nota juntos.

O almoço estava chegando. Eles trabalharam por duas horas com um intervalo de dez minutos, conversando a maior parte do tempo (o júnior que os observava ficaria mais impressionado com o fato de nunca terem parado e não estarem presos). A prática padrão de engenharia é enviar o código para a revisão, mas Jeff e Sanjay pulam essa etapa marcando lgtm (parece bom para mim). Em certo sentido, eles estão ocupados com pequenas coisas. No entanto, seu código é executado em uma escala do Google. Os kilobytes e microssegundos com os quais eles se preocupam se multiplicam bilhões de vezes em data centers em todo o mundo - data centers enormes e barulhentos, onde inúmeros racks de servidor são refrigerados por tanques de água. Nesses dias, Jeff, como você sabe, chega em casa e conta para as filhas: "Hoje, Sanjay e eu aceleramos a pesquisa do Google em 10%".

Em 2003, em quatro meses, Jeff e Sanjay fizeram talvez a maior atualização da história do Google. Eles fizeram isso usando o software MapReduce. A ideia surgiu quando eles reescreveram o rastreador e o indexador do Google pela terceira vez. Eles perceberam que cada vez que resolvem um problema importante: coordenação do trabalho em um grande número de computadores não-geograficamente distribuídos e separados. Se generalizar a solução, o problema será resolvido para sempre. Isso abrirá uma ferramenta que qualquer programador no Google pode usar para controlar máquinas em data centers, como se fossem um único computador do tamanho de um planeta.

Jeff e Sanjay pintaram o MapReduce em um escritório de esquina com vista para um lago de patos. Essa ferramenta simplificou para sempre um processo incrivelmente complexo. Anteriormente, cada programador tinha que descobrir de forma independente como compartilhar e distribuir dados, atribuir trabalho e levar em conta falhas de hardware. O MapReduce fornece uma maneira estruturada de resolver esses problemas. Enquanto o chef prepara os ingredientes antes de iniciar o trabalho culinário, o MapReduce divide as tarefas em dois estágios. Primeiro, o programador fornece a cada máquina um "mapa" da tarefa (por exemplo, contando o número de referências a uma palavra em uma página); depois, ele escreve instruções para "reduzir" os resultados de todas as máquinas (por exemplo, somando). O MapReduce lida com os detalhes da distribuição e, portanto, os oculta.

No ano seguinte, Jeff e Sanjay reescreveram o sistema de rastreamento e indexação do Google em termos de tarefas do MapReduce. Logo, outros engenheiros perceberam o quão poderoso esse sistema era - e começaram a usar o MapReduce para processar vídeos e renderizar blocos no Google Maps. O MapReduce era tão simples que novas tarefas apareceram sozinhas. O Google tem um ciclo de carregamento diário: durante o dia, mais tráfego do que durante a noite e as tarefas do MapReduce começaram a absorver a capacidade ociosa. Em um sonho, o cérebro humano processa a experiência diária. Agora, o Google começou a processar seus dados à noite.

Há evidências de que o Google é realmente uma empresa de IA que apenas finge ser um mecanismo de pesquisa. Em 2001, Noam Shazir, que dividiu o escritório com Jeff e Sanjay, decidiu refazer o sistema de verificação ortográfica que o Google licenciou de outra empresa. Este sistema continuou a cometer erros estranhos. Por exemplo, ela propôs substituir a palavra TurboTax por machado de pregado (solha encontrada no Atlântico Norte).

A qualidade do corretor ortográfico depende do dicionário. Shazir percebeu que, na Internet, o Google tem acesso ao maior dicionário que já existiu na história da humanidade. Ele escreveu um programa que usava as propriedades estatísticas do texto na Internet para determinar quais palavras provavelmente foram digitadas com erro. O programa entendeu que "pritany spears" e "brinsley spears" significavam "Britney Spears". Quando Shazir mostrou o programa na reunião semanal, muitos funcionários tentaram repetidamente enganá-lo, mas quase sempre sem sucesso. Shazir, em colaboração com Jeff Dean e um engenheiro chamado Georges Harik, desenvolveu um sistema semelhante de segmentação de anúncios no conteúdo de páginas da web. Essa segmentação trouxe uma avalanche de dinheiro que a empresa enviou para sua infraestrutura de computação. Isso marcou o início de um ciclo de feedback: o aumento da infraestrutura melhora os recursos e a inteligência de computação do Google; As habilidades de computação se tornam uma fonte de lucro, e o lucro permite que você construa infraestrutura. Esse ciclo de feedback trouxe à empresa um domínio de mercado extraordinário e sem precedentes.

Programadores talentosos usaram o MapReduce para obter várias informações dos dados do Google: tornou-se possível transcrever mensagens de voz do usuário, responder suas perguntas, preencher automaticamente consultas e traduzir textos em mais de cem idiomas. Esses sistemas foram desenvolvidos usando algoritmos de aprendizado de máquina relativamente simples. No entanto, "quando você tem muitos dados, métodos muito simples funcionam incrivelmente bem", disse Jeff. Como "dados, dados, dados" - armazenados e processados ​​usando BigTable, MapReduce e seus sucessores - o principal ativo da empresa, a infraestrutura global do Google se tornou mais flexível e escalável. A idéia de computação distribuída surgiu há muito tempo. Os conceitos de "computação em nuvem" e "big data" existiam antes do advento do Google. Mas, ao tornar a infraestrutura inteligentemente gerenciável para programas distribuídos por programadores comuns, Jeff e Sanjay levam o Google para o próximo nível. Os usuários sentiram: algo mudou - a nuvem do Google está ficando mais inteligente.

Em 2004, Jeff e Sanjay pensaram que o sistema seria útil para astrônomos, geneticistas e outros cientistas com muitos dados para processar. Em seguida, eles publicaram o artigo "MapReduce: processamento de dados simplificado em grandes grupos" . O documento apareceu como Deus do carro. Equipamentos baratos, o crescimento de serviços da web e dispositivos conectados levaram ao fluxo de dados, mas apenas algumas empresas possuíam software para processar essas matrizes de informações. Dois engenheiros que estavam lutando para escalar um pequeno mecanismo de busca chamado Nutch - Mike Cafarella e Doug Cutting - estavam tão convencidos da importância do MapReduce que decidiram criar um clone livre desse sistema do zero. No final, eles nomearam seu projeto Hadoop, em homenagem ao nome do elefante de brinquedo, a quem o filho de Cutting amava.

Gradualmente, metade das empresas da Fortune 50 assumiu o Hadoop, que se tornou sinônimo de Big Data. O Facebook usou o Hadoop MapReduce para armazenar e processar metadados do usuário - informações sobre cliques, curtidas e visualizações de anúncios. Em um ponto, o Facebook tinha o maior cluster Hadoop do mundo. O Hadoop MapReduce contribuiu para o sucesso do LinkedIn e da Netflix.

O ex-diretor de tecnologia da NSA Randy Garrett lembra de ter mostrado a tecnologia ao diretor da NSA, general Keith Alexander. O Hadoop concluiu a tarefa de análise 18.000 vezes mais rápido que o sistema anterior. Isso se tornou a base de uma nova abordagem para a coleta de informações, que alguns observadores chamam de "coleção total de tudo".

Jeff tem um caráter inquieto: para ele, o problema perde o interesse quando ele vê uma solução. Em 2011, a tecnologia em nuvem varreu o mundo, e Jeff Dean começou a trabalhar com Andrew Eun, um professor de ciência da computação de Stanford que liderou um projeto secreto de pesquisa de redes neurais no Google. Jeff encontrou redes neurais em seus anos de estudante, mas eles não conseguiram resolver problemas reais. Eun disse a Jeff que a situação havia mudado. Em Stanford, os pesquisadores obtiveram resultados impressionantes ao fornecer às redes neurais acesso a grandes quantidades de dados. Eun sugeriu que, em larga escala, as redes neurais podem se tornar não apenas úteis, mas também poderosas.

As redes neurais são muito diferentes dos programas de computador tradicionais. Seu comportamento não é determinado por comandos comuns; em vez disso, a rede é "treinada" usando entrada e feedback. O conhecimento de Jeff sobre redes neurais não avançou em seus anos de estudante, e Heidi viu o banheiro se encher de livros didáticos. Jeff começou a dedicar cerca de um dia por semana a um projeto chamado Google Brain. Muitos no Google duvidavam dessa tecnologia. "Um desperdício de talento", lembra Alan Eustace, gerente de Jeff na época. Sanjay também não conseguiu entender a decisão do amigo: "Você está trabalhando em infraestrutura, o que você esqueceu por lá?"

Nos sete anos seguintes, a equipe do Google Brain desenvolveu redes neurais que apresentaram os melhores resultados do mundo em tradução automática, reconhecimento de fala e imagem. No final, essas redes neurais substituíram os algoritmos mais importantes do Google para classificar os resultados de pesquisa e a segmentação de anúncios, e o Google Brain se tornou uma das equipes de crescimento mais rápido da empresa. Claire Tsui, engenheira do Google desde 2001, diz que a decisão de Jeff foi um ponto de virada para o desenvolvimento da IA ​​no Google: "Alguns acreditavam nisso, outros não. Jeff provou que pode funcionar.

Aconteceu que a IA precisava criticamente de escala, e o engenheiro de sistemas Jeff Dean a forneceu. Como parte desse projeto, ele liderou o desenvolvimento de um programa chamado TensorFlow - foi uma tentativa de criar algo como o MapReduce, apenas para IA. O TensorFlow simplifica a distribuição de redes neurais em um cluster de computadores, transformando-as em um grande cérebro. Em 2015, quando o TensorFlow foi lançado ao público, tornou-se o padrão de fato para trabalhar com IA. O CEO Sundar Pichai anunciou recentemente que o principal negócio do Google é a Inteligência Artificial e nomeou Jeff para liderar todas as iniciativas de IA.

Agora, Jeff dedica quatro dias por semana ao gerenciamento do Google Brain. Ele lidera o trabalho de 3.000 pessoas. Ele viaja para negociações, realiza reuniões semanais para trabalhar em um novo chip de computador (um processador tensor projetado especificamente para redes neurais) e ajuda no desenvolvimento do AutoML, um sistema que usa redes neurais para projetar outras redes neurais. Ele só tem tempo para programar com Sanjay uma vez por semana.

A história apaga os feitos da engenharia. Lembramos dos grandes exploradores do século XVIII - James Cook, George Vancouver - mas não John Harrison, carpinteiro de Yorkshire que, após décadas de trabalho, tornou o relógio confiável o suficiente para medir a longitude no mar.

Jeff e Sanjay desfrutaram recentemente de margaritas e enchiladas no Palo Alto Sol, seu restaurante mexicano favorito. Jeff pegou o telefone e perguntou: "Quando o Gmail saiu?" O telefone respondeu: "1º de abril de 2004". Sanjay, etiqueta na mesa, não pareceu apreciar o impulso do amigo, mas Jeff ficou encantado. Agora, o Google pode conversar, ouvir e responder perguntas usando uma pilha de programas que são facilmente integrados e praticamente invisíveis, desde o telefone até os data centers em todo o mundo.

Hoje seus papéis divergiram. Sanjay no Google é conhecido como um "participante individual" - um codificador que trabalha sozinho e não controla ninguém. Ele é grato por isso. "Eu não gostaria de trabalhar como Jeff", ele admite. Atualmente, ele está criando um software que facilitará a integração e o gerenciamento de dezenas de programas - notícias, fotos, preços - que começam a funcionar assim que o usuário digita no campo de pesquisa do Google. Uma vez por semana, ele se reúne com um grupo de líderes de tecnologia, o Conselho de Engenharia Jedi do Google, para tomar decisões técnicas que afetam toda a empresa. Se o Google estivesse em casa, Jeff construiria uma extensão e Sanjay fortaleceria a fundação, fortaleceria as vigas e apertaria os parafusos.

Enquanto isso, durante as sessões de programação de pares de segunda-feira, eles começaram algo novo. Este é um projeto de IA: como Jeff diz, uma tentativa de treinar um modelo de ML “gigante” para executar milhares ou milhões de tarefas diferentes. Jeff pensa nessa idéia há muitos anos; Ele recentemente decidiu que isso é possível. Ele e Sanjay planejam construir um protótipo em torno do qual a equipe possa crescer. No mundo do software, a melhor maneira de gerenciar sua equipe é baseada no código do programa.

"Acho que eles sentem falta um do outro", diz Heidi, esposa de Jeff. Os jantares familiares de sexta-feira apareceram quando a colaboração diminuiu.

No domingo de março, Jeff e Sanjay se encontraram para uma viagem pelo campo. O tempo está limpo, embora faça calor ao sol. Jeff chegou à pista de caminhada no Tesla Roadster azul com um adesivo Bernie 2016. Sanjay logo o seguiu no modelo vermelho S. Sanjay leu o livro pela manhã, Jeff jogava futebol (o dispositivo em seu pulso mostrava que ele corria 11 quilômetros. Duas décadas depois depois de reparar esse índice, Jeff se parece com um atleta forte e bronzeado aposentado, e Sanjay parece não ter envelhecido.

O caminho é um loop de 10 quilômetros através de florestas densas. Jeff foi o primeiro. Na floresta, eles se lembraram da rapidez com que o Google cresceu.Sanjay lembrou que, após a primeira ampliação da empresa, o encanador instalou dois banheiros no mesmo banheiro no banheiro masculino. "Eu lembro do comentário de Jeff", disse ele. "Duas cabeças pensam melhor que uma!" Ele riu.

Eles desceram da floresta para uma área aberta e seca. Um abutre voou no céu.

"As montanhas são mais frias do que eu pensava", admitiu Jeff.

- E alguém disse que esta é uma campanha plana.

"Acho que é por isso que não há ciclovias."

Eles voltaram para a floresta. Ao subir a colina, Jeff viu uma brecha entre as árvores: "Em algum momento, haverá uma boa visão", disse ele.

A trilha foi até o topo da colina, alta e larga, sem floresta, com vistas panorâmicas. A neblina no horizonte não cobria as montanhas de Santa Cruz, no sul, e Mission Peak, no leste. "Sanjay, aqui é seu escritório!" - disse Jeff. Eles ficaram juntos e olharam através do vale.

Source: https://habr.com/ru/post/pt432324/


All Articles