在Cloud AI Platform上部署Keras婴儿体重预测模型实战教程

在Cloud AI Platform上部署Keras婴儿体重预测模型实战教程

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

前言

本教程将详细介绍如何将训练好的Keras模型部署到Cloud AI Platform,并实现在线预测和批量预测功能。这是机器学习项目从开发到生产部署的关键环节,特别适合需要将模型服务化的应用场景。

环境准备

在开始之前,我们需要确保已经完成以下准备工作:

  1. 已完成Keras模型的训练(如未完成,请先完成模型训练步骤)
  2. 已创建Google Cloud项目并设置好相关权限
  3. 已安装必要的Python库和Google Cloud SDK

环境变量设置

首先我们需要设置一些环境变量,这些变量将在整个部署过程中使用:

import os

# 设置项目相关变量
PROJECT = "your-project-name"  # 替换为你的GCP项目名称
BUCKET = PROJECT  # 存储桶名称通常与项目名称相同
REGION = "us-central1"  # 选择合适的地域

# 将变量导出到环境
os.environ["BUCKET"] = BUCKET
os.environ["REGION"] = REGION
os.environ["TFVERSION"] = "2.1"  # 指定TensorFlow版本

检查训练好的模型

在部署之前,我们需要确认训练好的模型文件已正确存储在Google Cloud Storage中:

# 列出模型存储位置
gsutil ls gs://${BUCKET}/babyweight/trained_model

# 获取最新的模型版本路径
MODEL_LOCATION=$(gsutil ls -ld -- gs://${BUCKET}/babyweight/trained_model/2* | tail -1)
gsutil ls ${MODEL_LOCATION}

模型目录应包含以下关键文件:

  • saved_model.pb:模型结构定义文件
  • variables/:包含模型权重和偏置等参数
  • assets/:可能包含的额外资源文件

模型部署到Cloud AI Platform

将训练好的Keras模型部署为在线服务非常简单:

MODEL_NAME="babyweight"  # 模型名称
MODEL_VERSION="ml_on_gcp"  # 版本名称

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

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

部署过程可能需要几分钟时间,完成后模型就可以接收预测请求了。

在线预测实现

使用Python API进行预测

我们可以通过Python代码发送JSON请求到模型端点进行预测:

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 = "https://ml.googleapis.com/v1/projects/{}/models/{}/versions/{}:predict" \
         .format(PROJECT, MODEL_NAME, MODEL_VERSION)

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
    }
  ]
}

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

使用gcloud命令行工具预测

对于快速测试,我们可以使用gcloud命令行工具:

# 创建包含预测数据的JSON文件
echo '{"is_male": "True", "mother_age": 26.0, "plurality": "Single(1)", "gestation_weeks": 39}' > inputs.json
echo '{"is_male": "False", "mother_age": 26.0, "plurality": "Single(1)", "gestation_weeks": 39}' >> inputs.json

# 执行预测
gcloud ai-platform predict \
    --model=babyweight \
    --json-instances=inputs.json \
    --version=ml_on_gcp

批量预测实现

当需要处理大量预测请求时,批量预测是更高效的选择:

# 设置输入输出路径
INPUT=gs://${BUCKET}/babyweight/batchpred/inputs.json
OUTPUT=gs://${BUCKET}/babyweight/batchpred/outputs

# 上传输入数据
gsutil cp inputs.json $INPUT

# 清理旧输出目录
gsutil -m rm -rf $OUTPUT 

# 提交批量预测作业
gcloud ai-platform jobs submit prediction babypred_$(date -u +%y%m%d_%H%M%S) \
    --data-format=TEXT \
    --region ${REGION} \
    --input-paths=$INPUT \
    --output-path=$OUTPUT \
    --model=babyweight \
    --version=ml_on_gcp

批量预测作业提交后,可以在Google Cloud Console中监控作业状态,预测结果将存储在指定的输出路径中。

最佳实践与注意事项

  1. 模型版本管理:建议为每个新部署的模型创建新版本,而不是覆盖旧版本,便于回滚和A/B测试。

  2. 资源监控:部署后监控模型的资源使用情况,根据需要调整资源配置。

  3. 输入验证:在生产环境中,应该对输入数据进行验证,确保符合模型预期。

  4. 错误处理:实现完善的错误处理机制,特别是对于在线预测服务。

  5. 性能优化:对于高并发场景,考虑启用自动扩缩功能。

总结

本教程详细介绍了如何将Keras模型部署到Cloud AI Platform,并实现两种预测方式:

  1. 在线预测:适合低延迟、实时性要求高的场景
  2. 批量预测:适合处理大量数据、对延迟不敏感的场景

通过本教程,您应该已经掌握了将机器学习模型从训练到生产部署的完整流程。在实际应用中,可以根据具体需求选择合适的预测方式,并考虑加入监控、日志记录等生产级功能。

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
发出的红包

打赏作者

霍虹情Victorious

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

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

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

打赏作者

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

抵扣说明:

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

余额充值