2 pontos por GN⁺ 2025-01-29 | 1 comentários | Compartilhar no WhatsApp
  • O curso 17-445/17-645/17-745 Machine Learning in Production / AI Engineering da CMU, Spring 2025, aborda o processo de transformar modelos de ML em produtos de software realmente implantáveis e operáveis
  • O ponto central é um entendimento comum entre cientistas de dados e engenheiros de software, conectando requisitos, projeto, implantação, operação e garantia de qualidade partindo do pressuposto de que modelos erram
  • As aulas cobrem amplamente preparação para previsões incorretas, MLOps, testes A/B e canary release, qualidade de dados, concept drift e detecção de feedback loops, testes e depuração, além de equidade, privacidade e segurança
  • Os alunos constroem, implantam, avaliam e mantêm em projeto de grupo um serviço de recomendação de filmes para 1 milhão de usuários, praticando também com Kafka, Jenkins, Prometheus, Grafana, Docker e mais
  • Espera-se experiência básica com ML e programação, mas experiência em engenharia de software não é obrigatória; materiais de aula, tarefas e livro-texto estão públicos para autoestudo e uso educacional

Objetivos do curso e público-alvo

  • Machine Learning in Production / AI Engineering é um curso sobre o que vem depois da etapa de gerar previsões com modelos de ML ou prompts
    • Transformar o modelo em produto
    • Implantá-lo em ambientes reais
    • Garantir confiança na qualidade
    • Operá-lo e mantê-lo em escala
  • O curso de Spring 2025 foi projetado para estudantes com alguma experiência em ciência de dados
    • Ex.: ter cursado uma disciplina de ML, experiência com sklearn
    • Espera-se conhecimento básico de programação em Python e uso de shell Unix
    • Não exige formação prévia em engenharia de software como testes, requisitos, arquitetura, processos ou trabalho em equipe
  • No futuro, o curso deve ser oferecido pelo menos a cada semestre de primavera e pode também abrir em alguns semestres de outono
    • Não há previsão de oferta no verão

Materiais públicos e recursos de referência

Questões tratadas em sistemas de ML em produção

  • Projeto para lidar com previsões erradas

    • Trata de como o sistema deve funcionar mesmo quando o modelo pode errar
    • Trata de como manter segurança e proteção mesmo diante de falhas possíveis
    • Analisa em conjunto a interface do usuário e o projeto do sistema completo em ambiente real
  • Implantação e atualização em produção

    • Trata de como implantar e atualizar modelos com segurança
    • Trata de como testar o pipeline completo de ML
    • Automatiza e amplia o processo de implantação com ferramentas de MLOps
    • Trata de experimentos em produção como testes A/B e canary release
    • Trata de problemas de qualidade de dados, concept drift e detecção de feedback loops
  • Sistemas de ML escaláveis

    • Trata do projeto de sistemas para processar dados de treinamento em larga escala, dados de telemetria e requisições de usuários
    • Compara opções como stream processing, batch processing, arquitetura lambda e data lakes
  • Testes e depuração

    • Trata de como avaliar a qualidade das previsões do modelo em produção
    • Testa não só o modelo, mas o sistema completo baseado em ML
    • Aplica ao teste de ML em produção lições de teste de software, geração automática de casos de teste, simulação e integração contínua
  • Atributos de qualidade além da acurácia

    • Trata de latência de treinamento e inferência, custo operacional, escalabilidade, explicabilidade, equidade, privacidade, robustez e segurança
    • Considera também a necessidade de funcionamento offline e a frequência de atualização do modelo
    • Identifica requisitos de qualidade importantes em ambientes de produção de negócios e ajusta conflitos e trade-offs

Estudos de caso e projeto em grupo

  • Os estudos de caso do curso incluem vários produtos baseados em ML
    • Transcrição automática de fala
    • Detecção distribuída de crianças desaparecidas por webcam
    • Tradução instantânea em realidade aumentada
    • Serviços médicos e de saúde, como detecção de câncer, detecção de quedas e diagnóstico de COVID
    • Layout automático de slides no PowerPoint
    • Avaliação semiautomática de admissões universitárias
    • Gestão de estoque
    • Playlists inteligentes e recomendação de filmes
    • Detecção de fraude em anúncios
    • Robôs de entrega e recursos de direção inteligente
  • O projeto de grupo estendido consiste em construir, implantar, avaliar e manter um serviço de recomendação de filmes
    • Assume um ambiente de “produção” moderadamente realista
    • A escala é de 1 milhão de usuários

