如今,社交媒体影响力广泛,涵盖个人、社会、政治、经济和文化等诸多领域。洞察用户情绪可以帮助企业快速了解公众对各类事件、趋势和产品的反应。这种基于数据的洞察对于企业的声誉管理、市场研究和决策制定至关重要。社交媒体提供了一个实时交流和信息共享的平台,使其成为衡量公众情绪的强大实时渠道。因此,实时追踪用户情绪变化能够帮助企业洞察情绪模式并迅速做出明智决策,从而及时采取适当行动。然而,实时情绪监控是一项计算密集型任务,如果管理不善,可能会迅速增加资源消耗,包括计算和成本等。
在本文中,我们将以 X(原 Twitter)为例,演示如何在基于 Arm Neoverse 平台的 CPU 上构建分布式 Kubernetes 集群,以根据推文实时监控情绪变化。如此一来,你可以充分利用 Arm Neoverse 平台的计算基础,获得更好的性能、效率和出色的灵活性。
你也可以借鉴本用例的主要原则,对其他社交媒体平台部署类似的解决方案,并在多个主要云服务提供商(包括 AWS、Google Cloud 、Microsoft Azure 和阿里云)中充分利用基于 Arm Neoverse 平台的云实例。
基于 Arm Neoverse 平台的EC2 AWS Graviton 实例的性能和效率
亚马逊云科技 (AWS) 提供由基于 Arm Neoverse 架构的 AWS Graviton 处理器赋能的 EC2 实例。这些实例基于 Graviton2、Graviton3 和 Graviton4 构建,不仅性能强大,而且成本效益显著。为了充分利用这些优势,我们在 AWS Graviton 实例上开发了我们的用例,使用了 Amazon Kinesis、Apache Spark、Amazon EKS(Graviton3 实例)、Amazon EC2(Graviton4 实例)、Amazon Elastic Search 和 Kibana dashboard、Prometheus 以及 Grafana(见图 1)。我们的用例可以快速创建和执行大规模并行机器学习作业,通过启用不同的节点来获得实时洞察。这样,企业就能利用实时洞察,在瞬息万变的世界中保持适应性、响应性和韧性。
图 :以 AWS 为例的逻辑架构图
此外,请注意,基于 Arm Neoverse 平台的实例可在 Google Cloud 和 Microsoft Azure 中使用。因此,使用这种逻辑架构,你同样可以使用 Google Cloud 和 Microsoft Azure 服务搭建类似的解决方案。现在,我们将以 AWS 为例,逐一介绍架构图中的每个组件,解释其用途和构建方式,帮助你全面了解整个系统。我们也将发布包含代码示例的学习路径,以便你复制和构建自己的解决方案。
1.设置 X API 以检索推文
为了及时检索 X 上发布的新推文,我们将使用 X 开发者 API,这是一套由 X 提供的编程工具和协议,允许开发者以编程方式访问 X 数据并与之交互。通过它,我们可以从 X 庞大的推文、用户信息和其他社交媒体内容数据库中收集、过滤和分析信息。
要开始使用,首先需要创建一个 X 开发者账户以使用 X API。你必须首先使用开发者门户创建一个项目和一个应用。然后,创建 API Key、API Secret、Access Token 和 Access Token Secret,以对你的应用进行身份验证并读取推文。请注意,X 会根据你的应用订阅类型,对你可检索的推文数量设置速率限制和约束,以确保服务的可靠性。
2.使用 AWS Kinesis 处理数据
AWS Kinesis 是一种完全托管的数据流服务,专为处理大量实时数据而构建。在我们的设置中,我们将使用 AWS Kinesis 从 X API 采集实时数据,确保每一条符合我们筛选条件(如标签、关键词、账户、语言、时间范围等)的推文在发布后立即直接流入 Kinesis。为了完成这一配置,请按照指南进行操作。Twitter API 脚本将每条推文作为 JSON 对象发送到 Kinesis 流中,使订阅者可以随时使用这些数据。
指南:https://docs.aws.amazon.com/s...
3.执行情绪分析
情绪分析器是一种文本分类模型,可检测推文的情绪基调,并根据所使用的词汇将其分为三个或更多类别。这样,应用用户无需手动阅读每条推文,就能快速了解关于特定主题的实时观点。分析结果提供了宝贵的情绪洞察,帮助用户基于数据做出明智的决策。有几种方法可以计算情绪:你可以自行训练文本分类模型,但这需要标注数据,而且耗时较长;或者像我们的方法一样,你可以使用预训练的情绪分类模型。
我们使用 Spark Streaming 处理推文中的情绪信息,这是 Spark 中的一个 API,用于对高吞吐量数据流(如 Kafka、AWS Kinesis、HDFS/S3 和 Flume)进行可靠的流处理。它会将输入数据流分割成小批次,并通过 Spark 引擎进行处理,生成一系列处理后的数据流。在 Spark SQL 的基础上,Spark 提供了名为 Structured Streaming 的流式 API。它允许数据以数据集/数据帧(RDD 上的 API)的形式呈现,并允许对流式数据上使用优化的 Spark SQL 引擎处理。
Spark Streaming API 从 Kinesis 流中读取推文流。Spark 引擎对接收的数据帧运行作业,使用斯坦福核心自然语言处理 (NLP) 库中的预训练情绪分类模型进行处理,为每条推文生成以下标签之一的输出结果:[非常消极、消极、中立、积极、非常积极]。然后将结果发送到 Elasticsearch。
4.设置 Elasticsearch
Elasticsearch 是一款强大的开源搜索和分析引擎,专为近乎实时的高效存储、搜索和分析大规模数据而设计。它能够快速摄取数据,并能近乎即时地进行搜索。其实时索引功能对于处理从 API 或事件流持续流入的高速数据流(如推文)至关重要。要在 AWS EC2 实例上设置 Elasticsearch,你可以参考相关说明。
说明:https://akintola-lonlon.mediu...
5.在 Kibana dashboard 中的可视化数据
Kibana 是一款开源可视化工具,可与 Elasticsearch 无缝协作,提供了一个用于探索、可视化和交互数据的界面。利用 Elasticsearch 和 Kibana,用户可以与数据交互、应用过滤器,并在情绪急剧下降时收到警报,全部功能都是实时的。如果你的 Elasticsearch 部署最初不包括 Kibana 实例,可以按照说明首先启用 Kibana。
说明:https://www.elastic.co/guide/...
对于新的 Elasticsearch 集群,会自动为你创建一个 Kibana 实例,以便你可以直接访问。启用 Kibana 后,你可以参考文件设置所需的可视化,以显示来自 Elasticsearch 的数据。
参考文件:https://www.elastic.co/guide/...
6.使用 Prometheus 监控 Kubernetes 指标
Prometheus 是一个监控和警报工具包。它广泛用于收集和查询 Kubernetes 等云原生环境中的实时指标。Prometheus 收集有助于监控 Kubernetes 集群的健康状况和性能的关键指标(如 CPU、内存使用率、pod 数量、请求延迟)。
7.使用 Grafana 可视化呈现 Prometheus
Grafana 是一款可视化和分析工具,能够与 Prometheus 数据源集成,用于创建交互式仪表盘来监控和分析 Kubernetes 指标随时间的变化。我们使用 Helm 在 Kubernetes 上部署了 Prometheus 和 Grafana。
8.设置 Amazon Elastic Kubernetes Service
AmazonEKS 是 AWS 管理的 Kubernetes 服务,允许你部署、管理和扩展应用。对于我们的应用而言,由于推文数量会因热门话题或事件而大幅波动,因此 EKS 允许自动扩展 Kubernetes pod 和节点,确保情绪分析应用有足够的资源来处理峰值负载,并在流量减少时自动缩减,从而优化成本效益。
HashiCorp 提供了关于如何在 AWS 上配置 EKS 集群的文档。另外还提供了 Terraform 脚本来帮助自动设置。要在基于 Graviton3 的实例上运行,需要进行一些调整:
- 确定你希望用于运行集群的 EKS 支持的 Kubernetes 版本。可以在 eks-cluster.tf 中设置版本;
- 确定该 Kubernetes 版本的优化 Amazon Linux AMI;
- 更新 worker 组参数。
HashiCorp 文档:https://learn.hashicorp.com/t...
Terraform 脚本:https://github.com/hashicorp/...
结果和总结
每条推文的推理时间取决于其长度和所使用的模型。为了实现准确的情绪预测,可以选择较大的模型,与较小的模型相比,虽会增加延迟,但情绪预测的准确性更高。由于推文长度各不相同,推理时间也会相应波动,每条推文平均约为几百毫秒。这意味着我们的用例在使用大的模型时,每秒可处理约 5-10 条推文。运行较小的模型通常更快,延迟时间缩短一半,每秒可处理 20-30 条推文。欢迎各位一起动手亲自体验!
END
作者:Arm 基础设施事业部 AI 解决方案架构师 Na Li
文章来源:Arm社区
推荐阅读
- Armv9 技术讲堂 | Arm A 系列架构 2024 进展
- 在AWS Graviton4 CPU上运行Llama 3 70B模型,执行速度超过人类可读性水平
- 详解 Arm Cortex-A320,针对物联网优化的超高能效 Armv9 CPU
- Arm 推出 GitHub Copilot 新扩展程序,助力快速迁移至 Arm 架构服务器
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区 Arm 技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。