36 pontos por xguru 2024-06-10 | 4 comentários | Compartilhar no WhatsApp
  • Resumo do que disseram as pessoas que responderam à pergunta

schmookeeg

  • A parte de que mais gosta trabalhando atualmente como engenheiro de machine learning é colaborar com pessoas sem formação técnica
    • Mesmo pessoas que não conseguem abrir o MS Outlook em 3 de 5 tentativas têm uma profundidade e uma percepção surpreendentes sobre sua área de especialidade
    • Isso é muito humilhante
  • Pessoas sem formação técnica me veem como um mágico, e eu as vejo como sacerdotes de vodu
    • Quando treinamos e fazemos previsões sobre aquilo de que gostamos, isso é muito gratificante para ambos os lados
  • A maior parte da modelagem é relacionada à área da saúde
    • Extraímos insights de enormes data lakes com cobranças, prescrições, pareceres médicos, sinais vitais, imagens diagnósticas etc.
    • O fato de essas informações serem tão facilmente acessíveis também é impressionante (deixando o HIPAA de lado)
  • Realidade do tempo
    • Cerca de 3 horas por semana vão para reuniões
    • Umas 3 horas são gastas com preparação do trabalho, resolução de problemas de ETL e execução de consultas pontuais para o negócio
    • O resto do tempo é explorando dados para encontrar uma pequena vantagem na previsão de receitas de milhões de dólares
      • É como procurar o Wally com matemática
      • E a cena do Wally tem cerca de 50 TB :D

burnedout_dc4e3

  • Trabalho com machine learning desde meados dos anos 2000
  • Metade do tempo é gasta limpando dados para treinar e usar modelos, mantendo o "pipeline de dados sempre rodando"
  • A outra metade do tempo é gasta dando suporte técnico a "cientistas de IA" que quase não sabem programar
    • Eles passam o tempo copiando e colando conteúdo em vários serviços de chatbot
      • Minha principal função é mostrar a eles como instalar pacotes Python e usar Git
    • Não existe plano de como o trabalho deles será aplicado ao projeto em que estamos trabalhando
      • Mas eles afirmam que modelos transformer vão resolver todos os nossos problemas de processamento de dados
  • Estou pensando em largar tudo e não arrumar um novo trabalho até esse ciclo de hype acabar

tambourineman88

  • A realidade é o oposto do que eu esperava quando estudei machine learning
    • 95% desse trabalho é limpar dados, juntar datasets e fazer feature engineering
    • Ajustar e testar modelos é só 5%
  • Resposta #1 a este comentário
    • Sempre foi assim desde o começo, e continuará sendo, amém
    • Pontos importantes em nível staff/principal
      • É importante manter a "impedância de dados" entre os recursos do produto que dependem de modelos de inferência e a captura de dados
      • Isso serve para garantir que, mesmo que o produto ou a funcionalidade mudem, a instrumentação e a granularidade dos dados que alimentam o armazenamento de dados e o corpus de treinamento não se quebrem
    • Pontos importantes em problemas de reinforcement learning (RL)
      • É importante garantir que as variáveis corretas foram capturadas para as tuplas de espaço de estados e ações
      • Depois disso, o próximo passo é encontrar maneiras de ajustar a interface ou o modelo de ambiente para o feedback de recompensa

davedx

  • Executa pip install pytorch
  • O ambiente quebra
  • Gasta 4 horas consertando o ambiente Python
  • Executa pip install Pillow
  • Recebe um erro dizendo que não corresponde à arquitetura de CPU do Macbook
  • Remove tudo relacionado a Python e gasta mais 4 horas reinstalando tudo do zero
  • Ia executar pip install ..., mas deu hora de ir embora!

Xenoamorphous

  • Sou um desenvolvedor de software comum, mas precisei fazer trabalho de ML por necessidade
  • Tenho curiosidade sobre como os especialistas "de verdade" em ML lidam com resultados probabilísticos/de gradiente descendente e com as expectativas das pessoas
  • No trabalho normal de software, algo funciona ou não funciona; se não funciona, dá para explicar por quê e, com sorte, consertar
  • Mas em ML me perguntam: "Por que este classificador de texto não classificou corretamente este texto?"
    • E eu só consigo responder algo como "faltaram 0,004 pontos para atingir o limiar" ou "não passou por causa da escolha ou da ordem das palavras"
    • Isso parece deixar todo mundo insatisfeito

