0

0

从开发到部署:自动化机器学习

霞舞

霞舞

发布时间:2025-07-30 10:39:57

|

4219人浏览过

|

来源于php中文网

原创

构建机器学习 (ml) 模型既引人入胜又复杂,需要仔细完成一系列步骤。从机器学习模型开发到部署,是人工智能落地的关键阶段。一个基于正确算法和相关数据、经过良好训练的模型,能够涵盖开发阶段,之后的重点将转向部署。

部署机器学习模型可能是一个繁琐的过程:构建 API、容器化、管理依赖项、配置云环境以及设置服务器和集群通常需要付出巨大的努力,但想象一下,如果整个工作流程可以自动化会怎样?在本文中,我们将讨论机器学习部署自动化如何统一和简化所有这些流程。使用通用工具、预配置模块和易于集成的自动化脚本可以简化部署过程。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

从开发到部署:自动化机器学习 - php中文网

在本文中,我将向您介绍如何训练 ML 模型、使用 Docker 对其进行容器化以及如何使用 Terraform 将其部署到云端,所有这些都使用自动化脚本,使流程可重用且适合 CI/CD。

自动化机器学习部署带来的好处

 自动化 ML 部署彻底改变了游戏规则:

  • 使机器学习模型能够有效扩展
  • 几分钟内将模型投入生产
  • 消除耗时的重复步骤
  • 减少人为错误

使用的工具

要配置 ML 模型部署,我们需要一些基本工具和库:

  • Python 3.4+:用于训练和托管模型以及编写脚本来填补空白的核心编程语言
  • scikit-learn:用于机器学习的 Python 库
  • FastAPI:将 ML 模型作为 Web API 托管的 Python 库
  • Docker:运行 Terraform 和 ML 模型
  • Cloud CLI:需要安装才能与 Azure、AWS 和 GCP 等云平台交互
  • Terraform:基础设施即代码(IaC)用于配置云资源

项目设置

现在,让我们设置项目并回顾每个步骤。该项目主要分为三个部分:

  • 机器学习模型训练
  • 机器学习工作流程自动化
  • 使用 Terraform 的 IaC

该项目的结构如下:

ml_deploy/
├── src/
│   ├── app.py                  # FastAPI app that serves the ML model
│   ├── train_model.py          # Trains and serializes the model
│   ├── model.pkl               # Packaged ML model
│   ├── requirements.txt        # Python libraries
│   └── Dockerfile              # Defines the Docker image
├── terraform/
│   ├── main.tf                 # Terraform configuration file
│   ├── variables.tf
│   ├── outputs.tf
│   └── terraform.tfvars        # Holds dynamic values like image name
├── scripts/
│   ├── build_model_and_image.py  # Automates model training + Docker
│   └── install_terraform.py      # Runs Terraform inside Docker


机器学习模型训练

该流程的第一步是模型开发、训练模型并构建 API 来为其提供服务:

train_model.py/
import pickle
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# Load data
X, y = load_iris(return_X_y=True)
# Initialize and train model
model = LogisticRegression(max_iter=200)
model.fit(X, y)
# Save model to a file
with open("model.pkl", "wb") as f:
    pickle.dump(model, f)


在上面的示例中,我们使用 scikit-learn在传统的鸢尾花物种数据集上训练了一个逻辑回归模型。我们使用Pickle 库对模型进行序列化,将所有依赖项封装到一个文件中。然后,FastAPI 服务器加载model.pkl该模型和端点以生成预测:/predictapp.py

app.py/
from fastapi import FastAPI
import pickle
import numpy as np
app = FastAPI()
model = pickle.load(open("model.pkl", "rb"))
@app.get("/")
def root():
    return {"message": "Model running"}
@app.post("/predict")
def predict(data):
    prediction = model.predict(np.array(data).reshape(1, -1))
    return {"prediction": prediction.tolist()}

机器学习工作流自动化

经过训练的机器学习模型可以转化为一种服务,在可靠部署和访问的情况下,能够实时、大规模地交付。手动训练模型、通过构建 Docker 镜像部署模型以及更新配置文件可能是一个繁琐且容易出错的过程。自动化不仅可以提高效率,还可以简化工作流程。

我们使用两个 Python 脚本自动执行这些步骤:

诚客在线考试平台管理系统
诚客在线考试平台管理系统

诚客在线考试是由南宁诚客网络科技有限公司开发的一款手机移动端的答题网站软件,它应用广泛适合各种学校、培训班、教育机构、公司企业、事业单位、各种社会团体、银行证券等用于学生学习刷题、员工内部培训,学员考核、员工对公司制度政策的学习……可使用的题型有:单选题、多选题、判断题支持文字,图片,音频,视频、数学公式。可以设置考试时间,答题时间,考试次数,是否需要补考,是否可以看到自己成绩。练习模式,支持学生