Resultados de aprendizagem e ferramentas práticas

  • Após o curso, o aluno deve ser capaz de analisar trade-offs entre vários atributos de qualidade no projeto de sistemas de produção com componentes de ML
    • Além da acurácia, inclui custo operacional, latência, capacidade de atualização e explicabilidade
  • Deve ser capaz de implementar sistemas robustos com qualidade de produção assumindo a possibilidade de erro dos componentes de ML
  • Deve ser capaz de projetar infraestrutura de dados com tolerância a falhas e escalabilidade para treinamento, serving, versionamento e experimentação de modelos
  • Garante a qualidade do pipeline completo de ML com automação de testes e técnicas de garantia de qualidade
    • Qualidade de dados
    • Data drift
    • Feedback loops
    • Qualidade do modelo
  • Deve ser capaz de criar sistemas testáveis e monitoráveis em produção, além de pipelines de implantação robustos
  • Considera requisitos em nível de sistema como segurança, proteção, privacidade, equidade e usabilidade
  • As ferramentas com as quais os alunos se familiarizam incluem Apache Kafka, Jenkins, Prometheus, Grafana, Docker e várias ferramentas de MLOps

Organização do curso e cronograma

  • O número do curso é 17-445/17-645/17-745 e ele vale 12 unidades
  • O conteúdo é o mesmo em todas as numerações, mas o nível PhD 17-745 substitui duas tarefas obrigatórias por um research project
  • As aulas de Spring 2025 são presenciais
    • Aula: seg. e qua., 2:00–3:20pm, PH 100
    • Lab: sexta-feira em vários horários e locais, incluindo opção de lab totalmente remoto
  • O conteúdo do curso tem sido relativamente estável nos últimos anos, mas tópicos e ferramentas específicos continuam sendo atualizados conforme novas pesquisas e novas ferramentas surgem
  • O cronograma preliminar pode mudar e pode ser ajustado ao longo do semestre para refletir tópicos solicitados ou apoio ao aprendizado
  • O fluxo de tópicos passa por transição do modelo para sistemas com IA, levantamento de requisitos, preparação para erros, qualidade do modelo, colaboração, teste comportamental de modelos, arquitetura e projeto, implantação de modelos, experimentos em produção, qualidade de dados, automação de pipeline, escalabilidade, planejamento operacional, versionamento, proveniência, reprodutibilidade, dívida técnica, ética e equidade, explicabilidade, segurança, proteção e privacidade

Avaliação e política de tarefas

  • Para envio de tarefas, correção, discussão, perguntas, avisos e documentos de apoio, são usados Canvas e Gradescope
  • Os slides são publicados na página do curso, e o Slack é usado para comunicação sobre tarefas e projetos
  • O GitHub é usado para coordenar o trabalho em grupo
  • A composição da nota é a seguinte
    • Tarefas individuais 35%
    • Projeto em grupo 30%
    • Prova intermediária 15%
    • Participação 5%
    • Lab 10%
    • Quiz de leitura 5%
    • Não há prova final
  • A correção fornece especificações claras e critérios de pontuação, e cada parte é avaliada em sistema de aprovado/reprovado
    • Não há pontuação parcial
    • Algumas tarefas incluem pequena pontuação bônus
  • Os limites de nota são relativamente altos
    • A+ acima de 99%
    • A acima de 96%
    • A- acima de 94%
    • B+ acima de 91%
    • B acima de 86%
    • B- acima de 82%
    • C acima de 75%
    • D acima de 60%

