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 的優秀資源。