Amazon SageMaker测评分享,效果超出预期

一、前言

随着科技的进步和社会的发展,人工智能得到了愈加广泛的重视,特别是最近大火的Chatgpt,充分展现了研发通用人工智能助手广阔的研究和应用前景。让越来越多的组织和企业跟风加入到人工智能领域的研究中,

但机器学习的实施是一项极其复杂的工作,不仅需要专业技能,还涉及大量的试错。无论是“专业”,抑或是“试错”,其背后都是高昂的成本。而且,通过传统的方式创建机器学习模型,开发人员需要从高度手动的数据准备过程开始,经过可视化、选择算法、设置框架、训练模型、调整数百万个可能的参数、部署模型并监视其性能,这个过程往往需要重复多次,是非常繁琐且特别耗时的。所以说,究竟有多少公司能够玩得起,想必很多人都会在心里打出一个大大的问号。

最近刚好受邀参与了亚马逊云科技【云上探索实验室】活动,使用了它们推出的 Amazon SageMaker来开展机器学习的工作,体验下来的效果是让我很满意的,无论是在构建,数据标注还是模型训练部署等方面都带来了巨大的效率提升,通过使用它预置的常用算法,以及自动模型调优大大降低了模型构建和训练的难度,让我们更容易的使用ML。另外,Amazon SageMaker与其他亚马逊网络服务(AWS)产品集成,如AWS S3、AWS Glue和AWS Lambda,让我们能够轻松构建端到端的ML工作流程:

下面分享一下我体验官网的一个实验案例,在过程中遇到了什么问题和如何解决的,供大家参考。

二、体验分享

1、数据输入

1)原理

SageMaker Processing job 要求数据的输入和输出都需要在 S3 ,基本原理图如下:

2)实操

步骤1:创建Amazon SageMaker 笔记本实例

Amazon SageMaker 笔记本实例是运行 Jupyter 笔记本应用程序的完全托管的机器学习 (ML) 亚马逊弹性计算云 (Amazon EC2) 计算实例。我们可以使用笔记本实例创建和管理 Jupyter 笔记本来预处理数据,以及训练和部署机器学习模型。

亚马逊 SageMaker 笔记本实例创建好之后会在图中的笔记本实例中新增一条状态为Pending的数据,稍等一会儿,状态会自动变为InService,此时改实例为可使用状态。

步骤2:将数据加载到笔记本实例,并上传到Amazon S3

当实例状态变为InService之后,选择打开 Jupyter,然后在 Jupyter notebook 中,为 New(新建)选择 conda_python3,复制粘贴以下示例上传数据代码并运行:

import sagemakersess = sagemaker.Session()
bucket = sess.default_bucket()!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')print(f's3://{bucket}/ground-truth-demo/images/')print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')print(f's3://{bucket}/ground-truth-demo/labeled-data/')

3)使用中遇到的问题及解决方案

1、S3 Bucket创建时需要按照这个命名规则:sagemaker-<your-Region>-<your-aws-account-id>,否则运行上面的示例代码时会报错。

2、示例代码运行的时候遇到access is forbidden报错信息:

这表明权限策略的设置有问题,需要我们去修改存储桶权限、配置存储桶策略以及配置角色策略

2.1:修改存储桶权限——进入编辑“屏蔽公共访问权限(存储桶设置)”位置,把”阻止所有公开访问“复选框标记为未选中状态

2.2:配置存储桶策略——我们可以使用SageMaker自带的策略生成器,正确填写对应信息后一键快捷生成Json策略:

上述步骤点击”Add Statement“按钮后会自动生成如下Json策略

{"Version": "2012-10-17","Id": "Policy1679391476168","Statement": [{"Sid": "Stmt1679391475056","Effect": "Allow","Principal": {"AWS": "arn:aws:iam::692273791570:role/service-role/SageMaker-tt"},"Action": "s3:*","Resource": "arn:aws:s3:::sagemaker-eu-north-1-692273791570"}]
}

上面的json策略生成成功后,直接复制粘贴到存储桶权限策略中:

2.3:配置角色策略——我们可以在笔记本示例详情中找到配置的IAM角色:

点击进入后,找到下面的策略项就可对存储桶权限策略进行编辑:

