- 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
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.
Dados... dados... me identifico.
Era mais ou menos exatamente o que eu imaginava que eles faziam.
Que interessante!