使用Azure Machine Learning和MLflow训练与部署Keras图像分类器

使用Azure Machine Learning和MLflow训练与部署Keras图像分类器

概述

本文将详细介绍如何利用Azure Machine Learning服务和MLflow框架来训练一个Keras模型,用于MNIST手写数字分类任务,并将模型部署为Web服务。通过本教程,您将掌握以下关键技能:

  • 配置MLflow与Azure Machine Learning的集成
  • 使用MLflow自动记录Keras模型训练过程中的指标和参数
  • 在本地和云端GPU计算资源上训练模型
  • 将训练好的模型部署为可调用的Web服务

环境准备

在开始之前,请确保您的环境满足以下要求:

  1. Python环境:建议使用Python 3.7或更高版本
  2. 核心库
    • TensorFlow 2.1.0
    • Keras 2.3.1
    • Azure ML SDK
    • MLflow和azureml-mlflow包

安装必要依赖:

pip install tensorflow==2.1.0 keras==2.3.1 azureml-mlflow

初始化工作区

首先需要连接到您的Azure Machine Learning工作区:

import mlflow
import azureml.core
from azureml.core import Workspace

# 打印版本信息
print("SDK版本:", azureml.core.VERSION)
print("MLflow版本:", mlflow.version.VERSION)

# 连接工作区
ws = Workspace.from_config()

配置MLflow跟踪

将MLflow的跟踪URI设置为指向您的Azure ML工作区:

mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

创建实验

在Azure ML中,训练运行被组织到实验中:

experiment_name = "keras-with-mlflow"
mlflow.set_experiment(experiment_name)

本地训练模型

我们使用一个封装好的训练脚本train.py,该脚本实现了以下功能:

  1. 加载MNIST数据集
  2. 构建Keras模型
  3. 使用MLflow自动记录训练指标和参数
  4. 保存训练好的模型

启动训练:

import sys
import os
import train

# 将脚本目录添加到Python路径
lib_path = os.path.abspath("scripts")
sys.path.append(lib_path)

# 启动训练
run = train.driver()

MLflow的自动记录功能会自动捕获以下信息:

  • 训练指标(如损失、准确率)
  • 模型参数(如学习率、批次大小)
  • 模型架构和权重

云端GPU训练

为了加速训练,我们可以将相同的训练脚本提交到Azure的GPU计算集群:

准备环境

from azureml.core import Environment

# 克隆预配置的TensorFlow GPU环境
env = Environment.get(workspace=ws, name="AzureML-TensorFlow-2.1-GPU").clone("mlflow-env")

# 添加必要的Python包
env.python.conda_dependencies.add_pip_package("azureml-mlflow")
env.python.conda_dependencies.add_pip_package("keras==2.3.1")
env.python.conda_dependencies.add_pip_package("numpy")

配置训练任务

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory="./scripts", script="train.py")
src.run_config.environment = env
src.run_config.target = "gpu-cluster"  # 假设您已创建名为gpu-cluster的计算集群

提交训练任务

from azureml.core import Experiment

exp = Experiment(ws, experiment_name)
run = exp.submit(src)

# 等待训练完成
run.wait_for_completion(show_output=True)

模型部署

训练完成后,我们可以将模型部署为Web服务:

准备部署配置

import json

deploy_config = {
    "computeType": "aci"  # 使用Azure容器实例
}

with open("deployment_config.json", "w") as outfile:
    json.dump(deploy_config, outfile)

部署模型

from mlflow.deployments import get_deploy_client

client = get_deploy_client(mlflow.get_tracking_uri())

# 设置模型路径和部署配置
model_path = "model"
deployment_config_path = "deployment_config.json"
test_config = {'deploy-config-file': deployment_config_path}

# 创建部署
client.create_deployment(
    model_uri=f'runs:/{run.id}/{model_path}',
    config=test_config,
    name="keras-aci-deployment"
)

部署过程可能需要几分钟时间。完成后,您可以在Azure门户中找到部署的评分终结点。

清理资源

使用完毕后,可以删除部署以释放资源:

client.delete("keras-aci-deployment")

总结

通过本教程,您已经学会了:

  1. 如何将MLflow与Azure Machine Learning集成
  2. 使用MLflow自动记录Keras模型训练过程
  3. 在本地和云端GPU资源上训练模型
  4. 将训练好的模型部署为可调用的Web服务

这种工作流程不仅适用于Keras模型,也可以扩展到其他支持MLflow的机器学习框架。Azure Machine Learning与MLflow的结合为机器学习项目的全生命周期管理提供了强大支持。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞锦宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值