作者:Arm 基礎(chǔ)設(shè)施事業(yè)部 AI 解決方案架構(gòu)師 Na Li
如今,社交媒體影響力廣泛,涵蓋個(gè)人、社會(huì)、政治、經(jīng)濟(jì)和文化等諸多領(lǐng)域。洞察用戶情緒可以幫助企業(yè)快速了解公眾對(duì)各類事件、趨勢(shì)和產(chǎn)品的反應(yīng)。這種基于數(shù)據(jù)的洞察對(duì)于企業(yè)的聲譽(yù)管理、市場(chǎng)研究和決策制定至關(guān)重要。社交媒體提供了一個(gè)實(shí)時(shí)交流和信息共享的平臺(tái),使其成為衡量公眾情緒的強(qiáng)大實(shí)時(shí)渠道。因此,實(shí)時(shí)追蹤用戶情緒變化能夠幫助企業(yè)洞察情緒模式并迅速做出明智決策,從而及時(shí)采取適當(dāng)行動(dòng)。然而,實(shí)時(shí)情緒監(jiān)控是一項(xiàng)計(jì)算密集型任務(wù),如果管理不善,可能會(huì)迅速增加資源消耗,包括計(jì)算和成本等。
在本文中,我們將以 X(原 Twitter)為例,演示如何在基于 Arm Neoverse 平臺(tái)的 CPU 上構(gòu)建分布式 Kubernetes 集群,以根據(jù)推文實(shí)時(shí)監(jiān)控情緒變化。如此一來(lái),你可以充分利用 Arm Neoverse 平臺(tái)的計(jì)算基礎(chǔ),獲得更好的性能、效率和出色的靈活性。
你也可以借鑒本用例的主要原則,對(duì)其他社交媒體平臺(tái)部署類似的解決方案,并在多個(gè)主要云服務(wù)提供商(包括 AWS、Google Cloud 、Microsoft Azure 和阿里云)中充分利用基于 Arm Neoverse 平臺(tái)的云實(shí)例。
基于 Arm Neoverse 平臺(tái)的EC2 AWS Graviton 實(shí)例的性能和效率
亞馬遜云科技 (AWS) 提供由基于 Arm Neoverse 架構(gòu)的 AWS Graviton 處理器賦能的 EC2 實(shí)例。這些實(shí)例基于 Graviton2、Graviton3 和 Graviton4 構(gòu)建,不僅性能強(qiáng)大,而且成本效益顯著。為了充分利用這些優(yōu)勢(shì),我們?cè)?AWS Graviton 實(shí)例上開發(fā)了我們的用例,使用了 Amazon Kinesis、Apache Spark、Amazon EKS(Graviton3 實(shí)例)、Amazon EC2(Graviton4 實(shí)例)、Amazon Elastic Search 和 Kibana dashboard、Prometheus 以及 Grafana(見圖 1)。我們的用例可以快速創(chuàng)建和執(zhí)行大規(guī)模并行機(jī)器學(xué)習(xí)作業(yè),通過(guò)啟用不同的節(jié)點(diǎn)來(lái)獲得實(shí)時(shí)洞察。這樣,企業(yè)就能利用實(shí)時(shí)洞察,在瞬息萬(wàn)變的世界中保持適應(yīng)性、響應(yīng)性和韌性。

