Back-End

29 nov, 2018

Aprendizado de Máquina de Escala na Uber com Michelangelo – Parte 01

Publicidade

Em setembro de 2017, publicamos um artigo apresentando Michelangelo, a Plataforma de Aprendizado de Máquina da Uber, à comunidade técnica mais ampla.

Naquele momento, tínhamos mais de um ano de experiência em produção a nosso favor com a primeira versão da plataforma e estávamos trabalhando com várias de nossas equipes para construir, implantar e operar seus sistemas de aprendizado de máquina (ML).

À medida que nossa plataforma amadurece e os serviços da Uber crescem, vimos uma explosão de implantações de ML em toda a empresa. A qualquer momento, centenas de casos de uso representando milhares de modelos são implantados na produção na plataforma.

Milhões de previsões são feitas a cada segundo, e centenas de cientistas de dados, engenheiros, gerentes de produto e pesquisadores trabalham em soluções ML em toda a empresa.

Neste artigo, refletimos sobre a evolução do ML na Uber na perspectiva da plataforma nos últimos três anos. Analisamos essa jornada observando o caminho percorrido para desenvolver Michelangelo e expandir o ML na Uber, oferecer uma visão aprofundada da abordagem atual da Uber e dos objetivos futuros para o desenvolvimento de plataformas de ML e fornecer algumas lições aprendidas ao longo do caminho.

Além dos aspectos técnicos da plataforma, também observamos as importantes considerações organizacionais e de projeto de processo que foram fundamentais para o nosso sucesso com o ML na Uber.

De zero a 100 em três anos

Em 2015, o ML não era amplamente utilizado na Uber, mas à medida que nossa empresa expandia e os serviços se tornavam mais complexos, era óbvio que havia a oportunidade de o ML ter um impacto transformacional, e a ideia de implantação difundida de ML em toda a empresa rapidamente se tornou um foco estratégico.

Enquanto o objetivo de Michelangelo desde o início era democratizar o ML através da Uber, começamos pequenos e depois construímos o sistema de forma incremental. O foco inicial de Michelangelo era permitir treinamento em lote em larga escala e produção de trabalhos de previsão em lote.

Com o tempo, adicionamos um repositório de recursos centralizado, relatórios de desempenho de modelo, um serviço de previsão em tempo real de baixa latência, fluxos de trabalho de aprendizado profundos, integrações de notebooks, modelos particionados e muitos outros componentes e integrações.

Em três curtos anos, a Uber passou de não ter nenhum esforço centralizado de ML e alguns sistemas de ML sob medida para ter ferramentas e infraestrutura avançadas de ML, e centenas de casos de uso de ML de produção.

Casos de uso de ML na Uber

O Uber usa o ML para um conjunto muito diversificado de aplicativos. Em vez de aplicar o ML a algumas áreas-chave (como otimização de anúncios ou relevância de conteúdo), a Uber tem uma distribuição muito mais uniforme de soluções ML.

Nesta seção, discutiremos alguns casos de uso selecionados de Michelangelo que surgiram nos últimos três anos, destacando a diversidade e o impacto do ML no Uber:

Uber Eats

A Uber Eats usa vários modelos de aprendizado de máquina construídos em Michelangelo para fazer centenas de previsões que otimizam a experiência do comedor cada vez que o aplicativo é aberto.

Os modelos de classificação impulsionados pelo ML sugerem restaurantes e itens de menu com base em dados históricos e informações da sessão atual do usuário no aplicativo (por exemplo, sua consulta de pesquisa).

Usando Michelangelo, a Uber Eats também estima os horários de chegada das refeições com base nas ETAs previstas, dados históricos e vários sinais em tempo real para a refeição e o restaurante.

Previsão de mercado

A equipe de Marketplace da Uber aproveita uma variedade de modelos de previsão espaço-temporal que são capazes de prever onde a demanda do passageiro e a disponibilidade do parceiro motorista estarão em vários lugares e horários no futuro.

Com base nos desequilíbrios previstos entre a oferta e a demanda, os sistemas da Uber podem encorajar os parceiros motoristas antes do tempo a ir onde haverá a maior oportunidade para corridas.

Suporte ao cliente

Cerca de 15 milhões de viagens acontecem na Uber todos os dias. As pessoas frequentemente deixam carteiras ou telefones no carro ou têm outros problemas que levam a milhares de tickets de suporte a cada dia através de nosso sistema de ajuda.

Estes bilhetes são encaminhados para representantes de atendimento ao cliente. Os modelos de aprendizado de máquina construídos em Michelangelo são muito usados ​​para automatizar ou acelerar grandes partes do processo de resposta e resolução desses problemas.

A primeira versão desses modelos, baseada em árvores impulsionadas, acelerou o tempo de atendimento de bilhetes em 10% com satisfação do cliente semelhante ou melhor. A segunda versão, baseada em um modelo de aprendizagem profunda, gerou uma aceleração adicional de 6%.

Verificação da corrida

