赞
踩
前言:
Hello大家好,我是Dream。 最近受邀参与了 亚马逊云科技【云上探索实验室】 活动,基于他们的sagemaker实现了机器学习中一个非常经典的案例:猫狗分类。最让我惊喜的是的模型训速度比想象中 效果要好得多,而且速度十分迅速,而且总体感觉下来整个过程十分便利,使用起来也是得心应手。 那接下来跟随我的视角,来一起复盘一下整体做的过程,来感受一下其强大便利之处。
在我们的日常生活和学习中,尤其是针对人工智能专业的学生以及工作者而言,机器学习、神经网络是我们每天都要接触的工作,复杂多样的环境配置以及高要求的运行配置总让我们十分头疼,正因此我推荐大家去使用AmazonSageMaker,轻松解决你的烦恼。Amazon SageMaker是亚马逊云计算(Amazon Web Service)的一项完全托管的机器学习平台服务,算法工程师和数据科学家可以基于此平台快速构建、训练和部署机器学习 (ML) 模型,而无需关注底层资源的管理和运维工作。它作为一个工具集,提供了用于机器学习的端到端的所有组件,包括数据标记、数据处理、算法设计、模型训练、训练调试、超参调优、模型部署、模型监控等,使得机器学习变得更为简单和轻松;同时,它依托于 Amazon 强大的底层资源,提供了高性能 CPU、GPU、弹性推理加速卡等丰富的计算资源和充足的算力,使得模型研发和部署更为轻松和高效。
Amazon SageMaker由以下三大主要部分组成:
创作: 无需进行任何设置,使用Jupyter Notebook IDE
就能进行数据探索、清洁与预处理。我们可以在常规实例类型或GPU驱动型实例当中运行此类工作负载。
模型训练: 一项分布式模型构建、训练与验证服务。我们可以利用其中的内置常规监督与无监督学习算法及框架,或者利用Docker容器
创建属于自己的训练机制。其模型训练规模可囊括数十个实例,以支持模型构建加速。训练数据读取自S3,训练后的模型成果亦可存放在S3存储桶内。最终得出的模型结果为数据相关模型参数,而非模型当中进行推理的代码。
模型托管: 模型托管服务可配合HTTP端点
以调用模型进行实时推理。这些端点可进行规模扩展,从而支持实际流量;我们也可以同时对多套模型进行A/B测试。此外,我们也可以使用内置的SDK构建这些端点,或者选择Docker镜像提供自己的配置选项。
上述组成部分皆可独立使用,这意味着Amazon SageMaker将能够轻松填补现有流程中的空白环节。换句话来说,当开发人员以端到端方式使用该服务时,将能够享受到由其提供的强大功能。那本文我们就来使用Amazon SageMaker快速实现高精度猫狗分类问题。
Amazon SageMaker提供了一个完全集成的机器学习开发环境,能有效提高我们构建模型的效率和能力。我们可以在一键式Jupyter notebooks帮助下,以闪电般的速度进行构建和协作。Sagemaker还为这些notebooks提供了一键式共享工具。整个编程的结构都会被自动捕获,同时我们可以毫无障碍地与其他人协同工作,分享我们的训练效果和新心得。
在“创建笔记本实例”页面中,输入名称、选择实例类型和计算资源等配置信息,并新建安全组。
在新的界面下,输入该 Notebook 实例的名称,并在 Notebook instance type 处选择实例的类型。同时,设置该实例的存储磁盘大小,默认是 5GB,截图中我们手动改为 30GB,该容量后期同样可以调大。
最后选择创建笔记本实例,SageMaker 就将创建该 Notebook 实例。在 笔记本实例 界面可以看当前的实例列表及其状态,如果状态为 InService,在操作列有 打开 Jupyter |打开 JupyterLab 的选项。
在机器学习中,Notebook 已经是常见的形式了,很多云平台都采用了这种编辑形式。因为可以与代码交互,用它来开发机器学习代码实在是再合适不过了。在 SageMaker Studio 中,除了 Notebook 传统擅长可视化,还额外加了一些可视化组件管理模型的实验过程。
本来用 Notebook 写轻量代码就非常方便,再加上 SageMaker 自己提供的大量精炼 API,它们之间的配合特别融洽。对于那些费时费力的底层资源管理繁杂过程,交给 SageMaker API 就行了,剩下的只要在 Notebook 写下算法逻辑,这才是机器学习开发者最高效的姿势。
点击 Open Jupyter,将自动弹出一个新的页面,加载完成后,出现我们熟悉的 Jupyter Notebook 界面。
其中在 SageMaker Examples 页面下,在右侧 New 下拉菜单中,您可以选择创建的开发环境,此处我们选择 conda_python3 以进行后面的内容。
猫狗数据集介绍:
猫狗数据集包括25000张训练图片,12500张测试图片,包括猫和狗两种图片。在此次实验中为了训练方便,我们取了一个较小的数据集。 数据解压之后会有两个文件夹,一个是 “train”,一个是 “test”,顾名思义一个是用来训练的,另一个是作为检验正确性的数据。
在train
文件夹里边是一些已经命名好的图像,有猫也有狗。而在test
文件夹中是只有编号名的图像。
图片展示
下面是数据集中的图片展示:
class_names = ['cats', 'dogs']
plt.figure(figsize=(10, 10))
for images, labels in train_dataset.take(1):
for i in range(9):
ax = plt.subplot(3, 3, i + 1)
plt.imshow(images[i].numpy().astype("uint8"))
plt.title(class_names[labels[i]])
plt.axis("off")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。