圖 :以 AWS 為例的邏輯架構(gòu)圖
此外,請(qǐng)注意,基于 Arm Neoverse 平臺(tái)的實(shí)例可在 Google Cloud 和 Microsoft Azure 中使用。因此,使用這種邏輯架構(gòu),你同樣可以使用 Google Cloud 和 Microsoft Azure 服務(wù)搭建類似的解決方案?,F(xiàn)在,我們將以 AWS 為例,逐一介紹架構(gòu)圖中的每個(gè)組件,解釋其用途和構(gòu)建方式,幫助你全面了解整個(gè)系統(tǒng)。我們也將發(fā)布包含代碼示例的學(xué)習(xí)路徑,以便你復(fù)制和構(gòu)建自己的解決方案。
1設(shè)置 X API 以檢索推文
為了及時(shí)檢索 X 上發(fā)布的新推文,我們將使用 X 開發(fā)者 API,這是一套由 X 提供的編程工具和協(xié)議,允許開發(fā)者以編程方式訪問(wèn) X 數(shù)據(jù)并與之交互。通過(guò)它,我們可以從 X 龐大的推文、用戶信息和其他社交媒體內(nèi)容數(shù)據(jù)庫(kù)中收集、過(guò)濾和分析信息。
要開始使用,首先需要?jiǎng)?chuàng)建一個(gè) X 開發(fā)者賬戶以使用 X API。你必須首先使用開發(fā)者門戶創(chuàng)建一個(gè)項(xiàng)目和一個(gè)應(yīng)用。然后,創(chuàng)建 API Key、API Secret、Access Token 和 Access Token Secret,以對(duì)你的應(yīng)用進(jìn)行身份驗(yàn)證并讀取推文。請(qǐng)注意,X 會(huì)根據(jù)你的應(yīng)用訂閱類型,對(duì)你可檢索的推文數(shù)量設(shè)置速率限制和約束,以確保服務(wù)的可靠性。
2使用 AWS Kinesis 處理數(shù)據(jù)
AWS Kinesis 是一種完全托管的數(shù)據(jù)流服務(wù),專為處理大量實(shí)時(shí)數(shù)據(jù)而構(gòu)建。在我們的設(shè)置中,我們將使用 AWS Kinesis 從 XAPI 采集實(shí)時(shí)數(shù)據(jù),確保每一條符合我們篩選條件(如標(biāo)簽、關(guān)鍵詞、賬戶、語(yǔ)言、時(shí)間范圍等)的推文在發(fā)布后立即直接流入 Kinesis。為了完成這一配置,請(qǐng)按照指南進(jìn)行操作。Twitter API 腳本將每條推文作為 JSON 對(duì)象發(fā)送到 Kinesis 流中,使訂閱者可以隨時(shí)使用這些數(shù)據(jù)。
3執(zhí)行情緒分析
情緒分析器是一種文本分類模型,可檢測(cè)推文的情緒基調(diào),并根據(jù)所使用的詞匯將其分為三個(gè)或更多類別。這樣,應(yīng)用用戶無(wú)需手動(dòng)閱讀每條推文,就能快速了解關(guān)于特定主題的實(shí)時(shí)觀點(diǎn)。分析結(jié)果提供了寶貴的情緒洞察,幫助用戶基于數(shù)據(jù)做出明智的決策。有幾種方法可以計(jì)算情緒:你可以自行訓(xùn)練文本分類模型,但這需要標(biāo)注數(shù)據(jù),而且耗時(shí)較長(zhǎng);或者像我們的方法一樣,你可以使用預(yù)訓(xùn)練的情緒分類模型。
我們使用 Spark Streaming 處理推文中的情緒信息,這是 Spark 中的一個(gè) API,用于對(duì)高吞吐量數(shù)據(jù)流(如 Kafka、AWS Kinesis、HDFS/S3 和 Flume)進(jìn)行可靠的流處理。它會(huì)將輸入數(shù)據(jù)流分割成小批次,并通過(guò) Spark 引擎進(jìn)行處理,生成一系列處理后的數(shù)據(jù)流。在 Spark SQL 的基礎(chǔ)上,Spark 提供了名為 Structured Streaming 的流式 API。它允許數(shù)據(jù)以數(shù)據(jù)集/數(shù)據(jù)幀(RDD 上的 API)的形式呈現(xiàn),并允許對(duì)流式數(shù)據(jù)上使用優(yōu)化的 Spark SQL 引擎處理。
Spark Streaming API 從 Kinesis 流中讀取推文流。Spark 引擎對(duì)接收的數(shù)據(jù)幀運(yùn)行作業(yè),使用斯坦福核心自然語(yǔ)言處理 (NLP) 庫(kù)中的預(yù)訓(xùn)練情緒分類模型進(jìn)行處理,為每條推文生成以下標(biāo)簽之一的輸出結(jié)果:[非常消極、消極、中立、積極、非常積極]。然后將結(jié)果發(fā)送到 Elasticsearch。
4設(shè)置 Elasticsearch
Elasticsearch 是一款強(qiáng)大的開源搜索和分析引擎,專為近乎實(shí)時(shí)的高效存儲(chǔ)、搜索和分析大規(guī)模數(shù)據(jù)而設(shè)計(jì)。它能夠快速攝取數(shù)據(jù),并能近乎即時(shí)地進(jìn)行搜索。其實(shí)時(shí)索引功能對(duì)于處理從 API 或事件流持續(xù)流入的高速數(shù)據(jù)流(如推文)至關(guān)重要。要在 AWS EC2 實(shí)例上設(shè)置 Elasticsearch,你可以參考相關(guān)說(shuō)明。
5在 Kibana dashboard 中的可視化數(shù)據(jù)
Kibana 是一款開源可視化工具,可與 Elasticsearch 無(wú)縫協(xié)作,提供了一個(gè)用于探索、可視化和交互數(shù)據(jù)的界面。利用 Elasticsearch 和 Kibana,用戶可以與數(shù)據(jù)交互、應(yīng)用過(guò)濾器,并在情緒急劇下降時(shí)收到警報(bào),全部功能都是實(shí)時(shí)的。如果你的 Elasticsearch 部署最初不包括 Kibana 實(shí)例,可以按照說(shuō)明首先啟用 Kibana。
對(duì)于新的 Elasticsearch 集群,會(huì)自動(dòng)為你創(chuàng)建一個(gè) Kibana 實(shí)例,以便你可以直接訪問(wèn)。啟用 Kibana 后,你可以參考文件設(shè)置所需的可視化,以顯示來(lái)自 Elasticsearch 的數(shù)據(jù)。
6使用 Prometheus 監(jiān)控 Kubernetes 指標(biāo)
Prometheus 是一個(gè)監(jiān)控和警報(bào)工具包。它廣泛用于收集和查詢 Kubernetes 等云原生環(huán)境中的實(shí)時(shí)指標(biāo)。Prometheus 收集有助于監(jiān)控 Kubernetes 集群的健康狀況和性能的關(guān)鍵指標(biāo)(如 CPU、內(nèi)存使用率、pod 數(shù)量、請(qǐng)求延遲)。
7使用 Grafana 可視化呈現(xiàn) Prometheus
Grafana 是一款可視化和分析工具,能夠與 Prometheus 數(shù)據(jù)源集成,用于創(chuàng)建交互式儀表盤來(lái)監(jiān)控和分析 Kubernetes 指標(biāo)隨時(shí)間的變化。我們使用 Helm 在 Kubernetes 上部署了 Prometheus 和 Grafana。
8設(shè)置 AmazonElastic Kubernetes Service
AmazonEKS是 AWS 管理的 Kubernetes 服務(wù),允許你部署、管理和擴(kuò)展應(yīng)用。對(duì)于我們的應(yīng)用而言,由于推文數(shù)量會(huì)因熱門話題或事件而大幅波動(dòng),因此 EKS 允許自動(dòng)擴(kuò)展 Kubernetes pod 和節(jié)點(diǎn),確保情緒分析應(yīng)用有足夠的資源來(lái)處理峰值負(fù)載,并在流量減少時(shí)自動(dòng)縮減,從而優(yōu)化成本效益。
HashiCorp 提供了關(guān)于如何在 AWS 上配置 EKS 集群的文檔。另外還提供了 Terraform 腳本來(lái)幫助自動(dòng)設(shè)置。要在基于 Graviton3 的實(shí)例上運(yùn)行,需要進(jìn)行一些調(diào)整:
確定你希望用于運(yùn)行集群的 EKS 支持的 Kubernetes 版本。可以在 eks-cluster.tf 中設(shè)置版本;
確定該 Kubernetes 版本的優(yōu)化 Amazon Linux AMI;
更新 worker 組參數(shù)。