angarg12

  • Meu cargo é de engenheiro de ML, mas meu trabalho real é quase software engineering puro
  • Minha principal função é construir sistemas que deem suporte a sistemas de ML em produção
    • Como outros mencionaram, isso inclui principalmente transformação de dados, treinamento de modelos, serving de modelos etc.
  • Também faz parte do trabalho criar ferramentas ou modificar sistemas existentes para que cientistas possam fazer seu trabalho
  • Mas, olhando para fora, minha empresa parece ser uma exceção
  • No setor, as expectativas sobre engenheiros de ML parecem estar mais alinhadas com o que cientistas de dados/aplicados fazem (por exemplo, construir e testar modelos)
    • Isso causa muita ambiguidade nas expectativas sobre cada função em cada empresa

runban

  • Um faxineiro bem pago
    • Com dados sujos, você não consegue resultados decentes
    • Aliás, para esse trabalho, Perl é muito melhor que Python
  • Um solucionador de problemas de motherboard bem pago
    • Mesmo com refrigeração líquida, as H100 esquentam demais
    • Porque não temos uma pessoa dedicada a hardware
  • Como todo mundo, brigo com dependências de terceiros que fazem o que querem

primaprashant

  • Trabalho como MLE há 5 anos e, como outros comentários disseram, a maior parte do trabalho é parecida com SWE
  • Dependendo da fase do projeto, o trabalho do dia a dia varia, mas se encaixa em uma destas categorias:
    • Colaborar com stakeholders e TPMs, desenvolvendo hipóteses para resolver problemas de negócio de alta prioridade por meio de análise de dados
    • Estruturar um problema de negócio como um problema de ML e criar métricas adequadas tanto para o modelo de ML quanto para o problema de negócio
    • Construir PoCs e protótipos para validar a viabilidade técnica de novos recursos e ideias
    • Escrever documentos de design para arquitetura e decisões técnicas
    • Trabalhar com a equipe de plataforma para configurar e manter pipelines de dados conforme os requisitos de projetos novos e existentes de ML
    • Construir, implantar e manter microsserviços de ML para inferência
    • Executar testes A/B e escrever documentos de design para análise pós-teste
    • Configurar pipelines para retreinamento de modelos de ML

jackspawn

  • Gasto mais de 50% do tempo com engenharia de backend
    • Porque o ML é usado dentro de uma API maior
  • Sou responsável pela experiência end-to-end dessa API
    • Então faço qualquer coisa que entregue o melhor valor pelo tempo investido
    • Muitas vezes isso não tem nada a ver com o modelo de ML

mardifoufs

  • Trabalho com otimização de código de inferência e com a "produtização" de modelos treinados
  • No momento, trabalho com treinamento e inferência locais porque atuo em um setor em que serviços de nuvem ainda não são amplamente usados
    • Como não é LLM, não há muitas ferramentas prontas, o que torna tudo interessante
    • É preciso construir muita coisa por conta própria
  • Faço de tudo, desde avaliação da qualidade dos dados (a parte local é desafiadora) até usar CUDA diretamente
    • Porque já existem bibliotecas de processamento de sinais construídas sobre CUDA que podem ser aproveitadas
  • Às vezes isso também inclui construir ferramentas internas para a equipe (uma equipe mista de pesquisadores/MLEs)
    • Como é um nicho muito específico, precisamos construir tudo nós mesmos para visualizar dados e inferência
  • Tenho total liberdade em relação a ferramentas e ao design de software interno, então consegui ter bastante influência dentro da organização
  • Uma das ferramentas improvisadas que construí agora vai ser incorporada ao produto principal

hirako2000

  • Não é minha função principal, mas passo a maior parte do tempo "colando coisas"
    • Ajustar open source existente
    • Descobrir como otimizar recursos
    • Retreinar modelos com outros datasets
    • Tentar executar código Python mal escrito
    • Adicionar arquivos de requirements ausentes
    • Limpar dados
  • Fico pensando no que realmente poderia ser resolvido de forma útil com ML e que ainda não tenha sido feito há anos
  • Verifico os preços mais recentes de GPUs e calculo se vale mais a pena comprar uma GPU do que alugar tempo caro de um provedor de hospedagem
  • Leio artigos até ficar com dor de cabeça
    • Leva tempo ler o resumo e passar os olhos em alguns diagramas no meio