Desde a primeira corrida da Uber em 2010, os dados de GPS foram usados para colocar cada viagem no mapa, para sabermos para onde e quando você está dirigindo e quem está ao volante.

Mas podemos fazer mais: aproveitando o poder do GPS e de outros sensores no smartphone do passageiro, nossa tecnologia pode detectar possíveis falhas. Essa tecnologia também pode sinalizar irregularidades de viagem além de acidentes que podem, em alguns casos raros, indicar um risco de segurança aumentado.

Por exemplo, se houver uma parada longa e inesperada durante uma viagem, tanto o passageiro quanto o motorista receberão uma notificação por meio do nosso recurso Verificação da Corrida, que oferece assistência em caso de um evento de falha/batida.

Uma das métricas mais importantes e visíveis para a empresa são os ETAs para embarques de passageiro. Os ETAs precisos são essenciais para uma experiência positiva do usuário, e essas métricas são inseridas em vários outros sistemas internos para ajudar a determinar preços e roteamento. No entanto, os ETAs são notoriamente difíceis de acertar.

Tempos de Chegada Estimados (ETAs)

Uma das métricas mais importantes e visíveis para a empresa são os ETAs para embarques de passageiro. Os ETAs precisos são essenciais para uma experiência positiva do usuário, e essas métricas são inseridas em vários outros sistemas internos para ajudar a determinar preços e roteamento. No entanto, os ETAs são notoriamente difíceis de acertar.

A equipe de Serviços de Mapas da Uber desenvolveu um sofisticado sistema de roteamento segmento por segmento que é usado para calcular os valores básicos do ETA. Esses ETAs de base têm padrões consistentes de erros.

A equipe de Serviços de Mapa descobriu que poderia usar um modelo de aprendizado de máquina para prever esses erros e depois usar o erro previsto para fazer uma correção.

À medida que esse modelo foi implantado de cidade a cidade (e depois globalmente nos últimos dois anos), vimos um aumento dramático na precisão dos ETAs, em alguns casos reduzindo o erro médio de ETA em mais de 50%.

Bate-papo com um clique

O recurso de bate-papo com um clique simplifica a comunicação entre os passageiros e os parceiros motorista usando modelos de processamento de linguagem natural (NLP) que preveem e exibem as respostas mais prováveis ​​para mensagens de bate-papo no aplicativo.

Permitir que os parceiros motorista respondam às mensagens de bate-papo do passageiro com um único botão pressionado reduz a distração.

Carros autônomos

Os sistemas de carros autônomos da Uber usam modelos de aprendizado profundo para uma variedade de funções, incluindo detecção de objetos e planejamento de movimento. Os modeladores usam o Horovod de Michelangelo para um treinamento distribuído eficiente de modelos grandes em um grande número de máquinas de GPU.

Como escalamos o ML na Uber

Como uma equipe de plataformas, nossa missão é desvendar o valor do ML e acelerar sua adoção em todos os cantos da empresa. Fazemos isso democratizando as ferramentas e apoiando as necessidades de nossas equipes técnicas, ou seja, otimizando a velocidade do desenvolvedor, a propriedade de ponta a ponta, o rigor da engenharia de software e a flexibilidade do sistema.

Para os cientistas de dados, nosso ferramental simplifica o lado de produção e operações da construção e implantação de sistemas ML, permitindo que eles possuam seu trabalho de ponta a ponta.

Para engenheiros, o ferramental ML da Uber simplifica a ciência de dados (engenharia de recursos, modelagem, avaliação, etc.) por trás desses sistemas, facilitando o treinamento suficiente de modelos de alta qualidade sem precisar de um cientista de dados.

Por fim, para equipes de engenharia altamente experientes que criam sistemas ML especializados, oferecemos componentes de infraestrutura ML de Michelangelo para configurações e fluxos de trabalho personalizáveis.

Escalar com sucesso o ML em uma empresa como a Uber requer muito mais do que apenas a tecnologia certa – também há considerações importantes para o projeto da organização e do processo. Nesta seção, examinamos os fatores críticos de sucesso em três pilares: organização, processo e tecnologia.

Figura 1: Os principais pilares estratégicos da Plataforma de Aprendizado de Máquina de Michelangelo.

Organização

Requisitos amplamente variáveis ​​para problemas de ML e recursos especializados limitados tornam o projeto organizacional particularmente importante – e desafiador – para aprendizado de máquina. Enquanto alguns projetos de ML na Uber são de propriedade de equipes com vários engenheiros e cientistas de dados de ML, outros são de propriedade de equipes com pouca ou nenhuma perícia técnica.

Da mesma forma, alguns problemas podem ser resolvidos por novatos com algoritmos prontos para o uso comumente disponíveis, enquanto outros problemas exigem uma investigação especializada com técnicas avançadas (e geralmente não possuem soluções conhecidas).

Conseguir que as pessoas certas trabalhem nos problemas certos tem sido fundamental para criar soluções de alta qualidade e implantá-las de forma consistente e bem-sucedida na produção. O desafio é alocar recursos especializados escassos e amplificar seu impacto em muitos problemas diferentes de ML.

