本系列旨在帮助您了解 MLOps 的基本概念和实践,包括模型构建、监控、配置、测试、打包、部署、CI/CD 等内容。每周我们将专注于一个主题,逐步构建对 MLOps 的全面理解。下面这张图就是所有数据分析师、Data scientist、算法工程师岗必须的技术栈。还有 Jupyter Notebook 实验哦。 项目地址
第 0 周:项目搭建
技术栈:
- Huggingface Datasets
- Huggingface Transformers
- PyTorch Lightning
关键点:
- 数据获取: 学习如何从各种来源获取并收集所需的数据集。
- 数据处理: 掌握清洗、预处理和增强数据的方法,使其适合模型训练。
- 数据加载器定义: 学习如何创建高效的数据加载器,以便在训练过程中批量处理数据。
- 模型定义: 了解如何使用 PyTorch Lightning 定义和构建深度学习模型。
- 模型训练: 掌握训练模型的流程,包括设置训练参数和监控训练过程。
- 模型推理: 学习如何使用训练好的模型进行预测和评估其性能。
第 1 周:模型监控 – Weights and Biases
技术栈:
- Weights and Biases (W&B)
- torchmetrics
关键点:
- W&B 基础配置: 学习如何在项目中集成 W&B 进行实验跟踪。
- 指标计算与记录: 掌握如何计算关键性能指标并将其记录到 W&B 仪表板中。
- 添加可视化图表: 学习如何在 W&B 中创建和添加训练过程中的各种可视化图表。
- 记录数据样本: 了解如何将数据样本上传到 W&B,以便更直观地了解模型表现。
- 比较不同实验: 学习如何在 W&B 中比较不同的实验结果,帮助优化模型性能。
第 2 周:配置管理 – Hydra
技术栈:
- Hydra
关键点:
- Hydra 基础: 了解 Hydra 的核心概念和用途。
- 配置覆盖: 学习如何在运行时动态修改和覆盖默认配置。
- 多文件配置管理: 掌握如何将配置拆分到多个文件中,提升配置的可读性和可维护性。
- 变量插值: 学习如何在配置文件中进行变量引用和插值,避免重复定义。
- 多参数组合运行: 了解如何使用 Hydra 方便地运行模型的不同参数组合实验。
第 3 周:数据版本控制 – DVC
技术栈:
- DVC (Data Version Control)
关键点:
- DVC 基础: 了解 DVC 的工作原理及其在机器学习项目中的重要性。
- 初始化 DVC: 学习如何在项目中初始化和配置 DVC。
- 远程存储配置: 掌握如何设置远程存储,用于保存和共享大型数据集和模型文件。
- 保存和追踪模型: 学习如何使用 DVC 版本化和管理模型文件,确保可重复性。
- 数据集版本控制: 了解如何使用 DVC 追踪不同版本的数据集,方便实验管理。
- 与 Git 集成: 学习如何将 DVC 与 Git 结合,实现代码和数据的统一版本控制。
第 4 周:模型打包 – ONNX
技术栈:
- ONNX (Open Neural Network Exchange)
- ONNX Runtime
关键点:
- 了解 ONNX: 掌握 ONNX 的概念及其在模型跨平台部署中的作用。
- 模型转换为 ONNX 格式: 学习如何将训练好的模型转换为 ONNX 格式,以提高兼容性。
- 使用 ONNX Runtime 进行推理: 了解如何使用 ONNX Runtime 加速模型推理过程。
- 性能比较: 对比原始模型与 ONNX 模型的性能差异,评估转换效果。
- 跨平台部署: 学习如何利用 ONNX 将模型部署到不同的平台和设备上。
- 调试与优化: 掌握在 ONNX 中调试和优化模型的方法,确保模型高效运行。
第 5 周:模型打包 – Docker
技术栈:
- Docker
- FastAPI
关键点:
- FastAPI 封装: 学习如何使用 FastAPI 将模型包装成可供服务的 API。
- Docker 基础: 了解 Docker 的核心概念和容器化的优势。
- 构建 Docker 镜像: 学习如何将模型和服务打包成 Docker 镜像,方便部署和分发。
- Docker Compose: 掌握如何使用 Docker Compose 管理多容器应用,实现复杂服务的部署。
- 环境一致性: 了解如何利用 Docker 保证开发、测试和生产环境的一致性,减少部署问题。
- 优化镜像大小: 学习如何减小 Docker 镜像的体积,提高部署和启动效率。
第 6 周:持续集成 / 持续部署 (CI/CD) – GitHub Actions
技术栈:
- GitHub Actions
- Docker
- Google Cloud Services
关键点:
- GitHub Actions 基础: 了解 GitHub Actions 的工作流程和配置方法。
- 编写首次 GitHub Action: 学习如何创建和配置简单的自动化工作流程。
- 创建 Google 服务账号: 掌握如何创建和配置用于访问云服务的安全服务账号。
- 为 DVC 配置服务账号访问: 学习如何使用服务账号在 DVC 中安全地访问远程存储。
- 配置 CI/CD 流水线: 了解如何使用 GitHub Actions 自动化构建、测试和部署流程。
- 集成 Docker 部署: 学习如何在 CI/CD 流水线中构建和部署 Docker 容器。
- 错误处理和通知: 掌握如何在流水线中捕获错误并配置通知机制,及时响应问题。
第 7 周:容器注册表 – AWS ECR
技术栈:
- AWS ECR (Elastic Container Registry)
- AWS S3
- Docker
- GitHub Actions
关键点:
- S3 基础: 了解 Amazon S3 的存储服务及其在数据存储中的应用。
- 编程访问 S3: 学习如何通过代码与 S3 交互,实现数据的上传、下载和管理。
- 将 S3 配置为 DVC 远程存储: 掌握如何使用 S3 作为 DVC 的远程存储,管理大型数据集和模型。
- ECR 基础: 了解 AWS ECR 的功能,用于安全存储和管理 Docker 镜像。
- 将 Docker 镜像推送到 ECR: 学习如何将构建好的 Docker 镜像上传到 ECR,方便后续部署。
- 配置 GitHub Actions 使用 S3 和 ECR: 学习如何在 CI/CD 流水线中集成 S3 和 ECR,实现自动化部署。
- 访问控制和权限管理: 了解如何管理对 S3 和 ECR 的访问权限,确保资源安全。
第 8 周:无服务器部署 – AWS Lambda
技术栈:
- AWS Lambda
- AWS API Gateway
- Docker
- GitHub Actions
关键点:
- 无服务器架构基础: 了解无服务器架构的概念和优势,以及适用的应用场景。
- AWS Lambda 基础: 学习如何在 AWS Lambda 上部署和运行代码,实现弹性伸缩。
- 使用 API Gateway 触发 Lambda: 掌握如何配置 API Gateway,使其作为 Lambda 的触发器,提供 API 服务。
- 部署容器到 Lambda: 学习如何将 Docker 容器部署到 Lambda,简化环境配置。
- 配置 GitHub Actions 自动部署到 Lambda: 了解如何通过 CI/CD 流水线实现代码的自动化部署和更新。
- 性能监控与日志记录: 学习如何监控 Lambda 的性能,并使用 CloudWatch 记录和分析日志。
- 成本优化: 了解如何通过无服务器架构优化资源使用和降低运营成本。
第 9 周:预测监控 – Kibana
技术栈:
- AWS CloudWatch
- ElasticSearch
- Kibana
关键点:
- CloudWatch 日志基础: 了解如何使用 CloudWatch 记录和监控应用日志和指标。
- 创建 ElasticSearch 集群: 学习如何在 AWS 上部署和配置 ElasticSearch 集群,用于数据存储和检索。
- 将 CloudWatch 日志导入 ElasticSearch: 掌握如何将 CloudWatch 中的日志数据同步到 ElasticSearch,便于分析。
- 在 Kibana 中创建索引模式: 学习如何在 Kibana 中定义数据索引模式,组织和结构化日志数据。
- 创建 Kibana 可视化: 了解如何使用 Kibana 创建各种图表和可视化,直观展示模型预测性能。
- 构建 Kibana 仪表板: 学习如何将多个可视化组合成综合仪表板,实现对模型预测的全面监控。
- 实时监控和报警: 掌握设置实时监控和报警机制的方法,及时发现和响应模型预测中的异常情况。
通过本系列的学习,您将系统地掌握 MLOps 的各个关键环节,从模型的构建、部署到监控,全面提升机器学习项目的开发和运维能力。
正文完
发表至: 每日技术
2024-09-03