Google Cloud Platform机器学习实战:模型部署与预测指南

Google Cloud Platform机器学习实战:模型部署与预测指南

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

概述

本文将详细介绍如何在Google Cloud Platform上部署训练好的机器学习模型,并利用该模型进行在线预测和批量预测。我们将以预测新生儿体重的模型为例,展示完整的模型部署流程和预测实现方法。

环境准备

在开始之前,我们需要设置一些环境变量,确保所有操作都在正确的项目和存储桶中进行:

PROJECT = "your-project-id"  # 替换为您的项目ID
BUCKET = "your-bucket-name"  # 替换为您的存储桶名称
REGION = "us-central1"       # 选择Cloud MLE可用的区域
TFVERSION = "1.14"           # 指定TensorFlow版本

import os
os.environ["BUCKET"] = BUCKET
os.environ["PROJECT"] = PROJECT
os.environ["REGION"] = REGION
os.environ["TFVERSION"] = TFVERSION

模型部署流程

1. 检查并准备模型存储

首先,我们需要确保训练好的模型已经存储在Cloud Storage中:

if ! gsutil ls -r gs://${BUCKET} | grep -q gs://${BUCKET}/babyweight/trained_model/; then
    gsutil mb -l ${REGION} gs://${BUCKET}
    gsutil -m cp -R gs://cloud-training-demos/babyweight/trained_model gs://${BUCKET}/babyweight/trained_model
fi

2. 清理现有模型版本

在部署新模型前,最好先检查并清理可能存在的旧版本:

MODEL_NAME="babyweight"
MODEL_VERSION="ml_on_gcp"

if gcloud ai-platform models list | grep "$MODEL_NAME \+ $MODEL_VERSION"; then
    echo "删除模型版本 '$MODEL_VERSION'"
    yes | gcloud ai-platform versions delete ${MODEL_VERSION} --model=$MODEL_NAME
    
    echo "删除模型 '$MODEL_NAME'"
    yes | gcloud ai-platform models delete ${MODEL_NAME}
else 
    echo "模型 '$MODEL_NAME' 版本 '$MODEL_VERSION' 不存在"
fi

3. 部署新模型

确定最新的模型二进制文件位置并部署:

MODEL_LOCATION=$(gsutil ls gs://${BUCKET}/babyweight/trained_model/export/exporter/ | tail -1)

echo "正在部署模型 '$MODEL_NAME' 版本 '$MODEL_VERSION' 从 $MODEL_LOCATION"
echo "这个过程可能需要几分钟..."

# 创建模型
gcloud ai-platform models create ${MODEL_NAME} --regions=${REGION}

# 创建模型版本
gcloud ai-platform versions create ${MODEL_VERSION} \
    --model=${MODEL_NAME} \
    --origin=${MODEL_LOCATION} \
    --runtime-version=${TFVERSION} \
    --python-version=3.5

在线预测实现

部署完成后,我们可以通过REST API进行在线预测:

from oauth2client.client import GoogleCredentials
import requests
import json

MODEL_NAME = "babyweight"
MODEL_VERSION = "ml_on_gcp"

# 获取认证token
token = GoogleCredentials.get_application_default().get_access_token().access_token

# 构建API端点
api = f"https://ml.googleapis.com/v1/projects/{PROJECT}/models/{MODEL_NAME}/versions/{MODEL_VERSION}:predict"

headers = {"Authorization": "Bearer " + token}
data = {
  "instances": [
    {
      "is_male": "True",
      "mother_age": 26.0,
      "plurality": "Single(1)",
      "gestation_weeks": 39
    },
    {
      "is_male": "False",
      "mother_age": 29.0,
      "plurality": "Single(1)",
      "gestation_weeks": 38
    },
    {
      "is_male": "True",
      "mother_age": 26.0,
      "plurality": "Triplets(3)",
      "gestation_weeks": 39
    },
    {
      "is_male": "Unknown",
      "mother_age": 29.0,
      "plurality": "Multiple(2+)",
      "gestation_weeks": 38
    }
  ]
}

# 发送预测请求
response = requests.post(api, json=data, headers=headers)
print(response.content)

批量预测实现

对于大规模预测任务,批量预测是更高效的选择:

1. 准备输入数据

首先创建包含预测实例的JSON文件:

%%writefile inputs.json
{"is_male": "True", "mother_age": 26.0, "plurality": "Single(1)", "gestation_weeks": 39}
{"is_male": "False", "mother_age": 26.0, "plurality": "Single(1)", "gestation_weeks": 39}

2. 提交批量预测任务

将输入文件上传到Cloud Storage并提交批量预测任务:

INPUT=gs://${BUCKET}/babyweight/batchpred/inputs.json
OUTPUT=gs://${BUCKET}/babyweight/batchpred/outputs

# 上传输入文件
gsutil cp inputs.json ${INPUT}

# 清空输出目录
gsutil rm -rf ${OUTPUT}

# 提交批量预测任务
gcloud ai-platform jobs submit prediction babyweight_batchpred_$(date +"%Y%m%d_%H%M%S") \
    --data-format=text \
    --region=${REGION} \
    --input-paths=${INPUT} \
    --output-path=${OUTPUT} \
    --model=babyweight \
    --version=ml_on_gcp

3. 检查预测结果

任务完成后,可以查看预测结果:

gsutil ls gs://$BUCKET/babyweight/batchpred/outputs
gsutil cat gs://$BUCKET/babyweight/batchpred/outputs/prediction.results*

在线预测与批量预测对比

| 特性 | 在线预测 | 批量预测 | |------|---------|---------| | 延迟 | 低延迟(毫秒级) | 高延迟(分钟到小时) | | 吞吐量 | 适合少量请求 | 适合大规模预测 | | 成本 | 按请求计费 | 按资源使用时间计费 | | 使用场景 | 实时应用 | 离线数据处理 |

最佳实践建议

  1. 模型版本管理:为每个部署创建新版本,便于回滚和A/B测试
  2. 监控预测:设置监控以跟踪预测延迟和错误率
  3. 输入验证:在客户端验证输入数据格式,减少无效请求
  4. 批量大小:对于批量预测,合理设置每个任务的大小以平衡效率和资源使用
  5. 错误处理:实现健壮的错误处理机制,特别是对于在线预测

通过本文的指导,您应该已经掌握了在Google Cloud Platform上部署机器学习模型并进行预测的完整流程。无论是实时应用还是大规模数据处理,都能找到合适的预测解决方案。

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胡唯隽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值