Machine Learning em Produção (curso da CMU)
(mlip-cmu.github.io)- 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
- Ex.: ter cursado uma disciplina de ML, experiência com
- 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
- Todo o material, incluindo slides e tarefas, é disponibilizado sob licença Creative Commons para pesquisadores, educadores e leitores interessados
- CMU MLIP GitHub
- Os materiais públicos de Spring 2025 estão no course GitHub repository
- Também há um livro-texto online público, com capítulos correspondendo a quase toda a disciplina
- Machine Learning in Production textbook
- O livro será publicado pela MIT Press e é oferecido online sob licença Creative Commons
- Também é fornecido um artigo sobre a proposta e o desenho inicial da disciplina
- As gravações das aulas de Summer 2020 estão na course page, embora hoje já sejam um material um pouco antigo
- Também há uma annotated bibliography para buscar pesquisas relacionadas
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
sshe 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
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
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
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
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
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
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
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
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
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
Parece bom. O curso de LLM Systems é igual
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
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
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