几分钟体验:用AWSSagemaker训练一个AI模型
AWS有很多免费的服务,常用的EC2,S3,RDS等都支持一年的限量免费服务,Sagemaker也有免费体验的服务。Sagemaker是AWS的机器学习训练平台,托管了JupyterNotebook,内置了许多常用的机器学习算法。
在开始之前先了解下SageMaker的免费套餐:
为期两个月,每个月250个小时,想免费体验的话,建议在每个月21号开一个实例,然后下个月十号及时关掉就好,这样前后大约20天时间的体验时间。
现在动手来体验一下吧,我们创建一个实例。
Sagemaker的实例配置还是比较高的,免费体验版需要选择t2.medium(只有这个实例是免费的),可能是配置比较高,所以,免费套餐的时间才比较短吧,EC2的免费套餐是t2.micro,每个月750小时的体验时间,一年内可以一直开着。
起个名字,然后创建一个IAMrole,选择VPC和subnet,别的选项可以忽略。
点击创建实例。
Pending……得等等。
选中我们的Jupyter然后Open就可以重定向到Jupyter里了。
如图,这就是Sagemaker提供的JupyterNotebook。
这张图是本地的JupyterNotebook。
外观差别不大,但是Sagemaker提供的选项更丰富,conda标签是anaconda的包管理页,SageMaker Examples是AWS提供的在线样例。
新建按钮的文件类型更多,能创建Spark,tensorflow以及pytorch的项目文件,这在Jupyter里的概念叫kernal,添加一个Kernal就能新增加一种可创建的文件类型,还是挺强大的,不用用户自己及决配置依赖的问题了,环境还是很强大的。
新建个Python3的文件吧。
然后再创建一个Tensorflow的文件,将Tensorflow官网上案例代码放进去做一个简单的模型训练。
Epoch5,最后训练出的精度为98.3%,还不错。
简单用一下Tensorflow的话,也看不出有什么优势,因为本地也可以进行这些操作,不过下载数据集的时候速度慢了点。
因为数据太简单,所以根本看不出有什么区别。最后训练出的精度也是98%,与前者相差无几。而且,可能是因为是美国维吉尼亚的区,所以对中文的支持有点差。
AWS有很多很棒的产品,但Sagemaker本身的创新并不太多,有很多功能就是原来的IpythonNotebook的功能,而且本身是需要付费的,对于一般用户来说,正常使用还是有点贵的,如果要有大量的训练需求的话,当然就非常有用了,本地的计算能力跟云端t2,medium的差别不是一点半点的。
类似的,谷歌有一个叫Colaboratory的工具,其实也与JupyterNotebook相差无几,而且后者是免费的。
我们再试试用SageMaker内置的算法来试试,用kmeans来做一个简单的分类吧。以下简单看一下怎么用Sagemaker做训练,这部分会看到云端搞机器学习的优势。
用Sagemaker上的kmeans训练个模型
注意:我们来看看这个代码,不感兴趣的朋友可忽略,你也可以一路按shift+enter也能训练出模型。
代码略读:
首先,这里是一些准备工作。
获取执行权限,还有创建一个s3bucket来存放这些训练数据。(AWS提供免费5G s3空间的用户注意节约使用)。
训练用的是Minist数据集,7万张28x28像素的小图片,图片上是手写的0-9数字。下一步是数据获取,数据处理之类的操作,Sagemaker很快就完成了。
导入的数据被分成三大类,一类是训练数据,一类是验证数据,还有一类是测试数据。
数据导入成功,然后下一步,看看数据的构成,看看图片长什么样子。
以上的环节就通常说的机器学习数据处理的工作,因为这个数据本身就很规范,所以,我们技术啥也没做,因为是聚类分类算法,所以也不需要打标签。
然后就可以进入下一步,进行训练了。
上图可见,AWS的Sagemake实现了自己的kmeas,在这一操作步骤中,构建了kmeans的基本框架,创建了两个用于训练的实例,用的居然还是8xlarge的实例,设置了输入数据和数据数据的路径,k值设为10,k值非常关键,意思是说把训练出的模型分成10个簇,所有数据都在十个簇之间。
调用kmeans的.fit函数进行训练,这个.fit方法应该也是sagemaker自己定义的,训练完成的模型也上传了,把原本就简单的kmens算法用的更简单了。
Sagemaker的控制台里,一项训练任务花了三分钟。
点进去可以看到许多配置的信息。
Sagemaker的控制台里,能看到刚才训练得到的模型。
下一步。把训练出来的模型部署在m4.xlarge实例上,耗时五分钟。一会儿用8xlarge,一会儿m4.xlarge,所以,这个东西免费体验二十天也是有情可原的。
下一步,把一个数据带入到模型里,看下这个数据距离哪个簇最近,看看离这个最近的簇的距离是多少。
图片中的这两步大概做了这样一件事,找出100个验证(validate)数据,分成0-9,10个分类,10个簇,相似的是一个簇,如果一个簇里的数字是一样的话,那就证明识别的还不错。
网上随便找的一张Kmeans的分类示意图,一簇一颜色,算一个分类
来看下模型识别的精准度吧。
咱们刚刚训练出来的模型怎么样?还行吧。
以上就是此次体验的SageMaker。
最后别忘了把你开启的训练实例删除掉,要不然,花的可是你的真金白银。
感受:
与本地的平台相比(笔者是用Anaconda无脑包打造的本地环境),内置的算法挺方便的,配置省去了很大麻烦,不过,因为替换成sagemaker的API,所以需要机器学习开发者花点时间熟悉一下,方便也不方便。另外,模型管理,算法管理都展示的比较清楚还是挺强大的。
更主要的是,用户可以自由配置计算的实例,如果觉得时间比较长的话可以换成比较高的配置,可以把计算复杂扩展到多台计算实例上,这个是单机完全不能比的。
AWS近日发布了几款用于在云平台上训练和部署生成式AI的新工具,将业务范围进一步扩展到AI软件开发领域。
AWS在AWS Machine Learning博客上发表了一篇文章,详细介绍了这些新产品,这些模型是大规模的、预训练的语言模型,为有针对性的自然语言处理任务奠定了基础。基础模型通常使用深度学习技术对大量文本数据进行训练,使其能够学习理解人类语言,生成文本。
使用预训练的基础模型,可以为开发人员节省大量的时间和资源,举例来说,OpenAI的Generative Pre-trained Transformer(GPT),就可用于文本生成、情感分析和语言翻译。
多种大型语言模型选项
Bedrock这项新服务可以通过应用界面提供各种来源的基础模型,包括来自AI21 Labs的Jurassic-2多语言大型语言模型,可以生成西班牙语、法语、德语、葡萄牙语、意大利语和荷兰语的文本;以及Anthropic PBC的Claude LLM,是基于用于训练原则的、负责任AI系统的对话式处理任务和文本处理任务。用户还可以使用API访问Stability AI以及Amazon LLM。
AWS数据库、分析和机器学习副总裁Swami Sivasubramanian这样写道,基础模型是在互联网规模上进行预训练的,因此用相对较少的额外训练就可以进行定制。他举了一个时装零售商内容营销经理的例子,该经理可以向Bedrock中输入少至20个来自过去营销活动、相关产品描述的优秀标语示例,Bedrock就可以自动开始为新款手袋产品生成有效的社交媒体内容、展示性广告以及网络文案。
除了Bedrock之外,AWS还推出了两种新的Titan大型语言模型。第一种是生成式大型语言模型,用于摘要、文本生成、分类、开放式问答和信息提取;第二种大型语言模型,是用于输入文本并转换为包含文本语义的数字表示,有助于产生不仅限于单词匹配的上下文响应。
值得注意的是,这次公告中没有提及OpenAI(微软是其主要投资方),但考虑到市场对大型语言模型的需求,这应该不会成为Amazon面临的一个障碍。
Gartner知名分析师、研究员Rajesh Kandaswamy表示:人们急于创造很多技术,在这个阶段,你看到的几乎所有技术都有来自多家创新公司的多种选择。
在推出自己的大型语言模型方面,AWS落后于微软和谷歌,但是这并不会成为一个竞争障碍,Kandaswamy表示,我认为没有人落后到必须追赶的程度,看起来市场中正在进行一场大型比赛,但和我们交谈的客户,除了非常早期的采用者之外,都不知道该如何做。