游乐游手机版
首页/AI热点日报/热点详情

在Google云平台上部署机器学习模型的完整指南

类型:热点整理2026-05-29
利用Google云平台部署ML模型,包括AppEngine、CloudFunctions和CloudStorage三种方法。注册GCP获300美元免费额度,创建项目后,在AppEngine部署Flask服务,或通过CloudFunctions从CloudStorage加载模型,实现生产级预测接口。

本系列文章专注于机器学习(ML)模型的完整开发与部署流程。本文将重点讲解如何将ML模型部署到Google云平台(GCP)。在第一部分中,我们详细梳理了ML工作流,并分析了如何借助机器学习和数据科学技术来创造商业价值。接下来,进入实战阶段:训练并保存一个ML模型,再将其部署到生产环境中。

构建端到端的ML系统时,最后一步往往也是最关键的环节——将训练完成的模型推送至生产环境。成功的部署意味着ML模型从研发环境正式上线,像真实的实时应用一样稳定运行。

本文将介绍三种利用GCP将ML模型部署到生产环境的具体方法。当然,可选的平台不止GCP,AWS、Azure、本地服务器等也是可行选择,但本文以GCP为例,演示如何部署一个Web服务。

环境准备与设置

首先,使用你的Google账户注册GCP。注册时需要提供基本信息,包括信用卡信息,不过请放心,注册免费。此外,你还可以在90天内获得价值300美元的免费试用额度。

账号创建完成后,创建一个新项目,命名为GCP-deployment-example。请注意,不要将该项目关联到任何组织。随后,确保当前操作环境已切换至该项目。

在Google App Engine上部署ML模型

在将模型部署到App Engine之前,你需要为代码添加一些额外的模块。本节使用的所有代码都可以在对应的GitHub仓库中找到。

第一步,在predict.py模块中编写推理逻辑:

import joblib
import pandas as pd

model = joblib.load("logistic_regression_v1.pkl")

def make_prediction(inputs):
"""
Make a prediction using the trained model
"""
inputs_df = pd.DataFrame(
inputs,
columns=["sepal_length_cm", "sepal_width_cm", "petal_length_cm", "petal_width_cm"]
)
predictions = model.predict(inputs_df)
return predictions

这个模块主要完成三项工作:

  • 将持久化的模型加载到内存中。
  • 定义一个以输入为参数的函数。
  • 在函数内部,将输入转换为pandas DataFrame并执行预测。

接着,你需要将推理逻辑封装成一个Web服务。这里用Flask来包装模型,具体的实现细节在main.py中:

import numpy as np
from flask import Flask, request
from predict import make_prediction

app = Flask(__name__)

