开源项目mlops-course使用教程:从实验到生产的完整MLOps实践指南

开源项目mlops-course使用教程:从实验到生产的完整MLOps实践指南

【免费下载链接】mlops-course Learn how to design, develop, deploy and iterate on production-grade ML applications. 【免费下载链接】mlops-course 项目地址: https://gitcode.com/gh_mirrors/ml/mlops-course

概述

MLOps(机器学习运维)是现代机器学习项目从开发到生产部署的关键实践。mlops-course项目是一个全面的开源课程,旨在教会开发者如何将机器学习与软件工程相结合,设计、开发、部署和迭代生产级的机器学习应用。

本教程将带你深入了解如何使用mlops-course项目,从环境设置到生产部署,掌握完整的MLOps工作流程。

项目架构与核心组件

mlops-course项目采用模块化设计,包含以下核心组件:

代码结构

madewithml/
├── config.py          # 配置管理
├── data.py            # 数据加载与预处理
├── evaluate.py        # 模型评估
├── models.py          # 模型定义
├── predict.py         # 预测推理
├── serve.py           # 模型服务
├── train.py           # 模型训练
├── tune.py            # 超参数调优
└── utils.py           # 工具函数

技术栈

  • Ray: 分布式计算框架
  • PyTorch: 深度学习框架
  • MLflow: 实验跟踪与管理
  • FastAPI: Web服务框架
  • Anyscale: 云原生ML平台

环境设置与安装

本地环境配置

# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/ml/mlops-course
cd mlops-course

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 安装依赖
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt

# 设置Python路径
export PYTHONPATH=$PYTHONPATH:$PWD

Anyscale云环境配置

对于生产环境,推荐使用Anyscale Workspace:

# 创建工作空间
anyscale workspace create --name madewithml --project madewithml

# 配置集群环境
anyscale cluster-env build deploy/cluster_env.yaml --name madewithml-cluster-env

# 配置计算资源
anyscale cluster-compute create deploy/cluster_compute.yaml --name madewithml-cluster-compute

数据准备与探索

数据集结构

项目使用多标签文本分类数据集,包含以下字段:

字段名类型描述
idint项目唯一标识
created_ondatetime创建时间
titlestring项目标题
descriptionstring项目描述
tagstring分类标签

数据分布分析

import pandas as pd
from collections import Counter

# 加载数据
DATASET_LOC = "https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
df = pd.read_csv(DATASET_LOC)

# 标签分布分析
tag_distribution = Counter(df.tag)
print("标签分布:", tag_distribution.most_common())

输出结果:

标签分布: [
    ('natural-language-processing', 310),
    ('computer-vision', 285), 
    ('other', 106),
    ('mlops', 63)
]

数据预处理流程

mermaid

模型训练与调优

基础训练配置

# 设置环境变量
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

超参数调优

# 超参数搜索配置
export INITIAL_PARAMS="[{\"train_loop_config\": $TRAIN_LOOP_CONFIG}]"

# 启动调优任务
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

训练监控指标

指标名称描述优化方向
train_loss训练损失最小化
val_loss验证损失最小化
val_accuracy验证准确率最大化
learning_rate学习率自适应调整

实验跟踪与管理

MLflow集成配置

# 启动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

实验跟踪功能对比

功能MLflowWeights & BiasesComet
实验跟踪
模型注册
artifact存储
超参数比较
可视化分析
协作功能⚠️

模型评估与验证

性能评估流程

# 获取最佳模型运行ID
export RUN_ID=$(python madewithml/predict.py get-best-run-id \
    --experiment-name $EXPERIMENT_NAME \
    --metric val_loss \
    --mode ASC)

# 执行模型评估
export HOLDOUT_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/holdout.csv"
python madewithml/evaluate.py \
    --run-id $RUN_ID \
    --dataset-loc $HOLDOUT_LOC \
    --results-fp results/evaluation_results.json

评估指标体系

评估结果示例:
{
  "timestamp": "2023-06-09 09:26:18",
  "run_id": "6149e3fec8d24f1492d4a4cabd5c06f6",
  "overall": {
    "precision": 0.9076,
    "recall": 0.9058, 
    "f1": 0.9047,
    "num_samples": 191.0
  },
  "per_class": {
    "computer-vision": {
      "precision": 0.9231,
      "recall": 0.8571,
      "f1": 0.8889
    },
    # ... 其他类别指标
  }
}

模型部署与服务

本地服务部署

# 启动Ray服务
ray start --head

# 部署模型服务
python madewithml/serve.py --run_id $RUN_ID

API接口说明

预测接口
curl -X POST -H "Content-Type: application/json" -d '{
  "title": "Transfer learning with transformers",
  "description": "Using transformers for transfer learning on text classification tasks."
}' http://127.0.0.1:8000/predict
评估接口
curl -X POST -H "Content-Type: application/json" -d '{
  "dataset_loc": "https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/holdout.csv"
}' http://127.0.0.1:8000/evaluate

生产环境部署

# deploy/services/serve_model.yaml
ray_serve_config:
  import_path: deploy.services.serve_model:entrypoint
  runtime_env:
    working_dir: .
    upload_path: s3://madewithml/$GITHUB_USERNAME/services
    env_vars:
      GITHUB_USERNAME: $GITHUB_USERNAME

持续集成与交付(CI/CD)

GitHub Actions工作流

name: MLOps Workflows
on:
  push:
    branches: [ dev ]
  pull_request:
    branches: [ main ]

jobs:
  train-and-evaluate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.10'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run training and evaluation
      run: |
        python madewithml/train.py --experiment-name "ci-cd" --dataset-loc $DATASET_LOC

CI/CD流水线架构

mermaid

测试策略与质量保障

代码测试

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

# 数据测试
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings

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

# 覆盖率测试
python3 -m pytest --cov madewithml --cov-report html

测试金字塔结构

mermaid

监控与维护

性能监控指标

监控类别具体指标告警阈值
服务可用性响应时间> 500ms
资源使用CPU使用率> 80%
资源使用内存使用率> 85%
模型性能预测准确率< 85%
数据质量输入数据分布偏移> 10%

日志与追踪

import logging
import mlflow

# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# 记录实验信息
with mlflow.start_run():
    mlflow.log_param("learning_rate", 0.01)
    mlflow.log_metric("accuracy", 0.85)
    mlflow.log_artifact("model.pkl")

【免费下载链接】mlops-course Learn how to design, develop, deploy and iterate on production-grade ML applications. 【免费下载链接】mlops-course 项目地址: https://gitcode.com/gh_mirrors/ml/mlops-course

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值