新闻中心

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

2025-07-30
浏览次数:
返回列表

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

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

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

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

在本文中,我将向您介绍如何训练 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)
# S*e 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 脚本自动执行这些步骤:

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

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

诚客在线考试平台管理系统 0 查看详情 诚客在线考试平台管理系统
  • 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  # git  # docker  # 工具  # ai  # linux  # 中文网  # 乌审旗网站关键词排名  # 命令行  # 咸宁个人网站推广哪个好  # 网站建设方案保障措施  # 网站排名优化包年多少钱  # 网站设计推广团队介绍  # 怎么检测自己的seo  # 在上海网站建设费用  # 仪征物流网站建设  # 长治推广兼职招聘网站有哪些  # 医药推广网站  # 工作流  # 配置文件  # 离线  # 是一个  # 镜像  # 工作流程  # 基础设施  # 管理系统  # type  # fig  # red  # 为什么 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: j*a中数组怎么传递  阿里云盘共享账户怎么用  j*a怎么读取char数组  如何打开win10命令  如何由js快速切换typescript  如何在一串数字前面去掉四位数的命令  什么是typescript  j*a整形怎么转数组  阿里云盘扩容工具怎么用  typescript解决了什么  如何设置从固态硬盘启动  65寸电视长宽多少厘米  linux环境中如何使用ping命令  如何固态硬盘4k对齐  直接gmV是什么意思?直接GMV:定义和概念  如何进入cmd命令行  arp命令如何使用  得物上怎么样申请退换货 得物上退换货详细指南(包含海外)  云淡风轻什么意思  j*a数组怎么新增值  启辰星power标志是什么意思  萝卜快跑的收费标准是什么  手机的nfc是什么功能是什么意思  单片机计数程序怎么写  春运预约抢票能抢到吗  如何使用net命令  忐忑不安是什么意思  为什么有的夸克带电  typescript如何标记私有方法  显卡上面TYPE-C是什么接口  win7怎么取消360显示的壁纸  春运抢票需要什么软件抢  国标控制器单片机怎么接线  新的固态硬盘如何分区  市盈率tt的扣非是什么意思  市盈率292是什么意思  ip dhcp是什么意思  如何清理固态硬盘  域名解析后为什么要进行域名备案  光刻机的分类及特点  为什么都用typescript  新三板市盈率是什么意思  j*a数组怎么保存类  苹果16哪些功能好用  苹果的type-c接口是什么  bored是什么意思  电焊机power灯亮是什么意思  哪些编程软件需要typescript  苹果16适合哪些机升级  夸克投屏为什么那么卡 

搜索