Home
Login

第六阶段:AI项目实战与生产部署

一个全面的机器学习工程课程,教授如何将机器学习与软件工程相结合,从实验到生产部署的完整流程

MLOpsMachineLearningProductionMLGitHubTextFreeEnglish

Made With ML 项目详细介绍

项目概述

Made With ML 是一个由 Goku Mohandas 创建的开源项目,专注于教授如何将机器学习与软件工程相结合,设计、开发、部署和迭代生产级机器学习应用程序。该项目已经成为 GitHub 上顶级的机器学习仓库之一,拥有超过 40,000 名开发者关注。

项目目标和特色

核心理念

该课程从实验阶段(设计 + 开发)到生产阶段(部署 + 迭代),通过迭代的方式,逐步构建可靠的生产系统。

主要特色

  1. 💡 第一性原理:在直接进入代码之前,为每个机器学习概念建立第一性原理的理解。
  2. 💻 最佳实践:在开发和部署机器学习模型时实施软件工程最佳实践。
  3. 📈 规模化:轻松在 Python 中扩展机器学习工作负载(数据、训练、调优、服务),无需学习全新的语言。
  4. ⚙️ MLOps:连接 MLOps 组件(跟踪、测试、服务、编排等),构建端到端的机器学习系统。
  5. 🚀 开发到生产:学习如何快速可靠地从开发转向生产,无需更改代码或基础设施管理。
  6. 🐙 CI/CD:学习如何创建成熟的 CI/CD 工作流程,以模块化的方式持续训练和部署更好的模型。

目标受众

该项目面向多种类型的学习者:

  • 👩💻 所有开发者:无论是软件/基础设施工程师还是数据科学家,机器学习正越来越成为产品开发的关键部分。
  • 👩🎓 大学毕业生:学习行业所需的实用技能,弥合大学课程与行业期望之间的差距。
  • 👩💼 产品/领导层:希望建立技术基础,以便构建由机器学习驱动的令人惊叹且可靠的产品。

项目结构和内容

代码结构

项目的核心代码被重构为以下 Python 脚本:

madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py

主要工作流程

1. 环境设置

项目支持多种部署环境:

  • 本地环境:使用个人笔记本电脑作为集群
  • Anyscale 平台:使用 Anyscale Workspace 进行云端开发
  • 其他平台:支持 AWS、GCP、Kubernetes、本地部署等

2. 数据和模型训练

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. 模型调优

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. 模型评估

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. 模型预测

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. 模型服务

python madewithml/serve.py --run_id $RUN_ID

实验跟踪

项目使用 MLflow 进行实验跟踪和模型管理:

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

测试框架

项目包含全面的测试套件:

# 代码测试
python3 -m pytest tests/code --verbose --disable-warnings

# 数据测试
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings

# 模型测试
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings

# 覆盖率测试
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings

生产部署

Anyscale 部署

项目提供了完整的 Anyscale 部署解决方案:

  1. 集群环境配置
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
  1. 计算配置
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
  1. 作业提交
anyscale job submit deploy/jobs/workloads.yaml
  1. 服务部署
anyscale service rollout -f deploy/services/serve_model.yaml

CI/CD 流程

项目集成了 GitHub Actions 实现自动化部署:

  1. 工作流程触发:创建 PR 时触发工作负载工作流
  2. 模型训练和评估:自动执行训练和评估
  3. 结果反馈:在 PR 中直接显示训练和评估结果
  4. 自动部署:合并到主分支后自动部署到生产环境

核心学习要点

技术栈

  • Python:核心编程语言
  • Ray:分布式计算框架
  • MLflow:实验跟踪和模型管理
  • Transformers:深度学习模型
  • FastAPI:API 服务框架
  • pytest:测试框架
  • GitHub Actions:CI/CD 平台

机器学习工程最佳实践

  1. 代码组织:模块化的项目结构
  2. 实验管理:系统化的实验跟踪
  3. 版本控制:代码和模型的版本管理
  4. 测试策略:全面的测试覆盖
  5. 部署自动化:CI/CD 流程集成
  6. 监控和维护:生产环境的持续监控

项目价值

机器学习不是一个单独的行业,而是一种强大的数据思维方式,不仅限于任何特定类型的人员。该项目提供了一个完整的学习路径,从基础概念到生产部署,帮助学习者掌握现代机器学习工程的全套技能。

学习资源

持续改进

项目强调持续改进的重要性,随着 CI/CD 工作流程的建立,可以专注于持续改进模型,轻松扩展到调度运行(cron)、数据管道、漂移检测监控、在线评估等。

这个项目为机器学习从业者提供了一个全面的、实用的学习资源,涵盖了从概念理解到生产部署的完整流程,是学习现代 MLOps 的优秀资源。