0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何部署ML模型到Google云平台

jf_pJlTbmA9 来源:NVIDIA 作者:NVIDIA 2023-07-05 16:30 次阅读

本系列介绍 开发和部署 ( M L ) 模型。在本文中, 你将学习如何部署 ML 模型到 Google 云平台. 第 1 部分给出了 ML 工作流概括 ,考虑了使用机器学习和数据科学来实现商业价值所涉及的各个阶段。在第 2 部分中,您将学习训练并保存 ML 模型并将其部署为 ML 系统的一部分。

在为 ML 系统构建端到端管道时,最后一步是将经过训练的模型部署到生产环境中。成功的部署意味着 ML 模型已从研究环境中移出并集成到生产环境中,例如,作为一个实时应用程序。

在本文中,您将学习使用 Google 云平台( GCP )将 ML 模型投入生产的三种方法。虽然您可以使用其他几种环境,例如 AWS 、 Microsoft Azure 或本地硬件,但本教程使用 GCP 部署 web 服务。

正在设置

通过您的 Google 帐户注册 Google Cloud Platform 。系统会提示您填写一些信息,包括您的信用卡详细信息。但是,您注册该平台将不收取任何费用。您还可以在前 90 天获得价值 300 美元的免费信贷。

创建帐户后, 创建新的项目并将其命名为 GCP-deployment-example 。不要将项目链接到组织。

确保已将当前项目更改为新创建的项目。

在 Google App Engine 上部署 ML 模型

在您可以在 GoogleAppEngine 上部署模型之前,还有一些额外的模块要添加到代码中。

本节中使用的代码可以在 /kurtispykes/gcp-deployment-example GitHub repo 中找到。

第一步是在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 才能访问 App Engine ,它与 Serverless 产品一起列出)。

App Engine 页面,选择 Create Application

选择要在其中创建应用程序的区域。

将应用程序语言设置为 Python 并使用 Standard 环境。

在右上角,选择终端图标。这将激活云外壳,这意味着您不必下载SDK 。

在部署应用程序之前,必须上载所有代码。由于通过 web 服务与 ML 模型交互所需的所有代码都上传到 gcp-deployment-example/app_engine/ 中的 GitHub 上,因此您可以从云外壳中克隆此存储库。

将代码 URL 复制到剪贴板并导航回 GCP 上的云外壳。向 shell 输入以下命令:

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

通过输入以下命令导航到代码存储库:

cd gcp-deployment-example/app_engine

接下来, initialize the application 。确保您选择了最近创建的项目。

现在,部署应用程序。从云 shell 运行以下命令。如果系统提示您继续,请输入Y。

gcloud app deploy

部署完成后,您将获得服务部署位置的 URL 。打开提供的 URL 以验证应用程序是否正常运行。您应该看到 欢迎使用我的 Flask API 消息。

接下来,测试/predict端点。

使用 Postman 发送 POST 请求以测试成功部署

您可以使用 Postman 向/predict端点发送 POST 请求。 Postman 是开发人员设计、构建、测试和迭代 API 的 API 平台。

要开始,请选择 免费注册 。有一个完整的教程,但为了本篇文章的目的,请直接跳到主页。

从那里,选择 WorkspacesMy WorkspaceNew ,然后选择 HTTP Request

接下来,将 HTTP 请求从GET更改为POST,并在请求 URL 中插入到已部署服务的链接。

之后,导航到Body标头并选择raw,以便插入示例实例。选择send。

predict-endpoint.png 图 1 。 Postman 测试的预测终点

您向/predict端点发送了 POST 请求,其中包含一些定义模型输入的原始数据。在响应中,模型返回[‘Iris-setosa’],这是模型成功部署的积极指示。

您还可以使用 GCP 上提供的其他服务部署模型。

在 Google 云功能上部署 ML 模型

云功能是 GCP 上可用的无服务器技术之一。我对代码做了一些更改,以使部署到云功能无缝。第一个也是最明显的区别是不再从本地存储库导入序列化模型。相反,您正在调用 Google 云存储中的模型。