提供两种编辑方式,这里建议使用可视化编辑更加的友好:

我这里将资源范围设置为所有S3存储桶(你们也可以指定刚刚创建的存储桶)都放开,然后保存后就会生成json策略,如下所示:

{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "s3:ListBucket","Resource": "arn:aws:s3:::*"},{"Sid": "VisualEditor1","Effect": "Allow","Action": ["s3:PutObject","s3:GetObject","s3:DeleteObject"],"Resource": "arn:aws:s3:::*/*"}]
}

这样我们就把角色权限也配置好了,再次执行示例上传代码就成功了:

在成功运行代码以后,打开 Amazon S3 控制台并导航至 sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images 位置,可以看到图片已经在你的默认S3存储桶文件列表了:

2、数据处理

1)创建标记任务

打开 SageMaker 控制台。在左侧导航窗格中,选择 Ground TruthLabeling jobs(贴标作业)。然后选择 Create labeling job(创建标记任务)。

在标记任务详细信息页面,按照下图进行配置,图中的两个路径也可以直接从我们早前所运行 Jupyter notebook 的 print 语句里面去复制对应的值,配置成功后,点击”完成数据设置“,就会出现输入数据链接成功的提示。

2)设置标签

Task type(任务类型)部分,为 Task category(任务类别)选择 Image(图像)。对于 Task selection(任务选择),选择 Image Classification (Single Label)(图像分类(单标签)),然后选择 Next(下一步)。

Select workers and configure tool(选择工作人员并配置工具)部分中,对于Worker types(工作人员类型),选择 Amazon Mechanical Turk。

选择 The dataset does not contain adult content(数据集不包含成人内容)。

选择 You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce(您了解并同意 Amazon Mechanical Turk 工作团队由分布在世界各地的独立合约商组成,而且您不得与该工作团队分享机密信息、个人信息或受保护的健康信息。)

Image classification (Single Label) labeling tool(图像分类(单标签)标记工具)部分中,输入以下信息:

对于 brief description of task(任务的简短描述),输入 Please select the label that best matches the image below(请在下方选择与图像最匹配的标签)。您可以为每张图像仅选择 1 个标签。

对于 Select an option(选择选项),在单独的框中输入以下标签:Airplane(飞机)、Car(汽车)、Ferry(渡轮)、Helicopter(直升机)、Motorbike(摩托车)。

展开 Additional instructions(其他说明),添加以下文本到第 3 步:If there are multiple vehicles in a single image, choose the most prominent vehicle in the image(如果一张图像中有多个交通工具,请选择在图像中最突出的交通工具)。

要了解标注人员将看到怎样的标记工具,请选择 Preview(预览)。

选择 Create(创建)。

创建成功后新的标记任务被列在 SageMaker 控制台 Labeling jobs(贴标作业)部分的下方,其 Status(状态)为 In progressTask type(任务类型)为 Image Classification (Single Label)(图像分类(单个标签))。标记任务可能需要几分钟才能完成。 在 Amazon Mechanical Turk 公共工作人员标记数据后,状态变为 Complete

标记任务的创建及参数配置使用相对比较简单,没有像在笔记本实例中使用代码上传数据那样遇到很多权限类的问题。

3)结果查看

在标记任务的详细信息页面上,已标记数据集对象将显示您的数据集图像的缩略图,并以对应标签作为标题。

详细结果可以通过标记任务的摘要部分,打开输出数据集位置链接,选择 manifests(清单)、output(输出)、output.manifest

其中output.manifest 清单包括以下数据:

source-ref:在输入清单文件中指定图像条目的位置。由于您在第 2 步中选择了 Automated data setup(自动数据设置),Amazon SageMaker Ground Truth 已自动创建这些条目以及输入清单文件。

test-biaoji1:使用从 0 开始的编号数值来指定目标标签。针对此示例中的五个图像分类,标签分别为 0、1、2、3、4。

test-biaoji1-metadata:指定标记元数据,如置信度评分、作业名称、标签字符串名称(例如,飞机、汽车、渡轮、直升机和摩托车),以及人工或机器注释(主动学习)。

然后我们就可以在Amazon SageMaker 中使用 output.manifest 文件来进行模型的训练。

