作者:Arm 基礎(chǔ)設(shè)施事業(yè)部 AI 解決方案架構(gòu)師 Na Li
如今,社交媒體影響力廣泛,涵蓋個人、社會、政治、經(jīng)濟和文化等諸多領(lǐng)域。洞察用戶情緒可以幫助企業(yè)快速了解公眾對各類事件、趨勢和產(chǎn)品的反應(yīng)。這種基于數(shù)據(jù)的洞察對于企業(yè)的聲譽管理、市場研究和決策制定至關(guān)重要。社交媒體提供了一個實時交流和信息共享的平臺,使其成為衡量公眾情緒的強大實時渠道。因此,實時追蹤用戶情緒變化能夠幫助企業(yè)洞察情緒模式并迅速做出明智決策,從而及時采取適當(dāng)行動。然而,實時情緒監(jiān)控是一項計算密集型任務(wù),如果管理不善,可能會迅速增加資源消耗,包括計算和成本等。
在本文中,我們將以 X(原 Twitter)為例,演示如何在基于 Arm Neoverse 平臺的 CPU 上構(gòu)建分布式 Kubernetes 集群,以根據(jù)推文實時監(jiān)控情緒變化。如此一來,你可以充分利用 Arm Neoverse 平臺的計算基礎(chǔ),獲得更好的性能、效率和出色的靈活性。
你也可以借鑒本用例的主要原則,對其他社交媒體平臺部署類似的解決方案,并在多個主要云服務(wù)提供商(包括 AWS、Google Cloud 、Microsoft Azure 和阿里云)中充分利用基于 Arm Neoverse 平臺的云實例。
基于 Arm Neoverse 平臺的EC2 AWS Graviton 實例的性能和效率
亞馬遜云科技 (AWS) 提供由基于 Arm Neoverse 架構(gòu)的 AWS Graviton 處理器賦能的 EC2 實例。這些實例基于 Graviton2、Graviton3 和 Graviton4 構(gòu)建,不僅性能強大,而且成本效益顯著。為了充分利用這些優(yōu)勢,我們在 AWS Graviton 實例上開發(fā)了我們的用例,使用了 Amazon Kinesis、Apache Spark、Amazon EKS(Graviton3 實例)、Amazon EC2(Graviton4 實例)、Amazon Elastic Search 和 Kibana dashboard、Prometheus 以及 Grafana(見圖 1)。我們的用例可以快速創(chuàng)建和執(zhí)行大規(guī)模并行機器學(xué)習(xí)作業(yè),通過啟用不同的節(jié)點來獲得實時洞察。這樣,企業(yè)就能利用實時洞察,在瞬息萬變的世界中保持適應(yīng)性、響應(yīng)性和韌性。
圖 :以 AWS 為例的邏輯架構(gòu)圖
此外,請注意,基于 Arm Neoverse 平臺的實例可在 Google Cloud 和 Microsoft Azure 中使用。因此,使用這種邏輯架構(gòu),你同樣可以使用 Google Cloud 和 Microsoft Azure 服務(wù)搭建類似的解決方案?,F(xiàn)在,我們將以 AWS 為例,逐一介紹架構(gòu)圖中的每個組件,解釋其用途和構(gòu)建方式,幫助你全面了解整個系統(tǒng)。我們也將發(fā)布包含代碼示例的學(xué)習(xí)路徑,以便你復(fù)制和構(gòu)建自己的解決方案。
1設(shè)置 X API 以檢索推文
為了及時檢索 X 上發(fā)布的新推文,我們將使用 X 開發(fā)者 API,這是一套由 X 提供的編程工具和協(xié)議,允許開發(fā)者以編程方式訪問 X 數(shù)據(jù)并與之交互。通過它,我們可以從 X 龐大的推文、用戶信息和其他社交媒體內(nèi)容數(shù)據(jù)庫中收集、過濾和分析信息。
要開始使用,首先需要創(chuàng)建一個 X 開發(fā)者賬戶以使用 X API。你必須首先使用開發(fā)者門戶創(chuàng)建一個項目和一個應(yīng)用。然后,創(chuàng)建 API Key、API Secret、Access Token 和 Access Token Secret,以對你的應(yīng)用進(jìn)行身份驗證并讀取推文。請注意,X 會根據(jù)你的應(yīng)用訂閱類型,對你可檢索的推文數(shù)量設(shè)置速率限制和約束,以確保服務(wù)的可靠性。
2使用 AWS Kinesis 處理數(shù)據(jù)
AWS Kinesis 是一種完全托管的數(shù)據(jù)流服務(wù),專為處理大量實時數(shù)據(jù)而構(gòu)建。在我們的設(shè)置中,我們將使用 AWS Kinesis 從 XAPI 采集實時數(shù)據(jù),確保每一條符合我們篩選條件(如標(biāo)簽、關(guān)鍵詞、賬戶、語言、時間范圍等)的推文在發(fā)布后立即直接流入 Kinesis。為了完成這一配置,請按照指南進(jìn)行操作。Twitter API 腳本將每條推文作為 JSON 對象發(fā)送到 Kinesis 流中,使訂閱者可以隨時使用這些數(shù)據(jù)。
3執(zhí)行情緒分析
情緒分析器是一種文本分類模型,可檢測推文的情緒基調(diào),并根據(jù)所使用的詞匯將其分為三個或更多類別。這樣,應(yīng)用用戶無需手動閱讀每條推文,就能快速了解關(guān)于特定主題的實時觀點。分析結(jié)果提供了寶貴的情緒洞察,幫助用戶基于數(shù)據(jù)做出明智的決策。有幾種方法可以計算情緒:你可以自行訓(xùn)練文本分類模型,但這需要標(biāo)注數(shù)據(jù),而且耗時較長;或者像我們的方法一樣,你可以使用預(yù)訓(xùn)練的情緒分類模型。
我們使用 Spark Streaming 處理推文中的情緒信息,這是 Spark 中的一個 API,用于對高吞吐量數(shù)據(jù)流(如 Kafka、AWS Kinesis、HDFS/S3 和 Flume)進(jìn)行可靠的流處理。它會將輸入數(shù)據(jù)流分割成小批次,并通過 Spark 引擎進(jìn)行處理,生成一系列處理后的數(shù)據(jù)流。在 Spark SQL 的基礎(chǔ)上,Spark 提供了名為 Structured Streaming 的流式 API。它允許數(shù)據(jù)以數(shù)據(jù)集/數(shù)據(jù)幀(RDD 上的 API)的形式呈現(xiàn),并允許對流式數(shù)據(jù)上使用優(yōu)化的 Spark SQL 引擎處理。
Spark Streaming API 從 Kinesis 流中讀取推文流。Spark 引擎對接收的數(shù)據(jù)幀運行作業(yè),使用斯坦福核心自然語言處理 (NLP) 庫中的預(yù)訓(xùn)練情緒分類模型進(jìn)行處理,為每條推文生成以下標(biāo)簽之一的輸出結(jié)果:[非常消極、消極、中立、積極、非常積極]。然后將結(jié)果發(fā)送到 Elasticsearch。
4設(shè)置 Elasticsearch
Elasticsearch 是一款強大的開源搜索和分析引擎,專為近乎實時的高效存儲、搜索和分析大規(guī)模數(shù)據(jù)而設(shè)計。它能夠快速攝取數(shù)據(jù),并能近乎即時地進(jìn)行搜索。其實時索引功能對于處理從 API 或事件流持續(xù)流入的高速數(shù)據(jù)流(如推文)至關(guān)重要。要在 AWS EC2 實例上設(shè)置 Elasticsearch,你可以參考相關(guān)說明。
5在 Kibana dashboard 中的可視化數(shù)據(jù)
Kibana 是一款開源可視化工具,可與 Elasticsearch 無縫協(xié)作,提供了一個用于探索、可視化和交互數(shù)據(jù)的界面。利用 Elasticsearch 和 Kibana,用戶可以與數(shù)據(jù)交互、應(yīng)用過濾器,并在情緒急劇下降時收到警報,全部功能都是實時的。如果你的 Elasticsearch 部署最初不包括 Kibana 實例,可以按照說明首先啟用 Kibana。
對于新的 Elasticsearch 集群,會自動為你創(chuàng)建一個 Kibana 實例,以便你可以直接訪問。啟用 Kibana 后,你可以參考文件設(shè)置所需的可視化,以顯示來自 Elasticsearch 的數(shù)據(jù)。
6使用 Prometheus 監(jiān)控 Kubernetes 指標(biāo)
Prometheus 是一個監(jiān)控和警報工具包。它廣泛用于收集和查詢 Kubernetes 等云原生環(huán)境中的實時指標(biāo)。Prometheus 收集有助于監(jiān)控 Kubernetes 集群的健康狀況和性能的關(guān)鍵指標(biāo)(如 CPU、內(nèi)存使用率、pod 數(shù)量、請求延遲)。
7使用 Grafana 可視化呈現(xiàn) Prometheus
Grafana 是一款可視化和分析工具,能夠與 Prometheus 數(shù)據(jù)源集成,用于創(chuàng)建交互式儀表盤來監(jiān)控和分析 Kubernetes 指標(biāo)隨時間的變化。我們使用 Helm 在 Kubernetes 上部署了 Prometheus 和 Grafana。
8設(shè)置 AmazonElastic Kubernetes Service
AmazonEKS是 AWS 管理的 Kubernetes 服務(wù),允許你部署、管理和擴展應(yīng)用。對于我們的應(yīng)用而言,由于推文數(shù)量會因熱門話題或事件而大幅波動,因此 EKS 允許自動擴展 Kubernetes pod 和節(jié)點,確保情緒分析應(yīng)用有足夠的資源來處理峰值負(fù)載,并在流量減少時自動縮減,從而優(yōu)化成本效益。
HashiCorp 提供了關(guān)于如何在 AWS 上配置 EKS 集群的文檔。另外還提供了 Terraform 腳本來幫助自動設(shè)置。要在基于 Graviton3 的實例上運行,需要進(jìn)行一些調(diào)整:
確定你希望用于運行集群的 EKS 支持的 Kubernetes 版本。可以在 eks-cluster.tf 中設(shè)置版本;
確定該 Kubernetes 版本的優(yōu)化 Amazon Linux AMI;
更新 worker 組參數(shù)。
結(jié)果和總結(jié)
每條推文的推理時間取決于其長度和所使用的模型。為了實現(xiàn)準(zhǔn)確的情緒預(yù)測,可以選擇較大的模型,與較小的模型相比,雖會增加延遲,但情緒預(yù)測的準(zhǔn)確性更高。由于推文長度各不相同,推理時間也會相應(yīng)波動,每條推文平均約為幾百毫秒。這意味著我們的用例在使用大的模型時,每秒可處理約 5-10 條推文。運行較小的模型通常更快,延遲時間縮短一半,每秒可處理 20-30 條推文。歡迎各位一起動手親自體驗!
-
ARM
+關(guān)注
關(guān)注
134文章
9237瀏覽量
371990 -
集群
+關(guān)注
關(guān)注
0文章
96瀏覽量
17293 -
開源
+關(guān)注
關(guān)注
3文章
3492瀏覽量
43083 -
kubernetes
+關(guān)注
關(guān)注
0文章
234瀏覽量
8831 -
Neoverse
+關(guān)注
關(guān)注
0文章
11瀏覽量
4687
原文標(biāo)題:如何在基于 Arm Neoverse 平臺的 Kubernetes 集群上實現(xiàn)實時情緒分析
文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Kubernetes 網(wǎng)絡(luò)模型如何實現(xiàn)常見網(wǎng)絡(luò)任務(wù)
EasyGo使用筆記丨分布式光伏集群并網(wǎng)控制硬件在環(huán)仿真應(yīng)用
阿里云上Kubernetes集群聯(lián)邦
阿里云彈性計算Apsara Block Storage正式發(fā)布 構(gòu)建企業(yè)級分布式塊存儲服務(wù)平臺
spark集群使用hanlp進(jìn)行分布式分詞操作說明
如何在Arm上利用Istio搭建一個基于Kubernetes的Service Mesh平臺
ARM Neoverse IP的AWS實例上etcd分布式鍵對值存儲性能提升
Arm Neoverse V1的AWS Graviton3在深度學(xué)習(xí)推理工作負(fù)載方面的作用
如何部署基于Mesos的Kubernetes集群

評論