@app.route("/", methods=["GET"])
def index():
"""Basic HTML response."""
body = ("

Welcome to my Flask API

")
return body

@app.route("/predict", methods=["POST"])
def predict():
data_json = request.get_json()
sepal_length_cm = data_json["sepal_length_cm"]
sepal_width_cm = data_json["sepal_width_cm"]
petal_length_cm = data_json["petal_length_cm"]
petal_width_cm = data_json["petal_width_cm"]
data = np.array([[sepal_length_cm, sepal_width_cm, petal_length_cm, petal_width_cm]])
predictions = make_prediction(data)
return str(predictions)

if __name__ == "__main__":
app.run()

这段代码创建了两个端点:

  • index:可视为主页。
  • /predict:用于与部署好的模型交互的接口。

你还需要创建最后一个文件——app.yaml,它用来定义应用程序的运行时环境。

runtime: python38

接下来,在Google Cloud控制台中,具体操作如下:

  • 在导航菜单中,选择App Engine。如果找不到,可以先点击View all products,然后在Serverless产品分类下寻找。
  • App Engine页面中,点击Create Application
  • 选择一个你希望部署的区域。
  • 将应用程序语言设置为Python,环境选择Standard
  • 在右上角,点击终端图标,打开Cloud Shell。这样你就不必本地安装Cloud SDK了。

在部署之前,你必须先把代码上传上去。所有代码都托管在GitHub上,你可以直接从Cloud Shell中克隆这个仓库。

复制仓库的URL,然后回到GCP的Cloud Shell中,输入以下命令:

git clone https://github.com/kurtispykes/gcp-deployment-example.git

接着,进入代码目录:

cd gcp-deployment-example/app_engine

然后,初始化应用程序。请确保你选中的是你刚刚创建的那个项目。

最后,开始部署。在Cloud Shell中运行以下命令,如果系统提示是否继续,输入Y。

gcloud app deploy

部署完成后,你会获得一个服务部署位置的URL。打开这个URL,验证应用是否正常运行。你应该能看到“欢迎使用我的Flask API”字样。

接下来,我们需要测试一下/predict端点是否真的能工作。

使用Postman测试部署是否成功

你可以用Postman向/predict端点发送POST请求来验证。Postman是一个专为开发者设计的API平台,用于设计、构建、测试和迭代API。

如果还没有账号,先点击免费注册。当然,有完整的教程可以参考,但这里我们直接进入正题。依次选择WorkspacesMy WorkspaceNewHTTP Request

然后,将HTTP请求方法从GET改为POST,并在请求URL中粘贴你之前获得的部署服务链接。

接下来,切换到Body标签页,选择raw格式,然后插入一个示例实例的数据,最后点击Send。

图1. 使用Postman测试预测端点

你向/predict端点发送了一个包含原始输入数据的POST请求。作为响应,模型返回了[‘Iris-setosa’]——这是一个非常积极的信号,说明模型已经成功部署并正常工作了。

当然,GCP上还提供了其他服务,也可以用它们来部署模型,我们接着看看怎么弄。

在Google Cloud Functions上部署ML模型

Cloud Functions是GCP上另一种无服务器技术。为了让部署过程更顺畅,我对代码做了一些调整。最明显的变化是:不再从本地仓库导入序列化的模型,而是从Google Cloud Storage(GCS)中调用模型。

将模型上传到Google Cloud Storage

在GCP-console示例项目中,先点击导航菜单,找到Cloud Storage,然后选择BucketsCreate Bucket。系统会要求你为存储桶命名并进行其他配置。我把我的存储桶命名为model-data-iris。

存储桶创建完成后,接下来就是上传序列化模型。点击Upload Files,找到你本地模型文件所在的位置并选中它。

现在,你可以通过GCP上的各种服务来访问这个文件了。为了访问Cloud Storage,你需要从google.cloud中导入storage对象。下面的代码展示了如何从GCS中加载模型,完整的例子可以在Cloud Functions的main.py文件中找到。

import joblib
import numpy as np
from flask import request
from google.cloud import storage

storage_client = storage.Client()
bucket = storage_client.get_bucket("model-iris-data")
blob = bucket.blob("logistic_regression_v1.pkl")
blob.download_to_filename("/tmp/logistic_regression_v1.pkl")
model = joblib.load("/tmp/logistic_regression_v1.pkl")

def predict(request):
data_json = request.get_json()
sepal_length_cm = data_json["sepal_length_cm"]
sepal_width_cm = data_json["sepal_width_cm"]
petal_length_cm = data_json["petal_length_cm"]
petal_width_cm = data_json["petal_width_cm"]
data = np.array([[sepal_length_cm, sepal_width_cm, petal_length_cm, petal_width_cm]])
predictions = model.predict(data)
return str(predictions)

在GCP控制台的导航菜单中,找到Cloud Functions。如果找不到,可以点击View all products并展开Serverless分类。接着,点击Create Function。如果你是第一次创建云函数,系统会要求你启用API,点击Enable继续。

配置设置如下:

  • 函数名称 = Predict
  • 触发器类型 = HTTP
  • 允许未认证的调用 = 启用

在运行时、构建、连接和安全设置部分,默认值就足够了,所以可以直接点击Next

接下来,你需要设置运行时和定义源代码。在Runtime部分,选择你使用的Python版本,我选的是Python 3.8。在源代码来源处,选择Inline Editor

将下面的代码示例复制粘贴到内联编辑器中,云函数会把这个文件作为main.py的入口点。

{
"sepal_length_cm" : 5.1,
"sepal_width_cm" : 3.5,
"petal_length_cm" : 1.4,
"petal_width_cm" : 0.2
}

同时,更新requirements.txt文件:

flask >= 2.2.2, <2.3.0
numpy >= 1.23.3, <1.24.0
scikit-learn >=1.1.2, <1.2.0
google-cloud-storage >=2.5.0, <2.6.0

一定要记得把Entry point的值改为端点的名称,这里就是predict。

完成所有修改后,点击Deploy。部署过程会花几分钟时间,用于安装依赖并启动应用。部署成功后,你会看到函数名旁边出现一个绿色的对勾图标。

现在,你可以在Testing选项卡上测试这个应用是否正常工作。用刚才的示例数据测试一下:

{
"sepal_length_cm" : 5.1,
"sepal_width_cm" : 3.5,
"petal_length_cm" : 1.4,
"petal_width_cm" : 0.2
}

如果你输入和之前相同的参数,会得到同样的响应。至此,你已经学会了如何使用Cloud Functions部署ML模型。使用这种部署方式,你完全不用操心服务器管理。云函数只在收到请求时执行,服务器运维全部交给Google来处理。

在Google AI Cloud上部署ML模型

前面两种部署方式都需要你编写不同程度的代码。而在Google AI Cloud上,你可以直接提供训练好的模型,剩下的管理工作全部由平台代劳。

在Cloud控制台的导航菜单中,找到AI Platform。在Models标签页中,选择Create Model。你可能会看到一条警告信息,提示你改用Vertex AI——这是另一个将AutoML和AI平台统一起来的托管AI服务,不过它在本文的讨论范围之外。

接下来,系统会提示你选择一个区域。选定区域后,点击Create Model。为模型命名,调整区域设置,然后点击Create

进入刚刚创建模型的那个区域,你应该能看到这个模型。点击模型,然后选择Create a Version

现在,你需要将模型链接到Cloud Storage中存储的那个模型文件。这里有几个关键点需要特别注意:

  • AI Platform上支持的scikit-learn最新模型框架版本是1.0.1,所以你必须用这个版本来构建模型。
  • 模型必须保存为model.pkl或model.joblib格式。
  • 为了满足GCP AI Platform的要求,我创建了一个新的脚本,用所需的模型版本将模型序列化为model.pkl,并上传到了Cloud Storage。更新后的代码可以在GitHub仓库中找到。

Model name: logistic_regression_model
勾选Use regional endpoint复选框。
Region: 欧洲西部2
models部分,确保只勾选europe-west2区域。

为要创建的模型版本选择Save。创建模型版本可能需要几分钟时间。完成后,点击模型版本,然后导航到Test & Use标签页进行测试。输入数据,点击Test即可。

来源:https://m.elecfans.com/article/2164600.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。