3、模型训练

1)训练任务

我们的数据准备好后,就可以在左侧训练菜单栏中创建训练任务:

然后对学习算法、训练集群规范和超参数进行配置:

之后按下图配置好输入数据

之后点击“创建训练作业”按钮即可,该作业就会开始训练:

待训练完成后我们可以点击右上角的创建模型按钮来创建我们的训练模型。

2)超级参数配置

超参数调整可以通过尝试模型的多种变体来提高工作效率。它通过聚焦在您指定范围内最有前途的超参数值组合来自动寻找最佳模型。为了获得良好的结果,您必须选择正确的范围进行探索。

下面列举出了一些可以设置的可选超参数。包含 Amazon SageMaker XGBoost 算法必需或最常用的超参数子集。这些是由用户设置的参数,以便于从数据中评估模型参数。

参数名称

描述

num_class

类的数量。如果设置objective为 m ulti-softmax 或 mu lti-softprob 则为@@ 必填项。有效值:整数

num_round

运行训练的轮数。必填有效值:整数

alpha

权重上的 L1 正则化项。增加此值会使模型更加保守。可选有效值:浮点值默认值:0

base_score

所有实例的初始预测分数,全局偏移。可选有效值:浮点值缩放细节凹凸法线强度。

booster

要使用的助推程序。gbtree 和 dart 值使用基于树的模型,而 gblinear 使用线性函数。可选有效值:字符串. gbtree、gblinear 或 dart。默认值:gbtree

colsample_bylevel

每个级别中每个拆分的列的子样本比率。可选有效值:浮点值。范围:[0,1]。默认值:1

colsample_bynode

每个节点中列的子样本比率。可选有效值:浮点值。范围:(0,1]。默认值:1

colsample_bytree

构造每个树时列的子样本比率。可选有效值:浮点值。范围:[0,1]。默认值:1

csv_weights

启用此标志时,对于 csv 输入,XGBoost 通过获取训练数据中的第二列(标签后的一列)作为实例权重,以此来区分实例的重要性。可选有效值:0 或 1默认值:0

deterministic_histogram

启用此标志后,XGBoost 会确定性地在 GPU 上构建直方图。仅在 tree_method 设置为 gpu_hist 时才会使用。有关有效输入的完整列表,请参阅 XGBoost 参数。可选有效值:字符串. 范围:true 或 false默认值:true

early_stopping_rounds

模型会一直训练直到验证分数停止改善。验证错误需要至少在每个 early_stopping_rounds 减少才能继续训练。 SageMaker 托管使用最佳模型进行推理。可选有效值:整数默认值: -

eta

在更新中用于防止过度适合的步骤大小收缩。在每个提升步骤之后,您可以直接获得新特征的权重。eta 参数实际上缩小了特征权重,使提升过程更加保守。可选有效值:浮点值。范围:[0,1]。默认值:0.3

不是所有的算法都需要走自动超参数调优,需要权衡模型性能(就是指模型效果)与成本。一般来说,对于深度学习模型或者海量数据集的情况下可能做自动超参数调优的时间代价和成本代价太大。因此在实际的 ML 项目中,用户很少对深度学习模型或者海量数据集做自动超参数调优;对于传统的机器学习模型并且在数据集不大的情况下,可以考虑用自动超参数调优来找到可能的最优解。

三、总结

本次的整体使用过程比较愉快,总的来说Amazon SageMaker的使用比较符合大众习惯,框架设计也很简洁,可读性好,类层次清晰,能够把使用者的关注点更集中在训练脚本本身。

而且,Amazon SageMaker针对当前机器学习应用瓶颈做了很多针对性的提升,比如大数据量的监督训练,Amazon SageMaker则采用完全托管的服务模式;训练时间及资源消耗上,Amazon SageMaker则是秉持工具善其事,必先利其器的理念,在训练之前的数据标记上提供了多种方式及算法,让标记数据的准确性大大提高,从而省去重复训练调参等时间;工程实现上,Amazon SageMaker在模型开发全流程上都提供了相应的功能帮助算法工程师们专注于业务和模型本身,提高开发效率。它是基于 container 的设计,相比于业界比较流行的Kubernetes来说,减少了软件依赖和复杂度。相信Amazon SageMaker的落地,将会为更多的企业插上翅膀,让机器学习无处不在,让创新迈入新的时代。

