在机器学习(ML)的背景下,持续集成/持续部署(CI/CD)是自动化软件发布流程的关键组成部分。本文将指导如何设置机器学习管道的环境,并实现一个满足Google MLOps成熟度模型第二级别的功能管道。假设已经熟悉Python、深度学习、Docker、DevOps和Flask。
该项目将包括六个强制性仓库——Dataset、DataCommit、CodeCommit、UnitTesting、PredictionAPI、Deployment——以及一个“额外”的仓库,Interface。这些在下面的图表中用红色框架标出。
Dataset仓库包含用于训练或更新模型的预处理数据集。每当管道检测到此仓库中的更改时,它将触发持续训练步骤。
DataCommit仓库包含允许管道在推送新数据时触发持续训练的代码。
CodeCommit仓库包含从头开始训练模型以支持持续集成的代码。
UnitTesting仓库包含使管道能够验证模型是否在测试注册表中可用,然后对其运行测试的代码。
PredictionAPI仓库包含负责运行预测服务本身的代码。它加载生产注册表中可用的模型,并通过API公开它。
Deployment仓库包含将模型从测试注册表复制到生产注册表的代码(一旦模型成功通过测试),然后逐渐将新模型加载到Prediction API实例中,实现零停机时间。
Interface仓库包含一个非常基础的FlaskWeb界面,它与API通信以支持预测请求。
要访问上述仓库,请在计算机上创建一个项目文件夹,从该文件夹打开一个终端窗口,然后运行以下命令:
git clone https://github.com/sergiovirahonda/AutomaticTraining-Dataset.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-DataCommit.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-CodeCommit.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-UnitTesting.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-PredictionAPI.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-Deployment.git
git clone https://github.com/sergiovirahonda/AutomaticTraining-Interface.git
注意:可以使用Google以外的云提供商。在这种情况下,需要遵循该提供商的程序。
对于Google Cloud Platform (GCP):
创建一个Google Cloud Platform账户。
在Google Cloud Platform上选择或创建一个项目。创建了一个新的项目,并将其命名为"AutomaticTrainingCICD"。尝试做同样的事情,然后在完成本教程后删除整个项目以避免收费。
检查账单是否已启用。
启用Google Kubernetes Engine、Compute Engine和Container Registry API。
安装并初始化Google Cloud SDK——一个终端包,它将允许与GCP服务交互。
在GCS上创建一个桶,它将作为模型注册表:
gsutil mb -l us-central1 gs://automatictrainingcicd-aiplatform