将模型上传到 Google 云存储

在 GCP 部署示例项目中,选择切换菜单。导航到 Cloud Storage 并选择 BucketsCreate Bucket 。这将提示您为存储桶和其他配置提供名称。我把我的名字命名为model-data-iris。

创建桶后,下一个任务是上传持久化模型。选择 Upload Files ,导航到存储模型的位置,然后选择它。

现在,您可以使用 Google Cloud 中的各种服务来访问此文件。要访问云存储,必须从google.cloud导入storage对象。

下面的代码示例显示了如何从 Google 云存储中访问模型。您也可以在 gcp-deployment-example/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") # remember to change the bucket name
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)

在 Google Cloud 控制台的切换菜单上,选择 Cloud Functions 。要查看菜单,您可能必须选择 View all products 并展开 Serverless 类别。

接下来,选择 Create Function 。如果这是您第一次创建云函数,则要求您启用 API 。选择 Enable 继续。

还要求您进行以下配置设置:

函数名称= Predict

Trigger type = HTTP

Allow unauthenticated invocations =已启用。

在运行时、构建、连接和安全设置部分中还有其他配置,但对于本示例,默认值是可以的,因此选择 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
scitkit-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
} 

如果您使用与前面相同的输入,则会得到相同的响应。

现在,您已经学会了使用 GoogleCloudFunctions 部署 ML 模型。使用此部署,您不必担心服务器管理。您的云功能仅在收到请求时执行,并且 Google 管理服务器。

在 Google AI 云上部署 ML 模型

之前的两个部署要求您编写不同程度的代码。在谷歌人工智能云上,你可以提供经过训练的模型,他们为你管理一切。

在云控制台上,从切换菜单导航到 AI Platform 。在 Models 选项卡上,选择 Create Model

您可能会注意到一条警告消息,通知您 Vertex AI ,这是另一个将 AutoML 和 AI 平台结合在一起的托管 AI 服务。这一讨论超出了本文的范围。

在下一个屏幕上,系统会提示您选择一个区域。选择区域后,选择 Create Model 。为模型命名,相应地调整区域,然后选择 Create

转到创建模型的区域,您应该可以看到模型。选择型号并选择 Create a Version

接下来,您必须将模型链接到云存储中存储的模型。本节有几个重要事项需要注意:

AI 平台上scikit-learn的最新模型框架版本是 1.0.1 版,因此您必须使用此版本来构建模型。

模型必须存储为model.pkl或model.joblib。

为了遵守 GCP AI 平台的要求,我使用所需的模型版本创建了一个新的脚本,将模型序列化为model.pkl,并将其上传到谷歌云存储。有关更多信息,请参阅 /kurtispykes/gcp-deployment-example GitHub repo 中的更新代码。

Model name: logistic_regression_model

选中 Use regional endpoint 复选框。

Region: 欧洲西部 2

models 部分,确保仅选择 europe-west2 区域。

为要创建的模型版本选择 Save 。创建模型版本可能需要几分钟的时间。

通过选择模型版本并导航到 Test & Use 标题来测试模型。输入输入数据并选择 Test

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Google
    +关注

    关注

    5

    文章

    1762

    浏览量

    57505
  • NVIDIA
    +关注

    关注

    14

    文章

    4978

    浏览量

    102987
  • AI
    AI
    +关注

    关注

    87

    文章

    30728

    浏览量

    268886