亚马逊最近也在开展相关的活动,给小伙伴们提供了云上探索实验室,大家通过云上探索实验室,可以学习实践云上技术,同时将自己的技术心得分享给其他小伙伴。

云上探索实验室出现的意义就是让广大开发者能够一同创造分享,互助启发,玩转云上技术。所以说,云上探索实验室不仅是体验的空间,更是分享的平台。如果有有兴趣快点击活动链接试试吧:点我访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43291.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息学奥赛一本通——2068:【例2.6】鸡兔同笼

大家好(๑╹◡╹)&#xff89;” 这里是小蒟蒻 一天没更新了呢&#xff01; 今天给大家带来《信息学奥赛一本通——2068&#xff1a;【例2.6】鸡兔同笼》 题目&#xff1a; 2068&#xff1a;【例2.6】鸡兔同笼 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 4215…

小学奥数-算法

设有一个n*m方格的棋盘&#xff08;1≤m,n≤100&#xff09;。 求出该棋盘中包含多少个正方形、多少个长方形&#xff08;不包括正方形&#xff09;。 例如&#xff1a; 当n2&#xff0c;m3时 正方形的个数有8个&#xff0c;即边长为1的正方形有6个&#xff0c;边长为2的正方…

中学信息奥赛course

文章目录 C1.STL顺序表的删除(vector, list)vectorlist {A} {B} (set)set 统计数字&#xff08;map&#xff09;map ACboy 再次需要你的帮助(stack, queue)容器适配器 栈的操作(stack)看病要排队(priority_queue)priority_queue 快速排序——中级(sort)三级排序(sort)排列(nex…

奥林匹克数学竞赛教练员汇编,最牛奥数资料全集!

全世界只有3.14 % 的人关注了 爆炸吧知识 1985年&#xff0c;由北京大学、南开大学、复旦大学和中国科技大学四所大学倡议&#xff0c;中国数学会决定&#xff0c;自1986年起每年一月份&#xff08;第29届起改为每年12月举行&#xff09;举行全国中学生数学冬令营&#xff0c;后…

2017小学奥数培训机构排名

随着小学奥数培训的不断升温&#xff0c;越来越多的小学奥数培训机构也如雨后春笋般的出现&#xff0c;面对市面上琳琅满目的小学奥数培训机构&#xff0c;如何选择好的小学奥数培训机构&#xff0c;成为很多家长的一道难题&#xff0c;为此小编特调查了目前排名前十的小学奥数…

小学奥数思维训练题(十)

有五个互不相等的非零自然数&#xff0c;最小的一个数是 7。如果其中一个减少 20&#xff0c;另外四个数都加 5&#xff0c;那么得到的仍然是这五个数。这五个数的和是 ______ 。来源&#xff1a;13届走美杯&#xff08;三年级初赛第12题&#xff09; 分析&#xff1a; 首先&a…

信奥中的数学学习资料汇总(2022.10.31)

信奥中的数学之入门组&#xff08;面向小学四年级至六年级以及初一学生) 信奥中的数学之入门组&#xff08;面向小学四年级至六年级以及初一学生)_dllglvzhenfeng的博客-CSDN博客 信奥中的数学学习&#xff1a;小学、初高中数学 视频集 信奥中的数学学习&#xff1a;小学、初高…

小学奥数平均数经典问题汇总

一、知识链接 1、平均数&#xff1a;把几个不相等的数&#xff0c;在总数不变的情况下&#xff0c;通过移多补少&#xff0c;使它们相等。 2、基本数量关系式&#xff1a;平均数总数量总分数 总数量平均数总分数 总分数总数量平均数 3、解题关键&#xff1a;找准问题与条件&…

应用:汤姆猫

今日笔者做了一个汤姆猫的小 demon&#xff0c;发现了其中不少的问题。因为也是初次做 UI&#xff0c;所以很多东西都懂得比较慢&#xff0c;也觉得知识点很多很碎。以下是笔者的一些代码截图&#xff0c;仅供参考。 有一个注意点&#xff1a;以下两图要说明的是 JPG 文件如果直…

