Como montar uma equipe de ML

Os projetos de ML exigem equipes com membros com diversas habilidades, conhecimentos e responsabilidades relacionadas ao machine learning. Estes são os papéis mais comuns encontrados em equipes de ML típicas:

Papel Conhecimento e habilidades Principal entrega
Gerente de produtos de ML Os gerentes de produto de ML têm um profundo conhecimento dos pontos fortes e fracos da ML e do processo de desenvolvimento de ML. Eles alinham os problemas dos negócios às soluções de ML trabalhando diretamente com a equipe de ML, os usuários finais e outras partes interessadas. Eles criam a visão do produto, definem casos de uso e requisitos e planejam e priorizam projetos. Documento de requisitos do produto (PRD, na sigla em inglês).
Para ver um exemplo de PRD de detecção de anomalias de ML, consulte PRD de detecção de anomalias.
Gerente de engenharia Para atingir as metas de negócios, os gerentes de engenharia definem, comunicam e alcançam as prioridades da equipe. Assim como os gerentes de produto de ML, eles alinham soluções de ML aos problemas de negócios. Elas definem expectativas claras para os membros da equipe, conduzem avaliações de desempenho e auxiliam no desenvolvimento de carreira e profissional. Documentos de design, planos de projeto e avaliações de desempenho.
Para ver um exemplo de um documento de design de ML, consulte go/ml-design-doc-example.
Cientista de dados Os cientistas de dados usam análises quantitativas e estatísticas para extrair insights e valor dos dados. Eles ajudam a identificar e testar recursos, prototipar modelos e ajudar na interpretabilidade do modelo. Relatórios e visualizações de dados que respondem a perguntas de negócios por meio de análise estatística.
Engenheiros de ML Engenheiros de ML projetam, criam, colocam em produção e gerenciam modelos de ML. Eles são engenheiros de software fortes com um profundo conhecimento das tecnologias de ML e das práticas recomendadas. Modelo implantado com qualidade de previsão suficiente para atender às metas de negócios.
Engenheiro de dados Engenheiros de dados criam pipelines de dados para armazenar, agregar e processar grandes quantidades de dados. Ela desenvolve a infraestrutura e os sistemas para coletar e transformar dados brutos em formatos úteis para treinamento e disponibilização de modelos. Os engenheiros de dados são responsáveis pelos dados em todo o processo de desenvolvimento de ML. Pipelines de dados totalmente produzidos com o monitoramento e os alertas necessários.
Engenheiro de operações de desenvolvimento (DevOps) Os engenheiros de DevOps desenvolvem, implantam, escalonam e monitoram a infraestrutura de exibição de modelos de ML. Um processo automatizado para exibir, monitorar, testar e alertar sobre o comportamento de um modelo.

Projetos de ML bem-sucedidos têm equipes com todas as funções bem representadas. Em equipes menores, os indivíduos precisarão lidar com as responsabilidades de várias funções. Nesses casos, ferramentas do AutoML, como Vertex AI , podem ajudar automatizando tarefas de ML, como desenvolvimento, compreensão e implantação do modelo.

Estabelecer práticas de equipe

Como os papéis, ferramentas e frameworks variam muito no desenvolvimento de ML, é fundamental estabelecer práticas comuns com uma excelente documentação de processos. Por exemplo, um engenheiro pode pensar que apenas coletar os dados certos é suficiente para começar a treinar um modelo, enquanto um engenheiro mais responsável validará se o conjunto de dados é anonimizado corretamente e documentará os metadados e a procedência dele. Garantir que os engenheiros compartilhem definições comuns de processos e padrões de design reduz a confusão e aumenta a velocidade da equipe.

Documentação do processo