結(jié)果和總結(jié)
每條推文的推理時(shí)間取決于其長(zhǎng)度和所使用的模型。為了實(shí)現(xiàn)準(zhǔn)確的情緒預(yù)測(cè),可以選擇較大的模型,與較小的模型相比,雖會(huì)增加延遲,但情緒預(yù)測(cè)的準(zhǔn)確性更高。由于推文長(zhǎng)度各不相同,推理時(shí)間也會(huì)相應(yīng)波動(dòng),每條推文平均約為幾百毫秒。這意味著我們的用例在使用大的模型時(shí),每秒可處理約 5-10 條推文。運(yùn)行較小的模型通常更快,延遲時(shí)間縮短一半,每秒可處理 20-30 條推文。歡迎各位一起動(dòng)手親自體驗(yàn)!
-
ARM
+關(guān)注
關(guān)注
135文章
9589瀏覽量
393779 -
集群
+關(guān)注
關(guān)注
0文章
152瀏覽量
17689 -
開源
+關(guān)注
關(guān)注
3文章
4368瀏覽量
46464 -
kubernetes
+關(guān)注
關(guān)注
0文章
275瀏覽量
9538 -
Neoverse
+關(guān)注
關(guān)注
0文章
17瀏覽量
5003
原文標(biāo)題:如何在基于 Arm Neoverse 平臺(tái)的 Kubernetes 集群上實(shí)現(xiàn)實(shí)時(shí)情緒分析
文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Kubernetes 網(wǎng)絡(luò)模型如何實(shí)現(xiàn)常見網(wǎng)絡(luò)任務(wù)
EasyGo使用筆記丨分布式光伏集群并網(wǎng)控制硬件在環(huán)仿真應(yīng)用
阿里云上Kubernetes集群聯(lián)邦
阿里云彈性計(jì)算Apsara Block Storage正式發(fā)布 構(gòu)建企業(yè)級(jí)分布式塊存儲(chǔ)服務(wù)平臺(tái)
spark集群使用hanlp進(jìn)行分布式分詞操作說(shuō)明
如何在Arm上利用Istio搭建一個(gè)基于Kubernetes的Service Mesh平臺(tái)
ARM Neoverse IP的AWS實(shí)例上etcd分布式鍵對(duì)值存儲(chǔ)性能提升
Arm Neoverse V1的AWS Graviton3在深度學(xué)習(xí)推理工作負(fù)載方面的作用
如何部署基于Mesos的Kubernetes集群
如何在基于Arm Neoverse平臺(tái)的CPU上構(gòu)建分布式Kubernetes集群
評(píng)論