汤姆猫小游戏

Java实现的一个汤姆猫小游戏 源代码下载 运行步骤&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190706175405550.png?x-oss-p rocessimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTM4NjQ2,size_16…

会说话的汤姆猫纪念徽章藏品上线,集齐赢实物盲盒!

还记得会说话的汤姆猫吗&#xff1f; 智能手机的第一代虚拟伙伴&#xff0c; 陪伴了无数人的成长&#xff0c; 至今依然不断为大家带来欢乐和笑声。 百度超级链限量推出会说话的汤姆猫家族纪念徽章免费藏品&#xff0c; 记录欢乐&#xff0c;珍藏勇气&#xff0c;探索智慧&…

一个不会说话的汤姆猫游戏源码

实现“会说话的汤姆猫” App 互动效果&#xff0c;除了不能发出声音&#xff0c;动画效果与原App十分类似。基本原理是&#xff0c;根据选择的不同动作&#xff0c;播放对应的图像序列。支持图片缓存。游戏项目&#xff1a;http://code.662p.com/view/7150.html详细说明&#x…

chatgpt赋能python:Python图片操作:灵活、高效的图像处理工具

Python图片操作&#xff1a;灵活、高效的图像处理工具 作为一门极具生产力的编程语言&#xff0c;Python不仅在数据分析、机器学习等领域担任着重要的角色&#xff0c;也是一款非常适合图像处理的语言。结合着Python丰富的生态系统和强大的图像处理库&#xff0c;Python具有灵…

DNN实战-猫狗分类

先把DNN中函数调用关系放在前面。 以下是正文 深层的神经网络来解决一个猫、狗的分类问题。这是一个典型的二分类问题。输入是一张图片&#xff0c;我们会把 3 通道的 RGB 图片拉伸为一维数据作为神经网络的输入层。神经网络的输出层包含一个神经元&#xff0c;经过 Softmax…

宠物电商社区APP的设计与实现

摘 要&#xff1a;为了设计并实现具有宠物产品商城和问答社区功能的APP&#xff0c;通过比较国内外宠物行业电商发展现状和国内已有的宠物电商平台的优缺点&#xff0c;分析可行性和需求&#xff0c;从而进行详细设计和实现。该APP后台采用SSM框架&#xff0c;数据库使用MySQL…

群体智能优化算法之猫群算法(Cat Swarm Optimization)

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 第十三章 猫群算法13.1 介绍13.2 搜寻模式&#xff08;Seeking Mode&#xff09;13.3 跟踪模式&#xff08;Tracing Mode&#xff09;13.4 猫群优化算法参考文献 第十三章 猫群算法 13.1 介绍 猫群优化…

吴恩达猫咪识别—深度神经网络构建笔记

如何构建神经网络 首先导入在此作业中需要的所有包初始化&#x1d43f;层神经网络参数。前向传播计算损失函数后向传播更新参数 导入在此作业中需要的所有包 import numpy as np //numpy是使用Python进行科学计算的主要包。 import h5py import matplotlib.pyplot as plt //m…

kaggle猫狗分类

本文介绍使用CNN卷积神经网络完成猫狗图像识别&#xff0c;数据集来源于kaggle&#xff1a;[猫狗分类数据集]。主要包括以下三部分&#xff1a; 数据创建与预处理神经网络模型搭建数据增强实现减小正则化 数据处理 数据集包含25000张图片&#xff0c;猫和狗各有12500张&…

CNN实现猫狗分类

一、实验原理 模型的输入数据是包含猫狗信息的RGB图像&#xff0c;将其输入到网络模型中&#xff0c;经过模型的前向计算得到输出的二分类结果&#xff0c;通过损失函数度量计算输出结果与输入图像标签的差异度&#xff0c;并通过反向传播算法根据这个差异来调整网络各层的参数…

猫舍内网靶场

文章目录 内网渗透我们首先先讲一下&#xff0c;如何去利用sql注入漏洞url编码就是16进制提权 下面是详细的提权过程最后讲一个工具猕猴桃mimikatz 内网渗透 我们首先先讲一下&#xff0c;如何去利用sql注入漏洞 先讲两个导出文件的函数 into dumpfile C:\\phpstudy\\WWW\\1…