这是本系列文章的第三篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章,大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。
那么让我们开始今天的内容吧!
介绍
什么是 AWS SageMaker?
- Amazon SageMaker 是一项全托管的机器学习 (ML) 服务。
- SageMaker 帮助数据科学家和开发人员快速、轻松地构建和训练机器学习模型。
- 它还提供了将这些模型直接部署到生产就绪的托管环境中的机制。
- 为了避免管理服务器,它集成了 Jupyter 编写笔记本实例,便于访问数据源进行分析。
- 此外,它提供了针对分布式环境和超大数据集优化的基础机器学习算法。
- SageMaker 还提供灵活的分布式训练选项,可根据您的具体工作流进行调整。
- 训练和托管按使用时间按分钟计费。
- 没有最低费用,也无需预先承诺。
架构图
动手实践
创建一个公共 S3 存储桶
首先,在 AWS 控制台顶部点击 Services(服务),然后在 Storage(存储)部分中选择 S3,或直接搜索 S3 进行访问。
点击创建存储桶并进行以下设置:
-
存储桶名称:输入
tests3bucket-whizlabs
(注意:S3 存储桶的名称在全球范围内必须唯一,确保选择一个可用的名称。) -
AWS 区域:选择 “US East (N. Virginia)” 即
us-east-1
区域。 -
对象所有权:将其设置为“启用 ACL”,并保持对象所有权的默认选项。
4.公共访问权限设置:取消勾选“阻止所有公共访问”。
5.其他设置保持默认。
6.然后点击“创建存储桶”。
下载对象文件并将 .csv
文件上传至 S3 存储桶
点击你的存储桶名称。
进入“对象”选项卡。
下载文件:点击下载 CSV 文件,将其下载到本地计算机。
将文件重命名为 day.csv
,并将其上传到 S3 存储桶。
上传文件至 S3 存储桶的步骤如下:
- 点击“上传”按钮。
- 点击“添加文件”。
- 浏览并选择你本地的图片或我们提供的图片文件。
- 点击“上传”按钮。
你可以在屏幕顶部的传输面板中查看上传进度。
上传完成后,文件会显示在存储桶中。
编辑存储桶策略
- 在 S3 控制台中,选择你的存储桶。
- 点击“权限”选项卡。
- 向下滚动找到“存储桶策略”部分,然后点击“编辑策略”按钮。
- 输入或修改存储桶策略,以满足你的访问需求。
{
"Version": "2012-10-17",
"Id": "Policy1673362354378",
"Statement": [
{
"Sid": "Stmt1673362352955",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "<YOUR_BUCKET_ARN>/*"
}
]
}
注意:将“<YOUR_BUCKET_ARN>
”替换为你的存储桶 ARN,并确保不要删除 /*
。
完成后,点击“保存更改”。
使用 ACL 将对象设置为公开
- 进入你的存储桶。
- 在“对象”部分,选择已上传的 CSV 文件。
- 点击“操作”,然后选择“通过 ACL 公开”。
- 点击“公开”按钮。
创建 SageMaker 笔记本实例
确保你所在的区域是 US East (N. Virginia) us-east-1
。
按照以下步骤操作:
- 在 AWS 控制台顶部点击 Services(服务),然后在 Machine Learning(机器学习) 部分点击 SageMaker。
- 在左侧菜单中点击 Notebook(笔记本),然后选择 Notebook instances(笔记本实例)。
- 要创建一个新的笔记本实例,点击 Create Notebook Instance(创建笔记本实例)。
- 名称:输入
LabML
。 - Notebook instance type(笔记本实例类型):选择
ml.t2.medium
。 - 权限与加密:
- IAM role(IAM 角色):选择 Create a new role(创建新角色),在弹出窗口中点击 Create role(创建角色) 按钮。
- 完成设置后,点击 Create Notebook Instance(创建笔记本实例)。
等待实例创建完成后,即可开始使用。
打开笔记本实例中的 Jupyter
- 导航到 AWS SageMaker,然后从左侧菜单中点击 Notebook,选择 Notebook instances(笔记本实例)。
- 在这里你可以看到已经创建的笔记本实例。
- 等待状态变为 InService(服务中)。
- 然后点击 “Open Jupyter”(打开 Jupyter)。
上传 Python 文件
- 打开 Jupyter:进入你创建的 SageMaker 笔记本实例,并点击 “Open Jupyter”。
- 下载 Python 文件:点击下载文件链接,获取需要上传的 Python 文件,文件名为
49-LinearLearnerModel
。 - 上传文件:在 Jupyter 界面中,点击右上角的 “Upload” 按钮,选择刚下载的 Python 文件并上传。
- 创建新笔记本:
- 点击 “New” 按钮。
- 选择 “Conda_python3” 环境。
运行代码
-
在第一个单元格中输入代码:进入 Jupyter 笔记本,在第一个单元格中输入第一块代码。
-
点击“Run”:点击上方的 “Run” 按钮运行代码。
- 如果单元格内显示星号
(*)
,表示代码正在执行。 - 执行完成后,星号将被一个数字取代,表明代码运行结束。
- 如果单元格内显示星号
-
在第二个单元格中输入代码:同样,将第二块代码输入到下一个单元格,并运行它。
- 在该代码块中,替换存储桶名称和对象键,将其替换为你自己的 S3 存储桶名称和对象名称。
-
运行第三块代码:继续将第三块代码输入到相应单元格中并运行。
-
按顺序单独运行每个单元格:依次点击每个代码单元格,并逐一运行它们,确保代码按照正确的顺序执行。
训练和部署模型
-
训练模型:在 Jupyter 笔记本中,输入以下代码片段来训练模型(该步骤可能需要 5-10 分钟):
- 运行训练代码片段并等待模型训练完成。
-
部署模型:在模型成功训练后,运行下一个代码片段以部署模型并检查端点的生成情况。
-
检查端点:
- 在 SageMaker 控制台左侧菜单中,向下滚动并点击 “Inference(推理)”,然后点击 “Endpoints(端点)”。
- 你将看到生成的端点,等待其状态变为 InService(服务中)。
完成这些步骤后,模型便可以通过生成的端点进行调用。
使用测试数据进行预测
-
下载 Python 文件:点击下载 Python 文件,将其下载到本地,并将文件重命名为
client.py
。 -
在 VS Code 中配置 AWS CLI:
- 打开 VS Code,进入终端。
- 输入以下命令配置 AWS CLI:
- 提供你的 AWS Access Key、Secret Key 和区域名称。
-
运行
client.py
文件:- 在代码编辑器中,运行
client.py
文件。 - 确保你更改了 Python 文件名称,以匹配下载的 Python 文件名称。
cd downloads py client_31_20.py
- 在代码编辑器中,运行
-
查看输出:运行完成后,输出结果将展示预测值与实际数据之间的对比。
这将帮助你评估模型的预测性能。
总结
本次翻译内容涉及如何在 AWS 环境中使用 SageMaker、S3 和 Jupyter 笔记本实例,具体步骤包括:
- 创建公共 S3 存储桶,并上传 CSV 文件。
- 编辑存储桶策略以设置适当的访问权限。
- 在 SageMaker 中创建和配置笔记本实例,并通过 Jupyter 笔记本上传并运行 Python 代码。
- 通过运行代码来训练模型,生成预测端点,并验证模型是否成功部署。
- 最后,通过配置 AWS CLI 并在本地运行 Python 脚本,使用测试数据进行预测并查看模型结果。
这些内容展示了如何使用 SageMaker 完成从数据上传、模型训练、到部署和预测的整个流程。所有这些步骤都可以在 Whizlabs 平台上进行动手实践。Whizlabs 提供了涵盖 AWS 的实验环境,用户可以通过真实场景练习 AWS 服务的使用,从而提高对云计算和机器学习的理解与技能。