Getting started with Amazon Sagemaker Studio AWS De
作者:禅与计算机程序设计艺术
1.简介
自1月27日起正式发布的Amazon SageMaker Studio现已成为一个全新的开发工具。本文基于最新版本SageMaker Studio为您提供了一套完整的开发入门指南。通过阅读本文内容,希望能够帮助读者更好地理解并掌握SageMakerStudio的核心功能,从而快速开展相关的机器学习开发工作。
2019年7月10日,Amazon SageMaker平台宣布推出Studio,这一创新性举措旨在提供一个交互式的机器学习工作区,以满足数据科学家、AI工程师、分析师以及决策者与商业用户的需求。该平台整合了多个核心功能模块:首先是一个交互式的机器学习工作区,其次是一个数据管理和处理界面,再则是一个模型训练与评估工具包,最后是部署模型到生产环境的一站式解决方案。
- SageMaker Notebook: 数据科学家可以在SageMaker Notebook环境中编写代码、运行笔记本、执行模型训练和开发等。
- SageMaker Experiments: 提供了管理ML生命周期和跟踪实验结果的能力,数据科学家、AI工程师、分析师和决策者都可以使用该功能进行试验的记录和分享。
- SageMaker Model Registry: 为数据科学家提供模型的注册、版本控制、搜索和发现能力,让他们轻松地找到、比较和使用过去训练的模型。
- SageMaker Pipelines: 通过管道自动化机器学习工作流,支持基于数据的机器学习生命周期,让数据科学家、AI工程师、分析师和决策者可以高效、可靠地处理复杂的任务。
- SageMaker Data Wrangler: 在浏览器中连接到S3桶或DynamoDB表,无需编写代码即可处理数据转换。
本文主要介绍的是SageMaker Studio Notebook组件的基础知识,包括如何打开Studio Notebook,编写代码,安装依赖库,配置环境变量,使用Git版本控制,以及运行可复现的ML管道。
2.基本概念
2.1.SageMaker Studio
SageMaker Studio是一个完全托管的开发环境,它集成了SageMaker Notebook、SageMaker AutoPilot、SageMaker Experiments、SageMaker Model Registry、SageMaker Pipelines和SageMaker Data Wrangler等多个Amazon SageMaker服务。它使用户可以完全访问Amazon SageMaker的所有组件,从而提供统一的ML工作区,解决了不同组件之间上下游依赖关系的复杂性,并提供了基于角色的访问权限控制和安全隔离机制。为了提升用户的生产力,SageMaker Studio还内置了许多开箱即用的扩展插件,如JupyterLab编辑器、Zeppelin笔记本、RStudio服务器、AutoGluonTabular、Sagemaker-Debugger等。SageMaker Studio支持Python、R语言及Julia语言,可以很好地满足各种场景下的ML开发需求。
2.2.SageMaker Notebook
SageMaker Notebook是一个基于Jupyter Notebook的云端notebook,其中包含了SageMaker Python SDK、SageMaker TensorFlow/Keras、PyTorch、MXNet等框架的内核,可以方便数据科学家、AI工程师、分析师、决策者和商业用户进行机器学习和深度学习实验。SageMaker Notebook中的代码可以运行在弹性计算资源实例上,也可以直接运行在本地计算机上。
2.3.SageMaker Experiments
SageMaker Experiments是SageMaker平台中的一个模块,可以用来管理ML生命周期和跟踪实验结果。通过SageMaker Experiments,数据科学家、AI工程师、分析师和决策者可以轻松地创建、组织、监控和共享实验,以便追踪、重现和分享研究成果。SageMaker Experiments提供了一个用于记录和组织实验信息的管理系统,并通过集成的TensorBoard日志、模型图形化视图和超参数优化的UI界面来简化实验过程,提高效率。
2.4.SageMaker Model Registry
SageMaker Model Registry是SageMaker的一个功能,可以用来存储、管理和部署模型。数据科学家、AI工程师、分析师和决策者可以通过模型注册中心存储模型,通过标签、描述和版本等元数据进行搜索、比较和部署模型。通过模型注册中心,可以实现模型的版本控制、持久化、搜索和发现,以及模型的安全保护。
2.5.SageMaker Pipelines
SageMaker Pipelines是SageMaker中的一个模块,可以用来定义、执行和监控机器学习(ML)工作流程。数据科学家、AI工程师、分析师和决策者可以利用SageMaker Pipelines来进行自动化的数据准备、模型训练、模型评估、模型部署等流程,从而加速模型开发过程。
2.6.SageMaker Data Wrangler
SageMaker Data Wrangler是SageMaker的一项数据预处理工具,可以将结构化、半结构化和非结构化数据源中的数据转换成经过特征工程的易用、结构良好且可解释的形式,然后将其加载到Amazon S3桶或者DynamoDB表中,供后续的机器学习任务使用。
3.核心算法原理与操作步骤以及数学公式
3.1.线性回归
线性回归(Linear Regression)是利用简单直线对一组自变量和因变量之间的关系建模的一种统计方法。线性回归的目标是在给定一些输入值时预测另一个输出值的一种函数。它可以用来预测一维或多维的连续型变量的值。
线性回归假设两种变量之间的关系是由输入变量的线性组合得到的,这种线性组合的斜率决定着因变量与输入变量之间的联系强弱,截距则表示变量的均值水平。具体的公式如下所示:
y = β0 + β1x₁ +… + βnxn
y: 因变量
x₁…xn: 自变量
β0…βn: 系数
β0:截距
拟合优度:MSE(最小二乘法)
算法步骤:
-
收集数据
-
整理数据
对收集的数据进行清洗和初步探索分析,并检查其中存在的缺失值、异常值以及极端值等问题;同时特别关注分类变量(标称型变量)的哑变量化处理。 -
数据预处理
标准化、归一化、正态化等预处理手段,消除量纲影响。
基于变量间的关联性来筛选出原始特征中的重要变量
-
模型构建
使用最小二乘法拟合线性回归方程,求得线性回归的各个系数。 -
模型评估
比较不同模型的拟合优度,选择最优模型。 -
模型部署
将模型部署到线上,提供线上服务。
3.2.Logistic回归
Logistic回归是一种分类算法,它可以用来预测某种变量取值为0或者1的事件发生的概率。与线性回归相比,Logistic回归具有更多的灵活性和复杂度,并且可以适用于分类变量具有数量级差异的问题。
Logistic回归通常用于预测一个二元变量的发生。它的模型形式为:
P(Y=1|X)=sigmoid(β0+β1X₁+…+βnxn)
sigmoid: 定义域为(0,1)的函数
Y: 样本变量
X: 自变量
β0…βn: 参数
拟合优度:对数似然函数
算法步骤: -
收集数据
-
整理数据
对数据进行清洗与初步分析。首先识别和处理缺失值、异常观测以及极端情况;特别关注分类变量的编码处理。 -
数据预处理
标准化、归一化、正态化等预处理手段,消除量纲影响。
基于变量间的关系,在特征选择的过程中,从原始特征中选出那些具有重要性的属性,并尽量减少冗余与噪声对结果的影响。
-
模型构建
对logistic回归建模,即假设P(Y=1|X)=sigmoid(β0+β1X₁+…+βnxn),求得β0…βn。 -
模型评估
利用已知样本,评价模型的性能。 -
模型部署
将模型部署到线上,提供线上服务。
3.3.k-近邻算法
k-近邻算法(kNN)是一种简单而有效的模式识别方法。它可以用来判断一个待测对象所属的类别,它根据一个给定的查询对象,确定与该对象的距离最近的k个训练样本的类别,然后把该对象赋予与众数相同的类别。
算法步骤: -
收集数据
-
整理数据
进行数据清洗与初步分析, 识别和处理缺失值、异常观测以及极端值的问题, 特别关注标称型变量的哑编码转换. -
数据预处理
标准化、归一化、正态化等预处理手段,消除量纲影响。
k值反映了领域规模的大小,在研究中合理设定一个恰当的k值会对研究结果产生直接影响。
-
最近邻判定
判断待分类对象与训练样本的距离,判断是否为邻居。 -
结果展示
分析训练集中的各类别分布情况,并呈现分类结果。
3.4. 决策树
决策树是一种用于数据分类与预测的分层结构模型。该模型通过持续细分数据集构建分类系统,在每一次细分时,算法会根据最优指标选择最合适的特征进行分割。
构建决策树的一般流程: -
选择最优特征作为当前节点的分割标准。
-
根据选定特征将数据集划分为若干子集。
-
递归地对每个子集构造新的内部节点直至满足停止条件。
-
最终形成叶子节点代表特定类别标签。
-
获取数据
-
数据预处理
清洗数据,删除缺失值、异常值等。 -
属性选择
选择一个最优划分属性。 -
训练子树
根据选定的划分属性对数据集进行切分,递归地构造子树。 -
子树合并
将子树按照一定策略融合起来,生成整棵树。 -
评估分类性能
通过使用测试数据集对模型进行评估以确定其分类能力。
3.5. 随机森林方法
随机森林方法依赖于多棵决策树的集成以实现分类目标。
该方法通过减少各决策树间的高度相关性来降低模型复杂度,并防止过拟合现象的发生。
随机森林算法:
...
-
获取数据
-
数据预处理
删除异常值、标准化数据、编码数据等。 -
生成决策树
每棵树都独立生成。 -
合并决策树
所有树的预测结果进行投票,得到最终结果。
4.具体代码示例及其解释说明
4.1.SageMaker Python SDK
SageMaker Python SDK可以用来向SageMaker提交训练作业、部署模型、运行SageMaker Pipeline等。在这里,我们只会介绍如何使用SageMaker Python SDK来运行SageMaker Notebook。首先需要安装SageMaker Python SDK:
pip install sagemaker
下面是一个例子,展示如何创建一个SageMaker Notebook并运行代码:
import sagemaker
# 创建Notebook实例
notebook_instance = sagemaker.Session().create_notebook_instance(
instance_type='ml.t2.medium',
role='arn:aws:iam::xxxxxxxxxxxx:role/SagemakerRole'
)
# 等待Notebook启动
status = notebook_instance.wait_for_status('InService')
if status!= 'InService':
raise ValueError(f"Failed to start notebook instance: {status}")
# 获取Notebook URL
url = f"{notebook_instance.url}?token={notebook_instance.sagemaker_client.get_auth_token()}"
print("Open the following URL in your browser to access the Jupyter interface:")
print(url)
代码解读
该示例生成了一个名为ml.t2.medium的Notebook实例,并提取了其URL。随后,请您利用浏览器访问该URL以进入对应的Jupyter Notebook界面进行代码编写与运行。
安装依赖库
SageMaker Notebook提供了一个方便使用的预装Jupyter Notebook编辑器。它使得安装和使用Python依赖库变得简便。例如,在需要调用pandas库进行数据分析时,请通过以下代码直接加载:
!pip install pandas
随后可以在Jupyter Notebook环境中导入所需模块并执行相关操作。
配置环境变量
由于该Notebook服务运行在AWS提供的虚拟机环境中,并且所有配置操作均通过特定的环境变量完成。然而,SageMaker提供了详细的环境变量清单以便我们迅速获取所需的所有环境变量信息。如果需要获取某个特定环境变量的具体值,则可以执行相应的命令以查看其具体设置或返回的结果信息。
print(os.environ['变量名'])
代码解读
例如,在执行以下操作时即可获取当前活跃的Jupyter Notebook实例名称:
print(os.environ['JUPYTER_INSTANCE_NAME'])
代码解读
通过这种方式可以看到正在运行的Jupyter Notebook实例的名字。不过你可以自行配置环境变量。
import os
os.environ['MY_VARIABLE'] = "Hello World!"
print(os.environ['MY_VARIABLE'])
代码解读
这样就设置了名为MY_VARIABLE的环境变量,并打印出来了。
使用Git版本控制
集成了一个Git客户端的SageMaker Notebook不仅提供了版本控制功能还能够通过Git版本控制实现对Notebook文件的保存与复现。然而由于Notebook文件永久地存储在SageMaker Notebook实例内部因此其实际效果并不显著。