Conhecimentos prévios e preparação

  • Não há pré-requisitos formais, mas para ter sucesso espera-se experiência básica com ML e capacidade básica de programação
  • Como base em ML, recomenda-se compreensão elementar de extração de atributos, construção e avaliação de modelos e de quando e como técnicas de aprendizado funcionam
    • Experiência com Python e Jupyter notebook ajuda
    • Projetos práticos, autoestudo e cursos online também podem ser suficientes
    • É possível verificar a base por meio do prerequisite knowledge check, anônimo e sem nota
  • É necessário domínio básico de programação
    • Fluência básica em uma linguagem como Python
    • Capacidade de instalar bibliotecas dessa linguagem e aprender a usá-las
    • Capacidade de acessar uma máquina Unix via ssh e executar tarefas básicas de linha de comando
    • Capacidade de instalar e aprender novas ferramentas como Docker
  • Não se exige uma linguagem específica, mas quase todas as equipes usam principalmente Python
  • Ferramentas exigidas como Git, Docker, Grafana e Jenkins são apresentadas com introdução e exemplos nos labs, mas espera-se que o aluno leia a documentação e os tutoriais por conta própria
  • O uso básico de bibliotecas como Flask para escrever serviços web deve poder ser aprendido de forma autônoma
  • Experiência em engenharia de software não é pré-requisito
    • Tópicos como engenharia de requisitos, projeto de software, testes de software, sistemas distribuídos, implantação contínua e gestão de equipes são tratados no curso

Participação em aula, labs e leituras

  • As aulas são presenciais, e participar é parte importante da experiência de aprendizagem
    • As gravações são disponibilizadas no Canvas em regime de best effort
    • Não há opção de aulas remotas síncronas
    • Os labs não são gravados
  • O Slack também é usado em atividades durante a aula, então ele deve estar acessível no notebook, tablet ou celular durante a aula
  • Os labs normalmente apresentam ferramentas e exigem uma ou mais entregas bem definidas
    • As atividades de lab são planejadas para cerca de 1 hora
    • As entregas são avaliadas como aprovado/reprovado quando mostradas ao TA durante o horário do lab da semana
    • Podem incluir código, demonstração em execução e respostas orais a perguntas
  • Os labs foram desenhados como uma primeira prática de baixa pressão
    • Se o resultado estiver abaixo do esperado, é possível continuar ajustando durante o horário do lab
    • Sem justificativa explícita ou uso de token, não são aceitas entregas após o fim do lab
  • Como leitura, usa-se bastante Building Intelligent Systems: A Guide to Machine Learning Engineering, de Goeff Hulten
  • O livro próprio Machine Learning in Production está fortemente ligado a cada aula, mas é indicado como leitura complementar, não como capítulo obrigatório
  • A maioria das aulas tem tarefa de leitura, e o quiz de leitura no Canvas deve ser enviado antes da aula
    • O quiz consiste em 1 pergunta aberta relacionada à leitura
    • Avalia em aprovado/reprovado a participação de boa-fé

Trabalho em equipe e flexibilidade de envio

  • O trabalho em equipe é um elemento obrigatório do curso
    • O projeto em grupo é feito em equipes de 3–5 pessoas
    • As equipes são designadas pelo professor
    • Cada equipe recebe um TA mentor
  • As tarefas em equipe usam avaliação entre pares com critério de team citizenship
    • Avalia o papel de um membro ativo e colaborativo
    • O mentor da equipe faz um debriefing após cada milestone e discute estratégias para melhorar o trabalho em equipe
  • Cada aluno recebe 8 tokens individuais para usar ao longo do semestre
    • 1 token permite entregar uma tarefa individual com 1 dia de atraso
    • 3 tokens permitem melhorar ou refazer uma tarefa individual e reenviá-la com uma breve retrospectiva
    • 1 token permite enviar com atraso ou reenviar um quiz de leitura
    • 1 token permite concluir com atraso ou refazer um lab
    • Os tokens individuais restantes contam como 1 dia de participação no fim do semestre
  • Cada equipe também recebe separadamente 8 tokens de equipe
    • É possível usar 1 por dia para estender o prazo de um milestone
    • É possível usar 3 para reenviar um milestone com retrospectiva
  • Tokens individuais e tokens de equipe não podem substituir um ao outro
  • Quando não há tokens, atrasos em tarefas individuais ou de equipe sofrem desconto de 15% por cada dia iniciado