下载
  • build_model_and_image.py:此 Python 脚本可自动执行模型训练、Docker 镜像构建、推送到 DockerHub 以及更新.tfvarsTerraform 文件并将其组合到单个工作流中。build_model_and_image.py在 GitHub 上查看代码:https://github.com/yraj1457/MLOps/blob/main/scripts/build_model_and_image.py

build_model_and_image.py/
import subprocess
import sys
# Executes the train model Python code
def train_model():
    print("Training the Model")
    try:
        subprocess.run(["python3", "train_model.py"], check=True, cwd=src_dir)
    except Exception as e:
        print(f"Error Training the Model: {e}")
        sys.exit(1)
# Builds the image after training the model
def build_image():
    print(f"Building the Docker Image: {docker_image}")
    try:
        subprocess.run(["docker", "build", "-t", docker_image, "."], check=True)
    except Exception as e:
        print(f"Error Building the Docker Image: {e}")
        sys.exit(1)


  • install_terraform.py:此 Python 自动化脚本通过在 Docker 容器中运行 Terraform 来负责配置基础设施,从而确保无需单独安装 Terraform。install_terraform.py在 GitHub 上查看代码:https://github.com/yraj1457/MLOps/blob/main/scripts/install_terraform.py

install_terraform.py/
import subprocess
import sys
from pathlib import Path
# Run the Trio, the three Terraform commands
def run_terraform():
    cmd_list = ['init', 'plan', 'apply']
    for cmd in cmd_list:
        print(f"Running Terraform {cmd}")
        try:
            subprocess.run(
                f"docker run --rm -v {Path(terraform_dir).resolve()}:/workspace "
                f"-w /workspace {terraform_image} {cmd}",
                shell=True,
                check=True
            )
        except Exception as e:
            print(f"Error running Terraform {cmd}: {e}")
            sys.exit(1)


这些自动化脚本填补了空白,并使工作流程在插入管道时可重复使用。

使用 Terraform 进行基础设施即代码

生产就绪服务需要部署。我们使用 Terraform 的 IaC,它允许我们定义整个云设置——包括运行模型的容器。它确保部署不仅自动化且一致,而且可跨环境移植。

基础设施由四个 Terraform 配置文件配置:main.tf、、和。Python 脚本使用官方 hashicorp/terraform Docker 镜像来运行 Terraform 命令(、、和),从而无需维护 Terraform 安装或版本,并在开发和部署之间提供了明确的划分variables.tf。outputs.tfterraform.tfvarsinitplanapply

下面的 Terraform 代码片段可以作为一个例子。它提供了一个 Azure 资源组和一个容器实例来托管机器学习 API。

main.tf/
provider "azurerm" {
  features {}
}
resource "azurerm_resource_group" "ml_rg" {
  name     = var.resource_group_name
  location = var.location
}
resource "azurerm_container_group" "ml_app" {
  name                = "ml-model-api"
  location            = azurerm_resource_group.ml_rg.location
  resource_group_name = azurerm_resource_group.ml_rg.name
  os_type             = "Linux"
  container {
    name   = "mlmodel"
    image  = var.container_image
    cpu    = "1.0"
    memory = "1.5"
    ports {
      port     = 80
      protocol = "TCP"
    }
  }
  ip_address_type = "public"
  dns_name_label  = var.dns_label
}

该方法的完整代码库(包括所有脚本和配置文件)可在 GitHub 上找到:https://github.com/yraj1457/MLOps

为什么这种方法更有效

自动化脚本将各个流程整合在一起,从而实现更高效的方法,最大限度地减少人工干预,并优雅地记录错误。此外,通过在 Docker 容器中运行工具,我们最大限度地减少了依赖关系,并保证了跨环境的一致性。该架构融合了基础设施自动化、DevOps 和 MLOps 的最佳实践。

结论

本文展示了如何利用最少的工具、更少的依赖和最大程度的自动化,从机器学习模型训练到部署,为数据科学家和 MLOps 工程师节省大量重复性工作。我们利用 Python 编写的自动化脚本,并使用 Docker 封装模型和 Terraform,构建了一个可重用、自动化且可扩展的环境。

这种方法具有高度可移植性,可以插入任何 CI/CD 工具,例如 GitHub Actions 或 Azure DevOps。基础已从这里设置,您可以根据自己的需求进行修改。 

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

707

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

734

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

616

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1234

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

573

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

695

2023.08.11

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号