收藏 人收藏

    评论

    相关推荐

    使用CUBEAI部署tflite模型STM32F0中,模型创建失败怎么解决?

    看到CUBE_AI已经支持STM32F0系列芯片,就想拿来入门嵌入式AI。 生成的模型很小,是可以部署F0上的,但是一直无法创建成功。 查阅CUBE AI文档说在调用create
    发表于 03-15 08:10

    什么是计算 计算的定义

    Google计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“”均拥有几十万台服务器。 “计算”这个术语已是无处不在,从Web2.0大会,
    发表于 11-18 17:23

    简化针对服务的语音检测算法的部署

    格式,工具链将对其进行保存并创建映像以下载到SoC中。图2 nNetLite编译器允许将任何AI / ML模型从任何框架快速优化,修剪和部署DBM10 SoC。资料来源:DSP集团S
    发表于 03-03 10:46

    深度融合模型的特点

    躺在实验机器上在现有条件下,一般涉及模型部署就要涉及模型的转换,而转换的过程也是随着对应平台
    发表于 07-16 06:08

    Pytorch模型如何通过paddlelite部署嵌入式设备?

    Pytorch模型如何通过paddlelite部署嵌入式设备?
    发表于 12-23 09:38

    DIGIPCBA的平台是否支持将平台部署本地服务器

    DIGIPCBA的平台是否支持将平台部署本地服务器,只对本地的内部人员开放
    发表于 06-22 14:13

    通过Cortex来非常方便的部署PyTorch模型

    (比如移动设备)非常有用。在大多数情况下,你会使用模型服务器。今天你看到的许多 ML 应用程序 — 从你最喜欢的流媒体服务背后的推荐引擎在线搜索栏中的自动完成功能—都依赖于这种部署
    发表于 11-01 15:25

    如何将ML模型部署微控制器?

    大家好,的我正在尝试将 ML 模型部署微控制器,我有两块 STM32L4R9I-Discovery 和 STM32H7B3I-Discovery 板。实验及相关结果如下所示:我使用
    发表于 12-29 13:09

    如何使用TensorFlow将神经网络模型部署移动或嵌入式设备上

    有很多方法可以将经过训练的神经网络模型部署移动或嵌入式设备上。不同的框架在各种平台上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如And
    发表于 08-02 06:43

    平台的自动化部署设计与实现

    基于简化部署操作、节省部署时间、提高部署效率的目的,对平台架构和网络拓扑进行设计,对
    发表于 02-23 10:07 0次下载
    <b class='flag-5'>云</b><b class='flag-5'>平台</b>的自动化<b class='flag-5'>部署</b>设计与实现

    ARIZEAI,第一个进入市场的ML观测平台

    “ Arize AI是第一个上市的ML可观察性平台。我们是唯一可收集实际数据并捕获真实模型性能的平台。随着企业将更多模型
    的头像 发表于 09-25 10:56 1648次阅读

    如何在移动设备上训练和部署自定义目标检测模型

    上,目标检测模型的训练和部署的过程: 设备端 ML 学习路径:关于如何在移动设备上,训练和部署自定义目标检测模型的分步教程,无需机器学习专业
    的头像 发表于 08-16 17:09 3581次阅读

    ML-EXray:边缘部署验证框架

      嵌入式AI和ML在边缘的部署不断增加,无疑引入了从边缘的新性能变化。尽管边缘设备上的AI执行性能突然发生了负面变化,但采用TinyML是一种前进的方式。
    的头像 发表于 10-18 14:31 741次阅读

    如何将pytorch的模型部署c++平台上的模型流程

    最近因为工作需要,要把pytorch的模型部署c++平台上,基本过程主要参照官网的教学示例,期间发现了不少坑,特此记录。
    的头像 发表于 10-26 14:36 3139次阅读

    Hugging Face LLM部署大语言模型亚马逊科技Amazon SageMaker推理示例

     本篇文章主要介绍如何使用新的Hugging Face LLM推理容器将开源LLMs,比如BLOOM大型语言模型部署亚马逊科技Amazon SageMaker进行推理的示例。我们将
    的头像 发表于 11-01 17:48 932次阅读
    Hugging Face LLM<b class='flag-5'>部署</b>大语言<b class='flag-5'>模型</b><b class='flag-5'>到</b>亚马逊<b class='flag-5'>云</b>科技Amazon SageMaker推理示例