Ferramentas de IA, colaboração e participação em pesquisa

  • Pela natureza do curso, não há restrições ao uso de ferramentas de IA generativa de conteúdo
    • Podem ser usadas ferramentas como ChatGPT, Bard, Co-Pilot e Stable Diffusion
    • Também é permitido reutilizar código externo de fontes como StackOverflow ou tutoriais
  • A responsabilidade pela exatidão das entregas é inteiramente do aluno
    • Ferramentas de geração de conteúdo podem produzir respostas plausíveis, mas erradas, e essas respostas não recebem pontuação
    • Cumprir licenças aplicáveis também é responsabilidade do aluno
  • Aplicam-se as políticas gerais de honestidade acadêmica
    • Não se deve copiar a resposta de outro aluno nem usar respostas produzidas em conjunto
    • Não se deve ver a resposta de outro aluno, fornecer a própria resposta ou deixá-la em local acessível a outros
    • Também não é permitido publicar respostas em GitHub público
  • É permitido colaborar com outros alunos nos labs, mas não em quizzes de leitura, tarefas ou provas
  • A penalidade mínima por fraude é nota zero em toda a atividade, com possibilidade de sanções adicionais conforme os procedimentos da universidade
  • O curso também realiza pesquisa acadêmica analisando tarefas dos alunos
    • Não participar não afeta a nota nem o histórico acadêmico na CMU
    • Os dados de pesquisa não incluem notas dos alunos
    • A análise é feita de forma desidentificada e agregada após o fim do curso e o envio das notas finais

