关于机器学习:基于-Amazon-SageMaker-构建细粒度情感分析应用

5次阅读

共计 5401 个字符,预计需要花费 14 分钟才能阅读完成。

背景介绍

细粒度情感剖析(Aspect-Based Sentiment Analysis,ABSA)因为其广大的业务价值而吸引越来越多的从业者投身其中,通过剖析客户评论数据中的情感偏好往往有利于企业探寻客户关注点,开掘客户需要,减速产品迭代,进步营销效率,欠缺售后服务等。毫不夸大地说,发掘出客户的声音(voice of customer)就抢占了企业倒退的先机。

Voice of Customer (VOC) 是近年来各行业都在关注的概念,而亚马逊作为寰球最重视“以客户为核心”理念的企业早在 2018 年就推出了“买家之声”(VOC)板块,助力买卖双方互利共赢。Amazon 始终致力于“以客户为核心”的技术创新,针对 VOC 场景,咱们针对不同行业客户的理论业务需要进行了宽泛的技术实际,并且最终基于自然语言生成(NLG)技术联合 Amazon SageMaker 搭建了一套高效的、可定制的、细粒度的生成式评论剖析计划,以提取评论中不同方面(Aspect)的情感极性并且以其中的观点词(Opinion)为佐证。

举个例子:“明天的沙拉很好吃然而牛排不陈腐”,这里同时存在两个情感极性,对于正向情感(positive),其方面词是“沙拉”,对应的观点词为“很好吃”;对于负向情感(negative),其方面词是“牛排”,对应的观点词为“不陈腐”。在这样的场景下,咱们通过 AI 把用户留言进行了更高维度的常识提取(方面词,方面词类别,观点词,情感极性),这些高维常识使得客户能够更精准地对(几千倍几万倍的机器标签)用户进行分类,从而在广告投放、行为诱导、客户服务和产品升级方面有更优化的办法。

Amazon SageMaker 是亚马逊云计算(Amazon Web Service)的一项齐全托管的机器学习平台服务,算法工程师和数据科学家能够基于此平台疾速构建、训练和部署机器学习 (ML) 模型,而无需关注底层资源的治理和运维工作。它作为一个工具集,提供了用于机器学习的端到端的所有组件,包含数据标记、数据处理、算法设计、模型训练、训练调试、超参调优、模型部署、模型监控等,使得机器学习变得更为简略和轻松;同时,它依靠于 Amazon 弱小的底层资源,提供了高性能 CPU、GPU、弹性推理加速卡等丰盛的计算资源和短缺的算力,使得模型研发和部署更为轻松和高效。同时,本文还基于 Huggingface,Huggingface 是 NLP 驰名的开源社区,并且与 Amazon SagaMaker 高度适配,能够在 Amazon SagaMaker 上以几行代码轻松实现 NLP 模型训练和部署。

亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!

解决方案概览

在此示例中,咱们将应用 Amazon SageMaker 执行以下操作:

  • 环境筹备
  • 数据筹备
  • 应用 Amazon SageMaker BYOS 进行模型训练
  • 托管部署及推理测试

环境筹备

咱们首先要创立一个 Amazon SageMaker Notebook,因为本次试验全程不会用到本地 GPU 训练,所以笔记本实例类型能够任意抉择。

笔记本启动后,关上页面上的终端,执行以下命令下载代码。

cd ~/SageMaker
git clone https://github.com/HaoranLv/GAS-SageMaker.git

数据筹备

目前的 ABSA 存在多种子工作,别离用于聚焦于不同的情感元素,这里咱们给出目前支流的 ABSA 工作:

因为子工作泛滥,故本文以 TASD 为例进行试验,数据依照固定格局存储到 txt 文件中,具体格局为:

所应用的的所有数据均来自公开的数据集。数据的存储地位为./data/tasd/。

数据集的具体介绍能够参照:

  • https://aclanthology.org/S14-2004/?trk=cndc-detail
  • https://aclanthology.org/S15-2082/?trk=cndc-detail
  • https://aclanthology.org/S16-1002/?trk=cndc-detail

应用 Amazon SageMaker BYOS 进行模型训练

