借助 AI Platform Training 中的内置算法,您可以提交训练数据、选择算法,以及让 AI Platform Training 为您处理预处理和训练作业,而无需为训练应用编写任何代码。
概览
在本教程中,您将在无需编写任何代码的情况下完成 XGBoost 模型的训练。您可以将人口普查收入数据集提交给 AI Platform Training 进行预处理和训练,然后在 AI Platform Training 上部署模型以获取预测结果。生成的模型预测了个人年收入超过 $50000 的概率。
准备工作
如需通过命令行完成本教程的学习,请使用 Cloud Shell 或已安装 Google Cloud CLI 的任何环境。
完成以下步骤以设置 GCP 账号,启用所需的 API,以及安装和激活 Google Cloud CLI。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
设置
如需使用表格式内置算法,您必须从 CSV 文件中移除标题行,并将目标值移到第一列。我们已针对本教程中的操作修改了原始人口普查数据集,并将其托管在公开 Cloud Storage 存储分区 (gs://cloud-samples-data/ai-platform/census/algorithms/data/
) 中。
控制台
在开始训练作业前,您需要将数据从我们的公开 Cloud Storage 存储分区复制到您的 Cloud Storage 存储分区。
将示例数据复制到 Cloud Storage 存储分区
首先,从我们的公开 Cloud Storage 存储分区中下载训练数据和测试数据。
导航到我们的公开 Cloud Storage 存储分区:
下载
test.csv
和train.csv
:点击文件名。
从对象详情页面中点击下载。这些文件会分别作为
ai-platform_census_algorithms_data_test.csv
和ai-platform_census_algorithms_data_train.csv
下载到您的本地环境。
接下来,将训练数据和测试数据上传到您的 Cloud Storage 存储分区。
导航到 Cloud Storage 存储分区的“浏览器”页面。 从选择项目下拉列表中选择您的项目,或在新标签页中将其打开:
点击要使用的存储分区的名称,如果没有存储分区,请新建一个。(如要创建新的存储分区,请务必创建区域性存储分区,并选择在其中运行 AI Platform Training 训练作业的区域。)
(可选)点击创建文件夹,为您上传的文件创建一个文件夹。为该文件夹输入名称(例如“data”),然后点击创建。然后,点击文件夹名称导航到新文件夹。
点击上传文件,将训练文件
ai-platform_census_algorithms_data_train.csv
和测试文件ai-platform_census_algorithms_data_test.csv
上传到您的存储分区中。
现在数据已复制到存储分区中,您可以通过选择要使用的算法类型来启动训练作业。
选择算法
转到 Google Cloud Console 中的 AI Platform Training“作业”页面:
点击新建训练作业按钮。从下方显示的选项中,点击内置算法训练。创建新的训练作业页面随即显示。
训练作业的创建分为四个步骤。第一步是训练算法。选择 XGBoost,然后点击下一步。
gcloud
为您的项目 ID、Cloud Storage 存储分区、指向训练数据的 Cloud Storage 路径以及算法选择设置环境变量。
AI Platform Training 内置算法位于 Container Registry 中托管的 Docker 容器中。
PROJECT_ID=YOUR_PROJECT_ID
BUCKET_NAME=YOUR_BUCKET_NAME
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE=gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv
TRAINING_DATA_PATH=gs://$BUCKET_NAME/algorithms-demo/data/train.csv
gcloud storage cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH
# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/boosted_trees:latest"
提交训练作业
要提交作业,您必须指定一些基本的训练参数和一些与 XGBoost 算法相关的基本参数。
训练作业的常规参数:
训练作业参数 | |
---|---|
参数 | 说明 |
job-id |
训练作业的唯一 ID。提交训练作业后,您可以使用此参数查找训练作业状态的日志。 |
job-dir |
AI Platform Training 在训练作业成功完成后用来保存训练文件的 Cloud Storage 路径。 |
scale-tier |
指定用于训练的机器类型。使用 BASIC 选择仅使用一台机器的配置。 |
master-image-uri |
Container Registry URI,用于指定训练作业要使用的 Docker 容器。将容器用于先前定义为 IMAGE_URI 的内置 XGBoost 算法。 |
region |
指定用于运行训练作业的可用区域。在本教程中,您可以使用区域 us-central1 。 |
内置 XGBoost 算法专用参数:
算法参数 | |
---|---|
参数 | 说明 |
preprocess |
布尔值参数,说明 AI Platform Training 是否应对数据进行预处理。 |
objective |
表示学习任务及其相应的学习目标。 在本示例中是指“binary:logistic”。 |
training_data_path |
指向训练数据的 Cloud Storage 位置,必须为 CSV 文件。 |
如需所有其他 XGBoost 算法标志的详细列表,请参阅内置 XGBoost 参考。
控制台
让启用自动数据预处理保持勾选状态。
对于训练数据路径,点击浏览。在右侧面板中,点击您将训练数据上传到的存储分区的名称,然后导航到
ai-platform_census_algorithms_data_train.csv
文件。将验证数据和测试数据的字段保留为默认设置。
在输出目录中,输入您希望 AI Platform Training 用于存储训练作业输出的 Cloud Storage 存储分区的路径。您可以直接填写 Cloud Storage 存储分区路径,或点击浏览按钮来选择。
为了便于管理,请在 Cloud Storage 存储分区中为此训练作业创建一个新目录。您可以在浏览窗格中执行此操作。
点击下一步。
对于目标,选择“binary:logistic”,它表示一个二进制学习任务和一个逻辑回归目标。
对于模型类型,选择分类。
将所有其他字段保留为默认设置,然后点击下一步。
在作业设置页面上,执行以下操作:
- 输入一个唯一作业 ID(例如“linear_example”)。
- 输入可用区域(例如“us-central1”)。
- 为容量层级选择“BASIC”。
点击完成,提交训练作业。
gcloud
使用
gcloud
提交训练作业之前,请先设置训练作业和算法的所有参数:DATASET_NAME="census" ALGORITHM="xgboost" MODEL_TYPE="classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" # Give a unique name to your training job. DATE="$(date '+%Y%m%d_%H%M%S')" JOB_ID="${MODEL_NAME}_${DATE}" # Make sure you have access to this Cloud Storage bucket. JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
提交作业:
gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --objective=binary:logistic \ --training_data_path=$TRAINING_DATA_PATH
成功提交作业后,您可以使用以下
gcloud
命令查看日志:gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
了解作业目录
训练作业成功完成后,AI Platform Training 会在您的 Cloud Storage 存储分区中创建经过训练的模型,以及其他一些工件。您可以在 JOB_DIR
中找到以下目录结构:
- model/
- model.pkl
- deployment_config.yaml
- artifacts/
- instance_generator.py
- metadata.json
- processed_data/
- training.csv
- validation.csv
- test.csv
确认您的 JOB_DIR
中的目录结构与上述结构相同:
gcloud storage ls $JOB_DIR/* --all-versions
部署经过训练的模型
AI Platform Prediction 使用模型和版本资源来组织经过训练的模型。AI Platform Prediction 模型是存放机器学习模型版本的容器。
要部署模型,请在 AI Platform Prediction 中创建模型资源,创建该模型的一个版本,然后使用该模型和版本请求在线预测。
详细了解如何将模型部署到 AI Platform Prediction。
控制台
在作业页面上,您可以找到包含所有训练作业的列表。点击您刚刚提交的训练作业的名称(“xgboost_example”或您使用的作业名称)。
在作业详情页面上,您可以查看作业的整体进度,也可以点击查看日志,更详细地查看进度。
如果作业成功,顶部会显示部署模型按钮。点击部署模型。
选择“部署为新模型”,然后输入模型名称,如 "xgboost_model"。然后,点击确认。
在创建版本页面上,输入版本名称(如“v1”),并将所有其他字段保留为默认设置。点击保存。
您的版本名称会显示在模型详情页面。版本创建过程需要几分钟时间才能完成。版本准备就绪后,版本名称旁会显示一个对勾图标。
点击版本名称(“v1”)导航至版本详情页面。在本教程的下一步,您将发送预测请求
gcloud
使用内置 XGBoost 算法的训练过程会生成文件 deployment_config.yaml
,该文件可让您更轻松地在 AI Platform Prediction 上部署模型以进行预测。
将该文件复制到本地目录并查看其内容:
gcloud storage cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
您的
deployment_config.yaml
文件应类似于以下内容:deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_xgboost_classification/20190227060114/model framework: XGBOOST labels: job_id: census_xgboost_classification_20190227060114 error_percentage: '14' runtimeVersion: '0.81' pythonVersion: '2.7'
在 AI Platform Training 中创建模型和版本:
MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" gcloud ai-platform models create $MODEL_NAME --regions $REGION # Create a model and a version using the file above. VERSION_NAME="v_${DATE}" gcloud ai-platform versions create $VERSION_NAME \ --model $MODEL_NAME \ --config deployment_config.yaml
版本创建过程需要几分钟时间才能完成。
获取在线预测结果
请求预测时,您需要确保输入数据与训练数据的格式设置相同。在训练之前,AI Platform Training 会通过将您的数据转换为 metadata.json
中显示的语料库来对其进行预处理。
您可以使用 instance_generator.py
,对 AI Platform Training 应用于您的训练数据的输入实例应用相同的预处理转换。此文件将读取存储在 metadata.json
文件中的映射信息。您还可以使用模块中的 transform_string_instance
函数将原始字符串转换为模型可接受的格式。
下载训练工件文件,并查看
metadata.json
:gcloud storage cp $JOB_DIR/artifacts/* . # Let's look at the metadata.json file head metadata.json
使用
instance_generator.py
准备一个数据实例的预测输入:# ground truth is >50K RAW_DATA_POINT="44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States" # Now let's create a JSON prediction request python instance_generator.py --raw_data_string="${RAW_DATA_POINT}" > sample_input.json # Let's look at the prediction request file. cat sample_input.json
发送预测请求:
gcloud ai-platform predict \ --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances sample_input.json
生成的预测结果应为大于 0.5 的数字,表示相应个体的薪水极有可能高于 50000 美元。
关于数据
人口普查数据由 Lichman, M. (2013) 提供。UCI 机器学习存储库 http://archive.ics.uci.edu/ml。加利福尼亚州欧文市:加州大学信息与计算机科学学院。
后续步骤
- 详细了解如何使用内置 XGBoost 算法。