Por exemplo, se um novo projeto requer conhecimento de visão computacional, que estrutura organizacional permitirá que a Uber aloque de maneira efetiva recursos especializados de modo alinhado com as prioridades da empresa?

Após várias iterações, a Uber atualmente opera com as seguintes principais funções e responsabilidades:

Figura 2: Interações organizacionais de diferentes equipes no ecossistema de ML da Uber.

Vamos dar uma olhada em algumas das principais equipes e em como elas trabalham juntas para projetar, criar e implantar novos sistemas ML em produção.

Equipes de produto

Descobrimos que funciona melhor se as equipes de engenharia de produto possuírem os modelos que criam e implantam na produção. Por exemplo, nossa equipe de Serviços de Mapa possui os modelos que preveem os ETAs da Uber.

As equipes de produtos normalmente contam com todo o conjunto de habilidades necessárias para construir e implantar modelos usando as plataformas ML da Uber. Quando precisam de conhecimentos adicionais, recebem assistência das equipes de pesquisa e ou de especialistas.

Às vezes, as organizações de produtos também têm equipes especiais que ajudam a resolver quaisquer lacunas entre o que a plataforma fornece e o que as equipes de engenharia de produto específicas precisam.

Essas equipes adaptam as ferramentas da plataforma centralizada para seu caso de uso e preenchem lacunas de recursos com ferramentas e fluxos de trabalho personalizados.

Por exemplo, muitas equipes na organização do Marketplace da Uber têm fluxos de trabalho semelhantes em treinamento, avaliação e implantação de modelos por cidade e produto.

Uma equipe do Marketplace cria ferramentas especializadas que ficam em cima de Michelangelo, facilitando o gerenciamento desses projetos de ML do Marketplace.

Equipes de especialistas

Quando as equipes de engenharia de produto encontram problemas de ML que ampliam suas habilidades ou recursos, elas podem recorrer a uma equipe interna de especialistas para obter ajuda.

Os especialistas da Uber têm uma profunda especialização em diferentes domínios – como NLP, visão computacional, sistemas de recomendação, previsão – e fazem parcerias com equipes de engenharia de produto para criar soluções personalizadas.

Por exemplo, o nosso projeto COTA é um esforço que associa uma equipe de especialistas a uma equipe de produtos para criar um enorme impacto para nossos negócios e clientes.

Normalmente, esses projetos duram algumas semanas a muitos trimestres. À medida que um projeto é eliminado/não possui riscos e se aproxima do lançamento na produção, as equipes de produtos costumam adicionar especialistas relevantes em tempo integral para preencher a lacuna de especialistas, garantir que eles possam manter o sistema por conta própria e liberar recursos especializados.

Equipes de pesquisa

Especialistas e equipes de engenharia de produtos geralmente se envolvem com o grupo de pesquisa de AI da Uber, AI Labs, para colaborar em problemas e ajudar a orientar a direção de pesquisas futuras. As equipes de pesquisa normalmente não possuem código de produção, mas frequentemente trabalham em conjunto com equipes diferentes em problemas aplicados.

Quando novas técnicas e ferramentas relevantes são desenvolvidas pelos pesquisadores, a equipe de engenharia de plataforma as integra em plataformas de toda a empresa, permitindo que novas técnicas sejam facilmente aproveitadas em toda a empresa.

Equipes da Plataforma de ML

A equipe da Plataforma Michelangelo constrói e opera um conjunto de ferramentas e fluxo de trabalho de ML de propósito geral que é usado diretamente pelas equipes de engenharia de produto para construir, implantar e operar soluções de aprendizado de máquina.

À medida que nossos sistemas se tornam mais sofisticados e os problemas que resolvemos mais complexos, a demanda cresce para mais flexibilidade, extensibilidade e experiências de desenvolvimento de ML específicas de domínio.

Estamos criando uma série de outras plataformas mais específicas de domínio para lidar com casos de uso especializados que não são tão bem atendidos pelas ferramentas de fluxo de trabalho de Michelangelo.

Essas novas equipes de plataforma reutilizam grande parte da plataforma Michelangelo existente e fornecem fluxos de trabalho de desenvolvimento de ML especializados para as equipes de produto.

Por exemplo, existem plataformas específicas de NLP e de visão computacional sendo criadas que contêm ferramentas de visualização especiais, modelos pré-treinados, rastreamento de metadados e outros componentes que não se encaixam bem em uma plataforma de propósito geral.

Aqui terminamos a primeira parte do artigo. Assim, você, leitor, terá tempo para absorver todo o conteúdo e estará pronto para nos acompanhar na segunda parte, onde começaremos a falar sobre o processo de aprendizado da máquina de escalar com o Michelangelo.

***

Este artigo é do Uber Engineering. Ele foi escrito por Jeremy Hermann e Mike Del Balso. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/scaling-michelangelo/