A documentação de processos precisa definir as ferramentas, a infraestrutura e os processos que a equipe vai usar para o desenvolvimento de ML. Bons documentos de processos ajudam a alinhar membros novos e atuais da equipe. Eles devem responder aos seguintes tipos de perguntas:

  • Como os dados são gerados para o modelo?
  • Como examinamos, validamos e visualizamos os dados?
  • Como modificar um atributo ou rótulo de entrada nos dados de treinamento?
  • Como personalizamos o pipeline de geração, treinamento e avaliação de dados?
  • Como altero a arquitetura do modelo para acomodar alterações nos rótulos ou recursos de entrada?
  • Como conseguimos exemplos de teste?
  • Quais métricas vamos usar para julgar a qualidade do modelo?
  • Como lançamos nossos modelos em produção?
  • Como vamos saber se há algo de errado com o modelo?
  • De quais sistemas upstream nossos modelos dependem?
  • Como tornar meu SQL sustentável e reutilizável?

Um documento do Google com uma lista dessas perguntas está disponível em go/ml-list-of-questions.

Mais possíveis perguntas

Modelo
  • Posso treinar modelos em diferentes conjuntos de dados no mesmo pipeline, para fins de ajuste?

  • Como faço para adicionar um novo conjunto de dados de teste ao pipeline?

Treinamento
  • Como verificar a previsão do modelo em um exemplo criado manualmente?

  • Como encontrar, examinar e visualizar exemplos em que o modelo cometeu erros?

  • Como determinar qual recurso foi o mais responsável por uma determinada previsão?

  • Como entender quais recursos têm mais impacto nas previsões em uma determinada amostra?

  • Como posso calcular ou traçar previsões de modelos em um conjunto de dados ou amostra escolhido?

  • Como computar métricas padrão para as previsões do meu modelo em um conjunto de dados escolhido?

  • Como desenvolver e computar métricas personalizadas?

  • Como comparo meu modelo com outros modelos off-line?

  • Posso realizar a metanálise para várias avaliações de modelo em um único ambiente de desenvolvimento?

  • Posso comparar o modelo atual com o de 10 meses atrás?

Produção, monitoramento e manutenção
  • Acho que criei um bom modelo. Como posso lançá-lo em produção?

  • Como posso verificar se meu novo modelo está sendo executado corretamente na produção?

  • É possível acessar o histórico das avaliações do modelo ao longo do tempo?

  • Como saberei quando algo está errado com o modelo?

  • Recebi uma página/bug mencionando algo sobre o modelo. O que devo fazer?

Pipelines
  • Como personalizar o pipeline de geração/treinamento/avaliação de dados?

  • Quando e como devo criar um pipeline completamente novo?

SQL
  • Preciso do SQL para gerar alguns dados. Onde devo colocar?

Infraestrutura
  • Como a disponibilização do nosso modelo funciona? Há um diagrama?

  • Meu modelo depende de quais sistemas upstream e de quais sistemas eu preciso conhecer?

Comunicação
  • Não consigo descobrir algo. Com quem (e como) devo entrar em contato?

Observação importante

O que constitui as "práticas recomendadas de ML" pode diferir entre empresas, equipes e indivíduos. Por exemplo, alguns membros da equipe podem considerar Colabs experimentais como a principal entrega, enquanto outros vão querer trabalhar em R. Alguns podem ter paixão pela engenharia de software, outros acharem que o monitoramento é a coisa mais importante, mas outra pessoa está ciente das boas práticas de produção de atributos, mas quer usar o Scala. Todo mundo está "certo" do próprio ponto de vista e, se conduzido corretamente, o mix será um poder. Se não, pode ser uma bagunça.

Estabelecer as ferramentas, os processos e a infraestrutura que a equipe vai usar antes de escrever uma linha de código pode ser a diferença entre uma falha no projeto após dois anos ou um lançamento bem-sucedido de um trimestre antes do previsto.

Avaliações de performance

Devido à ambiguidade e à incerteza inerentes ao ML, os gerentes de pessoas precisam definir expectativas claras e definir as entregas antecipadamente.

Ao determinar expectativas e entregas, considere como elas serão avaliadas se um projeto ou abordagem não tiver sucesso. Em outras palavras, é importante que o desempenho de um membro da equipe não esteja diretamente conectado ao sucesso do projeto. Por exemplo, é comum que os membros da equipe passem semanas investigando soluções que não são bem-sucedidas. Mesmo nesses casos, o código de alta qualidade, a documentação completa e a colaboração eficaz contribuem de maneira positiva para a avaliação.