Sexta Etapa: Prática de Projetos de IA e Implantação em Produção
Um curso abrangente de engenharia de aprendizado de máquina que ensina como integrar o aprendizado de máquina com a engenharia de software, desde a experimentação até a implantação em produção.
Detalhes do Projeto Made With ML
Visão Geral do Projeto
Made With ML é um projeto de código aberto criado por Goku Mohandas, focado em ensinar como combinar aprendizado de máquina com engenharia de software para projetar, desenvolver, implantar e iterar aplicativos de aprendizado de máquina de nível de produção. O projeto se tornou um dos principais repositórios de aprendizado de máquina no GitHub, com mais de 40.000 desenvolvedores acompanhando.
Objetivos e Características do Projeto
Filosofia Central
O curso constrói gradualmente sistemas de produção confiáveis, de forma iterativa, desde a fase experimental (design + desenvolvimento) até a fase de produção (implantação + iteração).
Principais Características
- 💡 Primeiros Princípios: Estabelecer uma compreensão dos primeiros princípios para cada conceito de aprendizado de máquina antes de entrar diretamente no código.
- 💻 Melhores Práticas: Implementar as melhores práticas de engenharia de software ao desenvolver e implantar modelos de aprendizado de máquina.
- 📈 Escalabilidade: Escalar facilmente cargas de trabalho de aprendizado de máquina (dados, treinamento, ajuste, serviço) em Python, sem precisar aprender uma linguagem totalmente nova.
- ⚙️ MLOps: Conectar componentes de MLOps (rastreamento, teste, serviço, orquestração, etc.) para construir sistemas de aprendizado de máquina de ponta a ponta.
- 🚀 Desenvolvimento para Produção: Aprender como passar do desenvolvimento para a produção de forma rápida e confiável, sem alterar o código ou o gerenciamento da infraestrutura.
- 🐙 CI/CD: Aprender como criar fluxos de trabalho de CI/CD maduros para treinar e implantar continuamente modelos melhores de forma modular.
Público-Alvo
O projeto é direcionado a vários tipos de alunos:
- 👩💻 Todos os Desenvolvedores: Seja engenheiro de software/infraestrutura ou cientista de dados, o aprendizado de máquina está se tornando cada vez mais uma parte fundamental do desenvolvimento de produtos.
- 👩🎓 Recém-Formados: Aprender habilidades práticas necessárias para a indústria, preenchendo a lacuna entre os cursos universitários e as expectativas da indústria.
- 👩💼 Produto/Liderança: Deseja construir uma base técnica para construir produtos incríveis e confiáveis orientados por aprendizado de máquina.
Estrutura e Conteúdo do Projeto
Estrutura do Código
O código principal do projeto foi refatorado nos seguintes scripts Python:
madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py
Principais Fluxos de Trabalho
1. Configuração do Ambiente
O projeto suporta vários ambientes de implantação:
- Ambiente Local: Usar um laptop pessoal como cluster
- Plataforma Anyscale: Usar o Anyscale Workspace para desenvolvimento na nuvem
- Outras Plataformas: Suporte para AWS, GCP, Kubernetes, implantação local, etc.
2. Dados e Treinamento do Modelo
export EXPERIMENT_NAME="llm"
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
export TRAIN_LOOP_CONFIG='{"dropout_p": 0.5, "lr": 1e-4, "lr_factor": 0.8, "lr_patience": 3}'
python madewithml/train.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--train-loop-config "$TRAIN_LOOP_CONFIG" \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/training_results.json
3. Ajuste do Modelo
python madewithml/tune.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--initial-params "$INITIAL_PARAMS" \
--num-runs 2 \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/tuning_results.json
4. Avaliação do Modelo
export RUN_ID=$(python madewithml/predict.py get-best-run-id --experiment-name $EXPERIMENT_NAME --metric val_loss --mode ASC)
python madewithml/evaluate.py \
--run-id $RUN_ID \
--dataset-loc $HOLDOUT_LOC \
--results-fp results/evaluation_results.json
5. Predição do Modelo
python madewithml/predict.py predict \
--run-id $RUN_ID \
--title "Transfer learning with transformers" \
--description "Using transformers for transfer learning on text classification tasks."
6. Serviço do Modelo
python madewithml/serve.py --run_id $RUN_ID
Rastreamento de Experimentos
O projeto usa MLflow para rastreamento de experimentos e gerenciamento de modelos:
export MODEL_REGISTRY=$(python -c "from madewithml import config; print(config.MODEL_REGISTRY)")
mlflow server -h 0.0.0.0 -p 8080 --backend-store-uri $MODEL_REGISTRY
Framework de Teste
O projeto inclui um conjunto abrangente de testes:
# Teste de código
python3 -m pytest tests/code --verbose --disable-warnings
# Teste de dados
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings
# Teste de modelo
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings
# Teste de cobertura
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings
Implantação em Produção
Implantação Anyscale
O projeto fornece uma solução completa de implantação Anyscale:
- Configuração do Ambiente de Cluster:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
- Configuração de Computação:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
- Submissão de Tarefas:
anyscale job submit deploy/jobs/workloads.yaml
- Implantação de Serviço:
anyscale service rollout -f deploy/services/serve_model.yaml
Fluxo de CI/CD
O projeto integra o GitHub Actions para implementar a implantação automatizada:
- Gatilho do Fluxo de Trabalho: Acionar o fluxo de trabalho de carga de trabalho ao criar um PR
- Treinamento e Avaliação do Modelo: Executar automaticamente o treinamento e a avaliação
- Feedback de Resultados: Exibir os resultados do treinamento e da avaliação diretamente no PR
- Implantação Automática: Implantar automaticamente no ambiente de produção após a mesclagem na ramificação principal
Principais Pontos de Aprendizagem
Stack Tecnológico
- Python: Linguagem de programação principal
- Ray: Framework de computação distribuída
- MLflow: Rastreamento de experimentos e gerenciamento de modelos
- Transformers: Modelos de aprendizado profundo
- FastAPI: Framework de serviço de API
- pytest: Framework de teste
- GitHub Actions: Plataforma CI/CD
Melhores Práticas de Engenharia de Aprendizado de Máquina
- Organização do Código: Estrutura de projeto modular
- Gerenciamento de Experimentos: Rastreamento sistemático de experimentos
- Controle de Versão: Gerenciamento de versão de código e modelos
- Estratégia de Teste: Cobertura de teste abrangente
- Automação de Implantação: Integração do fluxo de CI/CD
- Monitoramento e Manutenção: Monitoramento contínuo do ambiente de produção
Valor do Projeto
O aprendizado de máquina não é uma indústria separada, mas uma poderosa forma de pensar sobre dados que não se limita a nenhum tipo específico de pessoa. O projeto fornece um caminho de aprendizado completo, desde conceitos básicos até a implantação em produção, ajudando os alunos a dominar o conjunto completo de habilidades da engenharia moderna de aprendizado de máquina.
Recursos de Aprendizagem
- Curso Online: https://madewithml.com/
- Código Fonte: https://github.com/GokuMohandas/Made-With-ML
- Notebooks Interativos: notebooks/madewithml.ipynb
- Bootcamp ao Vivo: Bootcamps online realizados regularmente
Melhoria Contínua
O projeto enfatiza a importância da melhoria contínua e, com o estabelecimento do fluxo de trabalho de CI/CD, pode se concentrar na melhoria contínua dos modelos, expandindo facilmente para execuções agendadas (cron), pipelines de dados, monitoramento de detecção de desvio, avaliação online, etc.
Este projeto fornece aos profissionais de aprendizado de máquina um recurso de aprendizado abrangente e prático, cobrindo todo o processo, desde a compreensão do conceito até a implantação em produção, e é um excelente recurso para aprender MLOps moderno.