近日,亚马逊云科技在 re:Invent 2023 会议现场发布了 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 的五项新功能,旨在加速构建、训练和部署大型[语言模型](https://so.csdn.net/so/search?q=%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B&spm=1001.2101.3001.7020?trk=cndc-detail)和其他基础模型。这些新功能将帮助用户更快地进行模型开发和应用部署,提供更强大的工具和资源。本篇文章将为大家介绍 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 的工作原理,以及实战使用 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 提供的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)环境。
### Amazon SageMaker 原理
在[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)中,我们需要训练计算机进行预测或推理。首先,需要使用算法和示例数据来训练模型。然后,将模型集成到应用程序中,以实时、大规模地生成推理。在生产环境中,模型通常会从数百万个示例数据项中学习,并在数百到不到 20 毫秒的时间内生成推论。
下图说明了创建[机器学习模型](https://so.csdn.net/so/search?q=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B&spm=1001.2101.3001.7020?trk=cndc-detail)的典型工作流程:
![1.png](https://dev-media.amazoncloud.cn/985b5b68bdf3400b87bf20a77f823775_1.png "1.png")
#### 生成示例数据
要训练模型,需要示例数据。需要的数据类型取决于你希望模型解决的业务问题。例如,假设你想要创建一个模型来预测给定手写数字输入图像的数字。要训练这样的模型,需要手写数字的示例图像。
#### 获取数据
通常,你可以将一个或多个数据集拉入单个存储库。
#### 清理数据
为了改进模型训练,请检查数据并根据需要清理数据。
#### 准备或转换数据
为了提高性能,可以执行其他数据转换。例如,可以选择组合属性等等。
#### 训练模型
要训练模型,需要算法或预训练的基础模型。您选择的算法取决于许多因素。对于快速、开箱即用的解决方案,也可以使用 SageMaker 提供的算法之一。
训练模型后,可以对其进行评估以确定推论的准确性是否可以接受。可以使用 SageMaker Python SDK 通过可用的 IDE 之一向模型发送推理请求,以训练和评估你的模型。
#### 部署模型
传统上,需要重新设计模型,然后再将其与应用程序集成并部署。借助 SageMaker 托管服务,可以独立部署模型,将其与应用程序代码解耦。
了解了基本原理,下面我们就在实际操作中了解这个功能的强大之处吧。
### 实战机器学习
下面是 SageMaker 提供的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)环境。
![2.png](https://dev-media.amazoncloud.cn/fe5b45bfadfd4d989c15609d573e257a_2.png "2.png")
其中有 11 中环境,下面我们选择其中的一个进行实战使用。选择 SageMaker Studio 实验室组件。
![3.png](https://dev-media.amazoncloud.cn/f9c3b7aecd514e6b86a1790ea325e875_3.png "3.png")
#### 注册账号
可以注册免费账号,注册也不麻烦只需要填一个邮箱就可以。
![4.png](https://dev-media.amazoncloud.cn/e0f075cb40be438a939b0071b0d6af46_4.png "4.png")
填写之后,到邮箱中验证账号
![5.png](https://dev-media.amazoncloud.cn/34d591451ac442019565b34ed6b9c712_5.png "5.png")
#### Studio Lab 项目
登陆成功之后,可以看到 Studio Lab 用户界面中的项目描述。如下图
![6.png](https://dev-media.amazoncloud.cn/b2a1729f51bf49498d08b9fbbe8934ba_6.png "6.png")
项目中包含了所有文件和文件夹,包括 Jupyter 笔记本。可以完全控制项目中的文件。项目中还包含了基于 JupyterLab 的用户界面。从此界面中,可以与 Jupyter 笔记本进行交互、编辑源代码文件、与 GitHub 集成以及连接到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)。
#### 项目预览
打开文件浏览器并显示 Studio Lab 启动器的 Studio Lab 项目。如下图:
![7.png](https://dev-media.amazoncloud.cn/5c423d67157b409b88f32e02e265d72f_7.png "7.png")
#### 查看环境
要在 Studio Lab 中查看环境,你可以使用终端或 Jupyter 笔记本电脑。以下命令将适用于 Studio Lab 终端。
打开文件浏览器面板打开 Studio Lab 终端,选择文件浏览器顶部菜单上的加号 (+) 以打开启动器,然后选择终端。在 Studio Lab 终端上,通过运行以下命令列出 conda 环境。
```
conda env list
```
此命令输出 conda 环境的列表及其在文件系统中的位置。当你加入 Studio Lab 时,你会自动激活 studiolab conda 环境。以下是列出的环境的示例。
```
# conda environments: #
default /home/studio-lab-user/.conda/envs/default
studiolab * /home/studio-lab-user/.conda/envs/studiolab
studiolab-safemode /opt/amazon/sagemaker/safemode-home/.conda/envs/studiolab-safemode
base /opt/conda
```
#### 核心代码
在项目中的实验室实例中新增一条状态为 Pending 的数据,稍等一会儿,状态会自动变为 InService ,此时改实例为可使用状态。核心代码如下:
```
import sagemaker
sess = 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/')
```
#### 计算实例类型
[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio Lab 项目运行时基于 [EC2](https://aws.amazon.com/cn/ec2/?trk=cndc-detail) 实例。如果计算实例的可用性无法得到保证,需要额外的存储或计算资源,考虑切换到 Studio。
#### CPU 和 GPU
[Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) Studio Lab 提供 CPU 和 GPU 选择。
#### CPU
其中 CPU 目的是为了高效处理各种任务,但是它可以同时运行的任务数量受到限制。对于[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail),建议使用 CPU 来执行计算密集型算法,例如时间序列、预测和表格数据。
CPU 计算类型一次最多可运行 4 小时,24 小时内最多可运行 8 小时。
#### GPU
GPU 目的是为了同时渲染高分辨率图像和视频。建议使用 GPU 来执行深度学习任务,尤其是 Transformer 和计算机视觉。
GPU 计算类型一次最多 4 小时,24 小时内限制为 4 小时。
SageMaker 提供了 11 种[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)环境,其中选择了 SageMaker Studio 实验室组件进行实战。读者可以通过注册免费账号,验证后即可登录并体验 Studio Lab 项目。
### 总结
本文介绍了 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 的工作原理和实战使用[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)环境。[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的基本工作流程包括生成示例数据、训练模型和部署模型。
Peter DeSantis 的演讲展示了亚马逊云科技在云计算领域持续创新的决心。Serverless 不仅是技术的突破,更是满足企业需求的全新范式。这些创新产品和服务将为开发者和企业带来更大的灵活性、效率和成本效益,为云计算的未来开辟了崭新的道路。