| 作者: CSDN 博主 Leona na | |
| --- | --- |
![1.png](https://dev-media.amazoncloud.cn/19fdd4b6ff254f399955c2189a4ca29a_1.png "1.png")
# 基于 Amazon SageMaker 构建细粒度情感分析应用【附部署视频】
> [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 是亚马逊云计算(Amazon Web Service)的一项完全托管的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)平台服务,算法工程师和数据科学家可以基于此平台快速构建、训练和部署[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail) (ML) 模型,而无需关注底层资源的管理和运维工作。它作为一个工具集,提供了用于[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)的端到端的所有组件,包括数据标记、数据处理、算法设计、模型训练、训练调试、超参调优、模型部署、模型监控等,使得[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)变得更
## 基于 Amazon SageMaker 构建细粒度情感分析应用
基于 [Amazon SageMaker](https://aws.amazon.com/cn/sagemaker/?trk=cndc-detail) 构建细粒度情感分析应用
## [](https://devpress.csdn.net/aws-c/644646adb4541e244e4f9681.html)一、创建 Sagemaker Notebook 实例
输入名称、选择实例类型、配置磁盘大小,具体如下图
![2.png](https://dev-media.amazoncloud.cn/d4b0fc64285f4597a1099db492825d2c_2.png "2.png")
创建角色
![3.png](https://dev-media.amazoncloud.cn/b9c8c2205704432bac51692fa412c8cb_3.png "3.png")
创建实例
![4.png](https://dev-media.amazoncloud.cn/e882d771ea0b4c71acf04367a9bd4e6c_4.png "4.png")
打开 jupyter
![5.png](https://dev-media.amazoncloud.cn/0a5e497a55ac4654868a8c8cb87f72b3_5.png "5.png")
打开 terminal 终端
![6.png](https://dev-media.amazoncloud.cn/ba87e29224714d0ab6c0b9302f3e64ca_6.png "6.png")
## 二、下载 GAS-SageMaker 数据
```
cd ~/SageMaker
git clone https://github.com/HaoranLv/GAS-SageMaker.git
```
在 Jupyter Notebook 中打开 gabsa.ipynb 逐行运行。
![7.png](https://dev-media.amazoncloud.cn/d4f06bbb03064d4b9e30fff0892b9a10_7.png "7.png")
注意事项参考这位博主: [th0ma](https://blog.csdn.net/weixin\\_41466565?type=blog\\&login=from_csdn?trk=cndc-detail)\
博主原文链接在这里:[亚马逊云科技【云上探索实验室】使用 Amazon SageMaker 构建机器学习应用、构建细粒度情感分析应用、基于 Stable Diffusion 模型,快速搭建你的第一个 AIGC 应用](https://blog.csdn.net/weixin\\_41466565/article/details/129782175?spm=1001.2014.3001.5502\\&login=from_csdn?trk=cndc-detail)\
注意:这里使用我的代码可以正确部署。\
引入依赖并进行权限配置
```
import sagemaker as sage
from time import gmtime, strftime
from sagemaker import get_execution_role
from sagemaker.pytorch import PyTorch
```
执行代码图片补充:
![8.png](https://dev-media.amazoncloud.cn/ee9fe2afa8784e1383f7127c4f3a02fb_8.png "8.png")
将处理好的数据上传到 S3
```
WORK_DIRECTORY = "./data"
# S3 prefix
prefix = "demo"
sess = sage.Session()
role = sage.get_execution_role()
data_location = sess.upload_data(WORK_DIRECTORY, key_prefix=prefix)
```
执行代码图片补充:
![9.png](https://dev-media.amazoncloud.cn/00cd1db2688f4266b65db0cff602310a_9.png "9.png")
定义超参数,实验使用 Huggingface hub 公开的 T5-base 预训练参数进行初始化\
**这里把 “num_train_epochs”:“30” ,修改为 2 ,加快训练时间防止额外扣费**
```
hyperparameters = {
"task" : "tasd",
"dataset" : "rest15",
"model_name_or_path" : "t5-base",
"paradigm": "extraction",
"eval_batch_size" :"16",
"train_batch_size" :"2",
"learning_rate" :"3e-4",
"num_train_epochs":"2",
"n_gpu": "1"
}
```
执行代码图片补充:
![10.png](https://dev-media.amazoncloud.cn/bdc72853ec5c41b5ab7a2d3132da56ac_10.png "10.png")
实例化 estimator,由于代码使用 Pytorch 框架,故这里直接使用 SageMaker 预置的 Pytorch 容器
```
entry_point = 'finetune.py'
source_dir = './'
git_config = None
framework_version = '1.7.1'
py_version='py36'
instance_type='ml.p3.2xlarge'
instance_count=1
estimator = PyTorch(
entry_point = entry_point,
source_dir = source_dir,
git_config = git_config,
role = role,
debugger_hook_config=False,
hyperparameters = hyperparameters,
framework_version = framework_version,
py_version = py_version,
instance_type = instance_type,
instance_count = instance_count
)
```
执行代码图片补充:
![11.png](https://dev-media.amazoncloud.cn/57f088a5d23d4dd9a8e5eb8ce04b3395_11.png "11.png")
启动模型训练
```
inputs = {'tasd': data_location+'/tasd/'}
response = estimator.fit(inputs)
```
执行代码图片补充:
![12.png](https://dev-media.amazoncloud.cn/0a57bbb0c66d4f1db55c26f95c547838_12.png "12.png")
可以在 S3 存储桶找到训练的模型,点击复制 S3 URL
![13.png](https://dev-media.amazoncloud.cn/2123007e60b84179b38827c84e09552f_13.png "13.png")
**完成训练后,把下面代码中的 s3://sagemaker-ap-southeast-1-116572824542/pytorch-training-2022-05-28-10-05-39-029/output/model.tar.gz 替换为刚刚复制的 S3 中的存储桶地址**
```
import sagemaker
instance_type = 'ml.m5.4xlarge'
role = sagemaker.get_execution_role()
from sagemaker.pytorch.model import PyTorchModel
pytorch_model = PyTorchModel(model_data='s3://sagemaker-ap-southeast-1-116572824542/pytorch-training-2022-05-28-10-05-39-029/output/model.tar.gz',
role=role,
entry_point='inference.py',
source_dir='./',
framework_version='1.7.1',
py_version='py36'
) # TODO set model_server_workers=1 to avoid torchhub bug
```
开始训练
```
predictor = pytorch_model.deploy(instance_type=instance_type, initial_instance_count=1
```
执行代码图片补充:
![14.png](https://dev-media.amazoncloud.cn/e788d4d979fc48338f4491c04ca0935d_14.png "14.png")
这时可以查看终端节点-可以看到端点
![15.png](https://dev-media.amazoncloud.cn/648702c39c794184b7fb850f8202de0b_15.png "15.png")
点击名称,可以看到监控状态
![16.png](https://dev-media.amazoncloud.cn/16365b1af8534bfdb3e8012b4648b207_16.png "16.png")