tenache

  • Estudei machine learning e fui contratado originalmente para essa função, mas a empresa mudou de direção e agora trabalho com LLMs
  • Passo a maior parte do tempo com coisas como:
    • Entender como diferentes LLMs funcionam
    • Encontrar os melhores parâmetros
    • Como fazer RAG (Retrieval-Augmented Generation)
    • Como integrar com outros bots

trybackprop

  • Em uma semana típica, geralmente faço o seguinte:
  • 15%: reuniões de discussão técnica ou 1:1
    • Normalmente discutimos ideias, planos sobre modelos ou suporte a produtos de ML
  • 40%: desenvolvimento de ML
    • Nos estágios iniciais do projeto, procuro entender os requisitos do produto
    • Discuto com a equipe quais modelos ou algoritmos de ML podem ajudar a alcançar os objetivos do produto/negócio
    • Coleto datasets existentes com analistas e cientistas de dados
    • Crio pipelines usando esses datasets para gerar conjuntos de treino e validação
    • Enquanto espero os conjuntos de treino/validação serem preenchidos (o que pode levar até 2 semanas), trabalho ao mesmo tempo em outros projetos em estágios mais adiantados ou mais atrasados de desenvolvimento
    • Também trabalho em novos modelos (escritos em PyTorch), testo com pequenas quantidades de dados para avaliar o desempenho offline e verificar se estão funcionando como esperado
    • Faço alguns testes manuais usando o modelo para preencher informações do produto e checar sua sanidade (sem experimentos em larga escala, só dá para contar com minha intuição e a da equipe)
    • Quando os conjuntos de treino/validação ficam prontos, treino o modelo com grandes volumes de dados, verifico os resultados offline e, se houver problemas, ajusto o modelo ou mudo a arquitetura
    • Se os resultados offline forem bons ou parecerem bons, implanto o modelo em produção para experimentação
    • Ao mesmo tempo, posso alterar código de produto/infraestrutura para testar o novo modelo que foi construído
    • Executo experimentos e aumento o tráfego aos poucos até uma alocação de 1-5%, mantendo isso por algumas semanas ou um mês
    • Enquanto isso, observo os resultados e monitoro todos os pipelines relevantes para garantir que o modelo esteja sendo treinado adequadamente, para que os resultados do experimento não sejam alterados por fatores inesperados de infraestrutura/bugs/produto
    • Se os resultados parecerem os esperados e estiverem alinhados com a hipótese inicial, discuto com a equipe se devemos lançar; se decidirmos lançar, lançamos!
      • (Observação: o desenvolvimento do modelo inclui escrever features, preparar datasets, fazer análises, criar o próprio modelo de ML e implementar alterações no código de produto/infraestrutura)
  • 20%: manutenção
    • Só porque estou desenvolvendo um novo modelo não significa que ignoro os modelos existentes
    • Verifico diariamente para garantir que o desempenho não caiu nem mudou de forma inesperada
    • Também corrijo pipelines e os torno mais eficientes
  • 15%: leitura de artigos de pesquisa e aprendizado de técnicas
    • O mundo de AI/ML muda rápido, então leio continuamente novos artigos e testo técnicas novas em casa para me manter atualizado
    • Como acho divertido, isso não pesa
    • Não vejo isso como trabalho necessário apenas para me manter em dia
  • 10%: pesquisa interna
    • Uso esse tempo para aprender mais sobre outras equipes ou produtos dentro da empresa e descobrir como nossa equipe pode ajudar ou que técnicas/métodos podemos aproveitar deles
    • Também uso esse tempo para escrever insights obtidos ao olhar para trás, para o trabalho dos últimos 6 meses/1 ano

4 comentários

 
ohyecloudy 2024-06-17

A expressão "Pessoas sem formação técnica me veem como um mágico, e eu as vejo como sacerdotes de vodu" é engraçada.

 
nutella 2024-06-12

Dados... dados... me identifico.

 
halfenif 2024-06-10

Era mais ou menos exatamente o que eu imaginava que eles faziam.

 
tttttaa 2024-06-10

Que interessante!