1 comentários

 
GN⁺ 2025-01-29
Comentários no Hacker News
  • O material é definitivamente prático. Kafka, Docker, Kubernetes, Jenkins são todos ferramentas padrão da indústria, e o foco em MLOps também é interessante
    Gosto do fato de ser um curso que não para simplesmente em criar modelos, mas aborda a lacuna entre machine learning e sistemas reais em produção. Também gosto de cobrir explicabilidade, justiça e monitoramento. Mas, olhando os exercícios práticos, muita coisa parece ser algo que um engenheiro de software intermediário, ou até um iniciante motivado, conseguiria aprender com tutoriais. Git, Flask e orquestração de contêineres são úteis, mas para quem já passou por ambientes de produção são coisas bem básicas. Desafios mais profundos, como otimização de rede para treinamento distribuído ou operação de inferência em larga escala, parecem ser menos abordados, e fico curioso se aparecem nos projetos em grupo. Jenkins é amplamente usado, mas acho que seria melhor apresentar também ferramentas mais modernas de CI/CD, como GitHub Actions ou ArgoCD. Kubernetes também é essencial, mas o curso poderia ser mais voltado ao futuro se tratasse também de ferramentas alternativas ou complementares para deploy em edge ou sistemas serverless

    • Não acho que seja tão introdutório assim. Mesmo que cada ferramenta seja de nível inicial, juntar tudo e fazer funcionar de verdade é difícil, e o material parece estar no nível dos anos intermediários/finais da graduação
      Se não há grande diferença conceitual entre Jenkins e outros frameworks de CI/CD, basta escolher um dos populares e usar, e parece que foi isso que fizeram
    • Parece que agora esse virou o ponto de entrada do primeiro ano de Ciência da Computação. Hoje em dia os alunos entram porque querem fazer machine learning
      Vinte anos atrás, aprendíamos criando bancos de dados em Java, e naquela época também usávamos “ferramentas que pareciam que um dia seriam descartadas”. É só que o novo ponto de partida mudou
    • Também fico curioso sobre a adequação dessas ferramentas no longo prazo. Imagino que um dia surgirá uma ferramenta que execute qualquer rede neural em qualquer hardware, seja numa única máquina local, seja em um ambiente distribuído na nuvem
  • Dei uma olhada nos exercícios e achei interessante. Mesmo sendo um desenvolvedor full-stack sem muita experiência com LLMs, metade das coisas, como Git, Flask, Kafka, Kubernetes, já me é familiar, e a outra metade parece basicamente código
    Quase não aparece a matemática complexa que eu associava a machine learning. Então fico me perguntando se isso significa que MLOps é uma área realmente acessível para desenvolvedores comuns sem doutorado

    • Dá para ir bem longe em MLOps mesmo sem saber muito de machine learning. Se houver engenheiros sênior de machine learning na equipe, você acaba ajudando-os a escalar e construir as coisas
      Por exemplo, se for preciso criar grandes volumes de dados sintéticos por simulação, você pode acabar se preocupando mais com processamento em lote, formatos de codificação e ingestão de dados do que com a criação em si de um dataset sem viés. Se for preciso coletar e amostrar dados por crowdsourcing, muitas vezes a implementação para processar tudo rapidamente online e usar custo e computação de forma eficiente é mais importante do que a teoria de reservoir sampling
    • Exato. É simplesmente engenharia de software com um nome mais sofisticado. Essa classificação de trabalho é mais ou menos um conceito organizado um pouco melhor do que DevOps
      Na maioria das empresas, um engenheiro de machine learning é um engenheiro que entende de software e de alguma parte de machine learning; nos bons casos, entende bem dos dois, e nos ruins, de nenhum dos dois
    • Exigência de doutorado costuma aparecer em cargos de pesquisa de fato, ou funcionar como filtro quando a empresa quer reduzir um pool grande demais de candidatos
    • Normalmente não vejo doutorado como requisito para funções de “operações”
  • Este curso quase não trata de qualidade de dados, e isso parece aparecer só no capítulo 16. Fico curioso sobre quanta experiência os autores têm na indústria
    Na prática, 90% do tempo acaba sendo gasto com qualidade e limpeza de dados

    • Isso também pode ser visto como uma preocupação separada, embora muito importante. Acho melhor abstraí-la como uma etapa dentro do pipeline e estudar em profundidade, separadamente, suas próprias preocupações, desafios e metodologias
      Por exemplo, meu trabalho com machine learning é quase todo no contexto de regressão de simulações de engenharia e desenvolvimento de modelos substitutos, então qualidade ou limpeza de dados quase não é um problema. A maior parte do trabalho está em geração de datasets e seleção, treinamento e deploy de modelos. Varia conforme o trabalho
    • Qualidade de dados no mundo real é um problema enorme. Já liderei a criação de estruturas de linhagem e qualidade em uma grande organização, e tentar acrescentar isso depois vira um trabalho gigantesco
      Se você preparar isso antes que os pipelines de dados se cristalizem nas etapas de geração na origem, transformação e pré-processamento, poupa muita dor de cabeça mais tarde
  • Fico curioso se existe algum lugar onde pessoas que não são estudantes também possam acompanhar

  • Fico curioso se qualquer pessoa pode se matricular, ou se é preciso ser aceito em um dos melhores programas de Ciência da Computação do país

    • Eles publicaram notas de aula, capítulos do livro, leituras adicionais e tarefas
      Parece bom. O curso de LLM Systems é igual
    • Acredito que sim. Sou um dos instrutores deste curso
  • Alguém conhece literatura ou cursos sobre construção de infraestrutura de clusters para machine learning? Tenho interesse especialmente em escalabilidade de infraestrutura de storage, redes e abordagens de escalonamento

    • Não há nada tão especial. Os princípios centrais são os mesmos, e é preciso ajustá-los às mudanças de carga de trabalho trazidas por machine learning
      Para storage, se for para armazenar modelos ou dados, dá para usar armazenamento de objetos como S3 ou sistemas de arquivos de rede compartilhados como EFS e Lustre. Não conheço material definitivo sobre redes para GPUs grandes. Escalonamento hoje já está perto de ser um problema resolvido, então praticamente qualquer coisa funciona. Você também pode criar seu próprio coordenador para executar periodicamente jobs baseados em imagens Docker e, adicionando um sistema de metadados e gatilhos baseado em fila de mensagens, consegue montar algo bem rápido. Airflow ou AWS Batch para jobs em larga escala também são opções. Uma coisa que talvez eu tenha deixado de fora é model serving. Especialmente em sistemas de recomendação, isso é difícil, sensível à latência e vulnerável a picos de latência e tráfego. Mesmo um código Python bem escrito pode bater no limite relativamente rápido
  • Fico feliz em ver este curso publicado. Christian é uma excelente pessoa e seu trabalho também é bom. Conheço um pouco das versões iniciais deste curso e do livro, então posso recomendá-lo fortemente

  • Trabalhei por 9,5 anos com plataformas e sistemas de machine learning de vários portes, e o material parece bom

    • O que você recomendaria para um desenvolvedor backend que fazia apps REST CRUD e quer migrar para plataformas de machine learning?
  • Talvez eu esteja subestimando a dificuldade do curso, mas ele soa como um curso introdutório. Até chegar às ferramentas de explicabilidade de modelos, a maior parte parece bem intuitiva
    Ainda assim, acho bom que ele use ferramentas padrão da indústria para a maioria dos casos de uso