介绍
2018年,谷歌推出了云AutoML,引起了广泛关注,是机器学习和人工智能领域最重要的工具之一。在本文中,你将学习“AutoML”,这是一种借助 Google 云 AutoML 构建机器学习模型的无代码解决方案。
AutoML 是 Google Cloud Platform 上 Vertex AI 的一部分。Vertex AI 是用于在云上构建和创建机器学习管道的端到端解决方案。不过,我们将在以后的文章中讨论 Vertex AI 的详细信息。AutoML 主要依赖于两件事,一是迁移学习和神经搜索架构。你只需提供 AutoML 将为你的用例构建最佳自定义模型的数据。
在本文中,我们将讨论在 Google Cloud Platform 上使用 Python 代码进行 AutoML 的好处、用法和实际实施。
学习目标
- 让读者了解如何通过代码使用 AutoML
- 了解 AutoML 的优势
- 如何使用客户端库创建 ML 管道
目录
- 介绍
- 问题陈述
- AutoML 的优点
- 支持的数据类型
- 执行
- 结论
- 经常问的问题
问题陈述
构建机器学习模型是一个耗时的过程,需要大量的专业知识,例如熟练掌握编程语言、良好的数学和统计学知识以及对机器学习算法的理解。过去,拥有技术技能的人只能从事数据科学和构建模型。对于非技术人员来说,构建机器学习模型是一项最困难的任务。
然而,对于构建模型的技术人员来说,这条路并不容易。模型构建完成后,其维护、部署和自动扩展需要额外的工作、工时,并且需要一套略有不同的技能。为了克服这些挑战,全球搜索巨头谷歌于 2014 年推出了 AutoML,但后来才公开发布。
AutoML 的优点
- AutoML 减少了人工干预,并且几乎不需要机器学习专业知识。
- AutoML 允许技术和非技术人员无需编写任何代码即可构建机器学习模型
- 它负责构建模型的每个步骤,例如数据预处理、特征工程、模型构建、超参数调整、模型评估和测试数据预测,因此你无需编写任何代码来执行此类任务
- AutoML 拥有直观的用户界面并提供不同的 API
- AutoML还提供Python和其他编程语言的客户端库
支持的数据类型
AutoML 支持非结构化和结构化数据,分为四种类型
- 图像
- 表格
- 视频
- 文本
使用这四种数据类型,你可以执行 AutoML 支持的某些活动。
图像
使用图像数据集,你可以在 AutoML 中执行以下任务
- 图像分类(单标签)
- 图像分类(多标签)
- 对象检测
- 图像分割
表格
使用表格数据集,你可以执行以下任务:
- 回归
- 分类
- 时间序列预测
视频
你可以使用视频数据集执行以下活动
- 对象检测
- 视频动作识别
- 视频对象跟踪
文本
AutoML 文本数据支持以下任务:
- 情感分析
- 文本分类(单标签)
- 文本分类(多标签)
- 实体提取
执行
要使用 AutoML,你应该在 Google Cloud Platform 上拥有一个帐户。帐户设置是一个非常简单的过程,只需转到 URL https://console.cloud.google.com/并单击“加入”,它会要求你提供 Gmail 电子邮件 ID 和密码,然后就会在 GCP 上创建一个帐户。点击搜索栏,搜索Vertex AI,在左侧你会看到Vertex AI的所有组件,点击workbench。
Workbench 为你提供了一个 jupyter 实验室,你可以在其中使用虚拟机在云上创建笔记本实例。选择“USER-MANAGED NoteBOOKS”实例并单击“NEW NoteBOOK”,选择Python 3并保留默认设置不变,这将需要两到三分钟的时间,将为你创建一个Jupyter Lab。
你还可以创建带有或不带有 GPU 的 TensorFlow 和 pytorch 实例。单击“OPEN JUPYTERLAB”,然后单击 Notebook 部分中的 Python 3 (ipykernel)。
现在, Jupyter 笔记本已准备就绪,你可以编写类似于本地 Python Jupyter 笔记本的代码。
Python 中的 AutoML 客户端库
我们将使用 Python 中的 AutoML 客户端库为演示创建表格分类模型。
首先,你需要安装这两个软件包。
!pip install --upgrade google-cloud-aiplatform
!pip install --upgrade google-cloud-storage
成功安装这两个包后,重新启动内核。你可以通过两种方式重新启动内核,一种是从用户界面,从顶部栏中选择“内核”选项卡,然后单击“重新启动内核”,第二种选择是通过编程方式。
#restart the kernel
import os
if not os.getenv("IS_TESTING"):
import ipython
app = Ipython.Application.instance()
app.kernel.do_shutdown(True)
设置你的项目 ID、存储桶名称和区域。如果你不知道你的项目 ID,请运行以下代码以使用 gcloud 命令了解你的 Google Cloud 项目 ID。
import os
PROJECT_ID = ''
if not os.getenv("IS_TESTING"):
proj_output = !gcloud config list --format 'value(core.project)' 2>/dev/null
PROJECT_ID = proj_output[0]
print("Project ID: ", PROJECT_ID)
#set project id, bucket name and region
PROJECT_ID = '@YOUR PROJECT ID' #from the above code you can get your project id
BUCKET_NAME = 'gs://PROJECT_ID' #you can set your own bucket name
REGION = 'us-west1' #change the region if different
为什么我们需要一个存储桶名称?在 AutoML 中,你可以使用三种方式上传数据:
- 大查询
- 云储存
- 本地驱动器(来自本地计算机)
在此示例中,我们从云存储上传数据集,因此我们需要创建一个存储桶,在其中上传 CSV 文件。
在云存储中创建一个bucket,并设置来自google云存储的数据路径。
#using gsutil command we can create a bucket in cloud storage
! gsutil mb -l $REGION $BUCKET_NAME
#checking if the bucket created
! gsutil ls -al $BUCKET_NAME
#dataset path in gcs
IMPORT_FILE = 'data.csv'
gcs_path = f"{BUCKET_NAME}/{IMPORT_FILE}"
现在,我们需要在 AutoML 中创建一个数据集,然后在该数据集上训练模型。
#import necessary libraries
import os
from google.cloud import aiplatform
#initializing the AI platform
aiplatform.init(project=PROJECT_ID, location=REGION)
#creating dataset in AutoML
ds = aiplatform.TabularDataset.create(
display_name = 'data_tabular', #set your own name
gcs_source = gcs_path)
#create a training job in AutoML to run the model
job = aiplatform.AutoMLTabularTrainingJob(
diaply_name = '#set your own name',
optimization_prediction_type = 'classification',
column_transformations = [
{'categorical' : {'column_name': 'City'}}, #just randomly given the name
{'numeric' : {'column_name': 'Age'}},
{'numeric' : {'column_name': 'Salary'}}])
#run the model
#this will take time, depending on your dataset
model = job.run(
dataset = ds,
target_column = Adopted,
training_fraction_split = 0.8,
test_fraction_split = 0.2,
model_display_name = '#give your own name',
disable_early_stopping = False)
训练完成后,我们将使用端点部署我们的模型。Endpoint 是 Vertex AI 的组件之一,你可以在其中部署模式并进行在线预测。
#deploying the model
endpoint = model.deploy(machine_type = 'n1-standard-4')
这将需要几分钟的时间。创建端点实例时,请明智地选择你的机器类型,因为这会产生成本。设置较低的机器类型会导致较少的费用,而设置较高的机器类型会导致较高的成本。如需更清楚地了解定价,请查看以下链接。
https://cloud.google.com/products/calculator#id=9c1e6e38-ba1e-4b40-b1e4-52c86bb9ab29
#making prediction
pred = endpoint.prediction([
{'City': 'Madrid',
'Age': 52,
'Salary': 70000}])
print(pred)
结论
Google Cloud AutoML 是一款功能强大的工具,任何人都可以使用它来构建机器学习模型,而无需编写代码。AutoML 具有非常交互式的用户界面,你可以在其中构建和部署模型,而无需具备丰富的算法和编码知识。
本文的主要要点是:
- 如何借助 AutoML 客户端库以编程方式利用 AutoML 服务
- 你可以在 AutoML 中构建不同类型的模型,例如图像分类、文本实体提取、时间序列预测、对象检测等
- 你不需要太多的 ML 专业知识即可使用 AutoML。
- 它如何帮助开发人员和数据科学家在其应用程序中快速有效地利用人工智能技术的力量
经常问的问题
Q1. AutoML 会取代数据科学家的工作吗?
答:不,AutoML 不会取代数据科学家的工作。AutoML 具有很大的潜力,可以实现机器学习的自动化,但如果我们想构建一个完全控制代码的自定义模型,我们需要数据科学家的专业知识。
Q2. 预构建的 API 和 AutoML 执行相同的工作吗?
答:预构建的 API 使用预构建的 ML 模型,AutoML 使用定制的 ML 模型。
Q3。非技术人员可以使用 AutoML 吗?
答:是的,任何人都可以使用 AutoML 并在 Google Cloud 上构建机器学习模型。
Q4。谷歌云太贵了?
答:这取决于你要使用的用例和云服务。
Q5. 什么是 Google Cloud 顶点 AI?它像 AutoML 吗?
答:Vertex AI 是 Google Cloud 的 ML 套件,为在云上构建、部署和创建机器学习和人工智能管道提供端到端解决方案。AutoML 是 Vertex AI 的组件之一。