Como montar uma equipe de ML

Projetos de ML exigem equipes com membros que têm uma variedade de habilidades, e responsabilidades relacionadas ao machine learning. Essas são as formas mais comuns papéis encontrados em equipes de ML típicas:

Papel Conhecimento e habilidades Principal entrega
Gerente de produtos de ML Os gerentes de produtos de ML têm um conhecimento profundo dos pontos fortes e fracos do ML e do processo de desenvolvimento de ML. Eles alinham problemas de negócios às soluções de ML, trabalhando diretamente com a equipe de ML, usuários finais, e outras partes interessadas. Eles criar a visão do produto, definir casos de uso e e planejar e priorizar projetos. Documento de requisitos do produto (PRD, na sigla em inglês).
Gerente de engenharia Os gerentes de engenharia alcançam as metas de negócios definindo, comunicando e cumprindo as prioridades da equipe. Assim como os gerentes de produto de ML, eles alinham as soluções de ML aos problemas de negócios. Eles definem expectativas claras para os membros da equipe, conduzem avaliações de desempenho e ajudam no desenvolvimento de carreira e profissional. documentos de design, planos de projeto e avaliações de desempenho.
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, modelos de protótipo e a interpretabilidade do modelo. Relatórios e visualizações de dados que respondem a perguntas de negócios por meio de análises estatísticas.
Engenheiros de ML Os engenheiros de ML projetam, criam, colocam em produção e gerenciam modelos de ML. Eles são engenheiros de software sólidos com um profundo conhecimento de ML e práticas recomendadas. Modelo implantado com qualidade de previsão suficiente para atender às necessidades metas.
Engenheiro de dados Engenheiros de dados criam pipelines de dados para armazenar, agregar e processar grandes volumes de dados. Eles desenvolvem a infraestrutura e sistemas de coleta e transformação de 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 e alertas.
Engenheiro de operações de desenvolvimento (DevOps) Os engenheiros de DevOps desenvolvem, implantam, dimensionam e monitoram a infraestrutura de disponibilização de modelos de ML. Um processo automatizado para disponibilização, monitoramento, teste e alerta de o comportamento de um modelo.

Projetos de ML bem-sucedidos têm equipes com cada função bem representada. Em equipes menores, os indivíduos precisarão lidar responsabilidades de vários cargos.

Estabelecer práticas de equipe

Como os papéis, as ferramentas e os frameworks variam muito no ML é fundamental estabelecer práticas comuns por meio de excelente documentação de processos. Por exemplo, um engenheiro pode considerar que apenas os dados certos são suficientes para começar a treinar um modelo, enquanto um engenheiro mais responsável valida que o conjunto de dados é anonimizado corretamente e documente seus metadados e procedência. 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

Os documentos de processo devem definir as ferramentas, a infraestrutura e os processos que a equipe vai usar para o desenvolvimento de ML. Documentos de processo bons ajudam a alinhar os membros novos e atuais da equipe. Ele deve 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 personalizar o pipeline de geração, treinamento e avaliação de dados?
  • Como faço para mudar a arquitetura do modelo para acomodar mudanças na entrada atributos ou rótulos?
  • Como conseguimos exemplos de teste?
  • Que métricas usaremos para julgar a qualidade do modelo?
  • Como lançamos nossos modelos para produção?
  • Como saberemos se há algo de errado com o modelo?
  • De quais sistemas upstream nossos modelos dependem?
  • Como posso tornar meu SQL sustentável e reutilizável?

Mais perguntas possíveis

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

  • Como adiciono um novo conjunto de dados de teste ao meu 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 determino qual recurso foi o mais responsável por um determinado previsão?

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

  • Como faço para calcular ou representar graficamente as previsões do modelo em um conjunto de dados ou amostra escolhidos?

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

  • Como desenvolver e calcular métricas personalizadas?

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

  • Posso realizar uma meta-aná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 faço para lançá-lo na produção?

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

  • Posso acessar o histórico de avaliações de modelos ao longo do tempo?

  • Como saberei quando algo estiver errado com o modelo?

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

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

  • Quando e como devo criar um pipeline completamente novo?

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

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

  • De quais sistemas upstream depende meu modelo conhece?

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

Observação importante

O que constitui as "práticas recomendadas de ML" pode variar entre empresas, equipes e indivíduos. Por exemplo, alguns membros da equipe podem considerar o Colabs experimental como o principal entregável, enquanto outros podem querer trabalhar no R. Alguns podem ter paixão por engenharia de software, outros podem achar que o monitoramento é a coisa mais importante, e outros podem conhecer boas práticas de produção de recursos, mas querem usar Scala. Todos estão "certos" da própria perspectiva e se conduzida corretamente, a mistura será potente. 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 o fracasso do projeto após dois anos ou o lançamento com sucesso um trimestre antes do previsto.

Avaliações de desempenho

Devido à ambiguidade e à incerteza inerentes ao ML, os gerentes de pessoas precisam definir expectativas claras e definir os resultados com antecedência.

Ao determinar as expectativas e os resultados, considere como eles serão avaliados se um projeto ou abordagem não tiver sucesso. Em outras palavras, é importante que a performance de um membro da equipe não esteja diretamente conectada ao sucesso do projeto. Por exemplo, não é incomum que os membros da equipe passem semanas investigando soluções que não dão certo. Mesmo nesses casos, o código de alta qualidade, a documentação completa e a colaboração eficaz devem contribuir positivamente para a avaliação.

Teste seu conhecimento

Qual é o principal motivo para ter uma excelente documentação de processo e estabelecer práticas comuns?
Aumentar a velocidade do projeto.
Correto. Ter uma boa documentação de processos e estabelecer reduz a confusão e simplifica o processo de desenvolvimento.
Estabelecer práticas recomendadas em uma empresa.
Como o desenvolvimento de ML varia de um projeto para outro, as equipes geralmente estabelecem conjuntos de práticas recomendadas para trabalhar de forma eficaz e aumentar a velocidade.
Garanta que todos os engenheiros da equipe tenham o mesmo nível de experiência.
As equipes de ML geralmente têm engenheiros com uma variedade de habilidades e conhecimentos. A documentação do processo ajuda os engenheiros a se alinharem às práticas recomendadas para aumentar a velocidade.