对于目前支流的深度学习框架(Tensorflow、Pytorch、Mxnet),Amazon SageMaker 均提供预置的镜像。具体来说,对于某个开源代码,如果其应用支流的深度学习框架编码,则实践上咱们就能够通过 Amazon SageMaker 进行 BYOS 模式的调用。

首先,咱们将数据进行预处理并保留到本地或者 S3,而后咱们只须要将训练所需的脚本以及其依赖筹备好,就能够通过实例化 estimator 进行模型训练和部署,理论过程中会启动 EC2 训练实例并且加载预置的镜像并启动容器,而后数据将会以 pipeline 的模式传输到 EC2 训练实例进行模型训练,训练实现后所有的日志均会贮存在 CloudWatch 中,训练失去的模型文件也会贮存在 S3 的特定地位以供后续应用。本文次要演示 Pytorch 框架下对 ABSA 生成工作进行 BYOS 的试验过程。

在 Jupyter Notebook 中关上 gabsa.ipynb 逐行运行。

引入依赖并进行权限配置

import sagemaker as sage
from time import gmtime, strftime
from sagemaker import get_execution_role
from sagemaker.pytorch import PyTorch
sess = sagemaker.Session()
role = sagemaker.get_execution_role()

print(f"sagemaker role arn: {role}")
print(f"sagemaker bucket: {sess.default_bucket()}")
print(f"sagemaker session region: {sess.boto_region_name}")

将解决好的数据上传到 S3

WORK_DIRECTORY = "./data"
# S3 prefix
prefix = "demo"
data_location = sess.upload_data(WORK_DIRECTORY, key_prefix=prefix)

定义超参数,本次试验应用 Huggingface hub 公开的 T5-base 预训练参数进行初始化

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":"30",
    "n_gpu": "1"
}

实例化 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
)

启动模型训练

inputs = {'tasd': data_location+'/tasd/'}
response = estimator.fit(inputs)

训练启动后,咱们能够在 Amazon SageMaker 控制台看到这个训练任务,点进详情能够看到训练的日志输入,以及监控机器的 GPU、CPU、内存等的使用率等状况,以确认程序能够失常工作。训练实现后也能够在 CloudWatch 中查看训练日志。

托管部署及推理测试

实现训练后,咱们能够轻松的将下面的模型部署成一个实时可在生产环境中调用的端口。

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

部署实现后能够在控制台看到如下状态:

而后咱们能够进行 endpoint 调用

predictor.predict({"inputs": "Worth an hour of frustration to put together Although not the easiest product I’ve ever assembled, it was worth the few minutes of cursing. I have not decided where I will put the lamp but I’m glad I purchased it. Had to struggle with one that was lost but Amazon made that right by sending another. Others have complained about the shade but that was very simple to put together. It looks like a quality item especially when compared to floor lamps I’ve seen on the floor at stores like Home Goods or Lowes. I’m happy with it."}, initial_args={'ContentType': 'application/json'})

输入后果为:

[(lamp, product, POSITIVE); (NULL, Services, POSITIVE)]

以上就是应用 Amazon SageMaker 构建细粒度情感剖析利用的全副过程,能够看到通过 Amazon SageMaker 能够十分便当地联合 Huggingface 进行 NLP 模型的搭建,训练,部署的全流程。整个过程仅须要筹备训练脚本以及数据即可通过若干命令启动训练和部署,同时,咱们后续还会推出,应用 Amazon SageMaker 进行更多 NLP 相干工作的实现形式,敬请关注。

参考资料

  • Amazon Sagemaker: https://docs.aws.amazon.com/sagemaker/index.html?trk=cndc-detail
  • Huggingface:https://huggingface.co/?trk=cndc-detail
  • Code Link:https://github.com/HaoranLv/GAS-SageMaker?trk=cndc-detail
  • https://aclanthology.org/S14-2004/?trk=cndc-detail
  • https://aclanthology.org/S15-2082/?trk=cndc-detail
  • https://aclanthology.org/S16-1002/?trk=cndc-detail

本篇作者

吕浩然
亚马逊云科技利用科学家,长期从事计算机视觉,自然语言解决等畛域的钻研和开发工作。反对数据实验室我的项目,在时序预测,指标检测,OCR,自然语言生成等方向有丰盛的算法开发以及落地实践经验。

文章起源:https://dev.amazoncloud.cn/column/article/6309e3bcafd24c6ba21…

正文完
 0