那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Memgraph和NVIDIA cuGraph算法運(yùn)行大規(guī)模圖形分析

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Antonio Filipovi? ? 2022-10-10 16:38 ? 次閱讀

通過最新的 Memgraph 高級圖形擴(kuò)展( MAGE )版本,您現(xiàn)在可以在幾秒鐘內(nèi)從 Memgraph 運(yùn)行 GPU 支持的圖形分析,同時使用 Python 。由 NVIDIA cuGraph 提供支持,以下圖形算法現(xiàn)在將在 GPU 上執(zhí)行:

PageRank (圖形分析)

Louvain (社區(qū)檢測

平衡切割(聚類)

光譜聚類(聚類)

點擊率(集線器與權(quán)威分析)

萊頓(社區(qū)檢測)

Katz Centrality

中間性和中心

教程將向您展示如何使用 PageRank 圖分析和 Louvain 社區(qū)檢測來分析包含 130 萬關(guān)系的 Facebook 數(shù)據(jù)集。

在本教程結(jié)束時,您將知道如何:

使用 Python 在 Memgraph 中導(dǎo)入數(shù)據(jù)

在大規(guī)模圖形上運(yùn)行分析并獲得快速結(jié)果

從 Memgraph 在 NVIDIA GPU 上運(yùn)行分析

教程先決條件

要學(xué)習(xí)本圖形分析教程,您需要一個 NVIDIA GPU 、驅(qū)動程序和容器工具包。成功安裝后 NVIDIA GPU 驅(qū)動程序 和容器工具包,您還必須安裝以下四個工具:

碼頭工人 用于運(yùn)行mage-cugraph映像

朱皮特 為了分析圖形數(shù)據(jù)

煉金術(shù) 將 Memgraph 與 Python 連接

Memgraph 實驗室 為了使圖形可視化

下一節(jié)將指導(dǎo)您為本教程安裝和設(shè)置這些工具。

碼頭工人

Docker 用于安裝和運(yùn)行mage-cugraph Docker 映像。設(shè)置和運(yùn)行 Docker 映像涉及三個步驟:

下載 Docker

下載教程數(shù)據(jù)

運(yùn)行 Docker 映像,使其能夠訪問教程數(shù)據(jù)

1.下載 Docker

您可以通過訪問安裝 Docker 網(wǎng)頁,并按照操作系統(tǒng)的說明操作。

2.下載教程數(shù)據(jù)

在運(yùn)行mage-cugraph Docker 映像之前,首先下載本教程中使用的數(shù)據(jù)。這允許您在運(yùn)行時為 Docker 映像提供對教程數(shù)據(jù)集的訪問權(quán)限。

要下載數(shù)據(jù),請使用以下命令克隆 jupyter memgraph 教程 GitHub repo ,并將其移動到j(luò)upyter-memgraph-tutorials/cugraph-analytics文件夾:

Git clone https://github.com/memgraph/jupyter-memgraph-tutorials.git
Cd jupyter-memgraph-tutorials/cugraph-analytics

3.運(yùn)行 Docker 鏡像

現(xiàn)在,您可以使用以下命令運(yùn)行 Docker 鏡像并將車間數(shù)據(jù)裝載到/samples文件夾:

docker run -it -p 7687:7687 -p 7444:7444 --volume /data/facebook_clean_data/:/samples mage-cugraph

運(yùn)行 Docker 容器時,您應(yīng)該會看到以下消息:

You are running Memgraph vX.X.X
To get started with Memgraph, visit https://memgr.ph/start

執(zhí)行 mount 命令后,教程所需的CSV文件將位于 Docker 映像內(nèi)的/samples文件夾中, Memgraph 將在需要時找到它們。

Jupyter 筆記本

現(xiàn)在 Memgraph 已經(jīng)運(yùn)行,請安裝 Jupyter.本教程使用 JupyterLab,您可以使用以下命令安裝它:

pip install jupyterlab

安裝 JupyterLab 后,使用以下命令啟動它:

jupyter lab

煉金術(shù)

使用 煉金術(shù) ,一個對象圖映射器( OGM ),用于連接到 Memgraph 并在 Python 中執(zhí)行查詢。您可以將 Cypher 視為圖形數(shù)據(jù)庫的 SQL 。它包含許多相同的語言結(jié)構(gòu),如創(chuàng)建、更新和刪除。

下載 CMake 在您的系統(tǒng)上,然后您可以使用 pip 安裝 GQLAlchemy :

pip install gqlalchemy

Memgraph 實驗室

您需要安裝的最后一個先決條件是: Memgraph 實驗室 連接到 Memgraph 后,您將使用它創(chuàng)建數(shù)據(jù)可視化。學(xué) 如何安裝 Memgraph 實驗室 作為操作系統(tǒng)的桌面應(yīng)用程序。

安裝 Memgraph Lab 后,您現(xiàn)在應(yīng)該 連接到 Memgraph 數(shù)據(jù)庫 。

此時,您終于準(zhǔn)備好:

使用 GQLAlchemy 連接到 Memgraph

導(dǎo)入數(shù)據(jù)集

在 Python 中運(yùn)行圖形分析

使用 GQLAlchemy 連接到 Memgraph

首先,將自己定位在 Jupyter 筆記本 。前三行代碼將導(dǎo)入gqlalchemy,通過host:127.0.0.1和port:7687連接到 Memgraph 數(shù)據(jù)庫實例,并清除數(shù)據(jù)庫。一定要從頭開始。

from gqlalchemy import Memgraph
memgraph = Memgraph("127.0.0.1", 7687)
memgraph.drop_database()

從 CSV 文件導(dǎo)入數(shù)據(jù)集。

接下來,您將執(zhí)行以下操作: PageRank 以及使用 Python 的 Louvain 社區(qū)檢測。

導(dǎo)入數(shù)據(jù)

這個 Facebook 數(shù)據(jù)集 由八個 CSV 文件組成,每個文件具有以下結(jié)構(gòu):

node_1,node_2
0,1794
0,3102
0,16645

每條記錄表示連接兩個節(jié)點的邊。節(jié)點表示頁面,它們之間的關(guān)系是相互的。

有八種不同類型的頁面(例如,政府、運(yùn)動員和電視節(jié)目)。頁面已重新編制匿名索引,所有頁面均已通過 Facebook 驗證真實性。

由于 Memgraph 在數(shù)據(jù)具有索引時導(dǎo)入查詢速度更快,因此在id屬性上使用標(biāo)簽Page為所有節(jié)點創(chuàng)建查詢。

memgraph.execute(
    """
    CREATE INDEX ON :Page(id);
    """
)

Docker 已經(jīng)擁有對本教程中使用的數(shù)據(jù)的容器訪問權(quán)限,因此您可以通過./data/facebook_clean_data/文件夾中的本地文件進(jìn)行列表。通過連接文件名和/samples/文件夾,可以確定它們的路徑。使用連接的文件路徑將數(shù)據(jù)加載到 Memgraph 中。

import os
from os import listdir
from os.path import isfile, join
csv_dir_path = os.path.abspath("./data/facebook_clean_data/")
csv_files = [f"/samples/{f}" for f in listdir(csv_dir_path) if isfile(join(csv_dir_path, f))]

使用以下查詢加載所有 CSV 文件:

for csv_file_path in csv_files:
    memgraph.execute(
        f"""
        LOAD CSV FROM "{csv_file_path}" WITH HEADER AS row
        MERGE (p1:Page {{id: row.node_1}}) 
        MERGE (p2:Page {{id: row.node_2}}) 
        MERGE (p1)-[:LIKES]->(p2);
        """
    )

接下來,將 PageRank 和 Louvain 社區(qū)檢測算法與 Python 結(jié)合使用,以確定網(wǎng)絡(luò)中哪些頁面最重要,并找到網(wǎng)絡(luò)中的所有社區(qū)。

PageRank 重要性分析

要識別 Facebook 數(shù)據(jù)集中的重要頁面,您將執(zhí)行 PageRank 。了解不同的 算法設(shè)置 這可以在調(diào)用 PageRank 時設(shè)置。

請注意,您還會發(fā)現(xiàn)MAGE中集成了其他算法。 Memgraph 應(yīng)該有助于在大規(guī)模圖形上運(yùn)行圖形分析。找到其他 Memgraph 教程 關(guān)于如何運(yùn)行這些分析。

MAGE被集成以簡化 PageRank 的執(zhí)行。以下查詢將首先執(zhí)行算法,然后創(chuàng)建每個節(jié)點的rank屬性,并將其設(shè)置為cugraph.pagerank算法返回的值。

然后,該屬性的值將另存為變量rank。請注意,這項測試(以及本文介紹的所有測試)是在 NVIDIA GeForce GTX 1650 Ti 和 Intel Core i5-10300H CPU 上執(zhí)行的,頻率為 2.50GHz ,內(nèi)存為 16GB ,并在大約四秒鐘內(nèi)返回結(jié)果。

 memgraph.execute(
        """
        CALL cugraph.pagerank.get() YIELD node,rank
        SET node.rank = rank;
        """
    )

接下來,使用以下 Python 調(diào)用檢索列組:

results =  memgraph.execute_and_fetch(
        """
        MATCH (n)
        RETURN n.id as node, n.rank as rank
        ORDER BY rank DESC
        LIMIT 10;
        """
    )
for dict_result in results:
    print(f"node id: {dict_result['node']}, rank: {dict_result['rank']}")

node id: 50493, rank: 0.0030278728385218327
node id: 31456, rank: 0.0027350282311318468
node id: 50150, rank: 0.0025153975342989345
node id: 48099, rank: 0.0023413620866201052
node id: 49956, rank: 0.0020696403564964
node id: 23866, rank: 0.001955167533390466
node id: 50442, rank: 0.0019417018181751462
node id: 49609, rank: 0.0018211204462452515
node id: 50272, rank: 0.0018123518843272954
node id: 49676, rank: 0.0014821440895415787

此代碼返回具有最高秩分?jǐn)?shù)的 10 個節(jié)點。結(jié)果以字典形式提供。

現(xiàn)在,是時候用可視化方法顯示結(jié)果了Memgraph 實驗室除了通過以下方式創(chuàng)建美麗的視覺效果外:D3.js和我們的圖形樣式腳本語言,您可以使用 Memgraph Lab 來:

Memgraph Lab 提供了各種預(yù)構(gòu)建的數(shù)據(jù)集,幫助您入門。在 Memgraph Lab 中打開執(zhí)行查詢視圖并運(yùn)行以下查詢:

MATCH (n)
WITH n
ORDER BY n.rank DESC
LIMIT 3
MATCH (n)<-[e]-(m)
RETURN *;

此查詢的第一部分將MATCH所有節(jié)點。查詢的第二部分將按rank的降序排列ORDER節(jié)點。

對于前三個節(jié)點,獲取連接到它們的所有頁面。我們需要WITH子句來連接查詢的兩個部分。

下一步是學(xué)習(xí)如何使用 Louvain 社區(qū)檢測來查找圖中存在的社區(qū)。

Louvain 的社區(qū)檢測

Louvain 算法測量社區(qū)內(nèi)節(jié)點的連接程度,與它們在隨機(jī)網(wǎng)絡(luò)中的連接程度進(jìn)行比較。

它還遞歸地將社區(qū)合并到單個節(jié)點中,并在壓縮圖上執(zhí)行模塊化聚類。這是最流行的社區(qū)檢測算法之一。

使用 Louvain ,您可以在圖中找到社區(qū)的數(shù)量。首先執(zhí)行 Louvain 并將 cluster_id保存為每個節(jié)點的屬性:

memgraph.execute(
    """
    CALL cugraph.louvain.get() YIELD cluster_id, node
    SET node.cluster_id = cluster_id;
    """
)

要查找社區(qū)的數(shù)量,請運(yùn)行以下代碼:

results =  memgraph.execute_and_fetch(
        """
        MATCH (n)
        WITH DISTINCT n.cluster_id as cluster_id
        RETURN count(cluster_id ) as num_of_clusters;
        """
    )
# we will get only 1 result
result = list(results)[0]

#don't forget that results are saved in a dict
print(f"Number of clusters: {result['num_of_clusters']}")

Number of clusters: 2664

接下來,仔細(xì)看看其中的一些社區(qū)。例如,您可能會發(fā)現(xiàn)屬于一個社區(qū)的節(jié)點,但連接到另一個屬于相反社區(qū)的節(jié)點。 Louvain 試圖最小化此類節(jié)點的數(shù)量,因此您不應(yīng)該看到很多節(jié)點。在 Memgraph Lab 中,執(zhí)行以下查詢:

MATCH  (n2)<-[e1]-(n1)-[e]->(m1)
WHERE n1.cluster_id != m1.cluster_id AND n1.cluster_id = n2.cluster_id
RETURN *
LIMIT 1000;

此查詢將顯示MATCH節(jié)點n1及其與其他兩個節(jié)點n2和m1的關(guān)系,分別包含以下部分:(n2)《-[e1]-(n1)和(n1)-[e]-》(m1)。然后,它將僅過濾出n1的那些節(jié)點WHERE、cluster_id,并且n2與節(jié)點cluster_id的m1不同。

為了簡化可視化,使用LIMIT 1000僅顯示 1000 個此類關(guān)系。

使用 圖形樣式腳本 在 Memgraph Lab 中,您可以設(shè)置圖形的樣式,例如,用不同的顏色表示不同的社區(qū)。

總結(jié)

現(xiàn)在,您可以使用 Memgraph 導(dǎo)入數(shù)百萬個節(jié)點和關(guān)系,并使用 cuGraph PageRank 和 Louvain graph 分析算法進(jìn)行分析。借助由 NVIDIA cuGraph 提供的 Memgraph 的 GPU 圖形分析功能,您可以探索海量圖形數(shù)據(jù)庫并進(jìn)行推理,而無需等待結(jié)果。

關(guān)于作者

Antonio Filipovi? 與 Memgraph 的解決方案團(tuán)隊合作。他擁有構(gòu)建基于云的解決方案和開發(fā)基于流的圖形分析算法的經(jīng)驗。作為一名學(xué)生,他幫助推出了 Memgraph Cloud 和 Memgraph 游樂場等產(chǎn)品。他還研究了基于流的圖機(jī)器學(xué)習(xí)算法。安東尼奧最近獲得了薩格勒布大學(xué)電氣工程與計算學(xué)院的計算機(jī)科學(xué)碩士學(xué)位。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5076

    瀏覽量

    103723
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4775

    瀏覽量

    129357
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85039
收藏 人收藏

    評論

    相關(guān)推薦

    革命性的圖形分析NVIDIA cuGraph 加速的下一代架構(gòu)

    在我們的 先前的圖分析探索 中,我們使用 NVIDIA cuGraph 揭示了 GPU-CPU 融合的變革力量。基于這些見解,我們現(xiàn)在引入了一種革命性的新架構(gòu),它重新定義了圖處理的邊界。 圖形
    的頭像 發(fā)表于 06-04 17:54 ?7651次閱讀
    革命性的<b class='flag-5'>圖形</b><b class='flag-5'>分析</b>: <b class='flag-5'>NVIDIA</b> <b class='flag-5'>cuGraph</b> 加速的下一代架構(gòu)

    大規(guī)模FPGA設(shè)計中的多點綜合技術(shù)

    大規(guī)模FPGA設(shè)計中的多點綜合技術(shù)
    發(fā)表于 08-17 10:27

    大規(guī)模特征構(gòu)建實踐總結(jié)

    背景一般大公司的機(jī)器學(xué)習(xí)團(tuán)隊,才會嘗試構(gòu)建大規(guī)模機(jī)器學(xué)習(xí)模型,如果去看百度、頭條、阿里等分享,都有提到過這類模型。當(dāng)然,大家現(xiàn)在都在說深度學(xué)習(xí),但在推薦、搜索的場景,據(jù)我所知,ROI并沒有很高,大家
    發(fā)表于 11-19 09:35

    大規(guī)模MIMO的利弊

    IEEE Transactions on Information Forensics and Security上的一篇論文探討了這種類型的攻擊。他們發(fā)現(xiàn),在某些情況下,當(dāng)使用大規(guī)模多入多出技術(shù)
    發(fā)表于 06-18 07:54

    大規(guī)模MIMO的性能

    軌跡產(chǎn)生的容量斜坡仍然比需求線平坦。面對此挑戰(zhàn),3GPP 標(biāo)準(zhǔn)實體近來提出了數(shù)據(jù)容量“到2020 年增長1000 倍”的目標(biāo),以滿足演進(jìn)性或革命性創(chuàng)意的需要。這種概念要求基站部署極大規(guī)模的天線陣
    發(fā)表于 07-17 07:54

    構(gòu)建大規(guī)模MIMO的難點在哪?

    構(gòu)建大規(guī)模MIMO的難點在哪?高功率硅開關(guān)的應(yīng)用案列分析
    發(fā)表于 03-11 07:05

    如何去推進(jìn)FTTH大規(guī)模建設(shè)?

    如何去推進(jìn)FTTH大規(guī)模建設(shè)?影響FTTH大規(guī)模建設(shè)的原因有哪些?
    發(fā)表于 05-27 06:58

    基于MATLAB的大規(guī)模電路分析

    基于MATLAB的大規(guī)模電路分析:介紹了用MATLAB軟件實現(xiàn)對大規(guī)模電路進(jìn)行節(jié)點分析的一種通用方法: 該方法可以實現(xiàn)輸入數(shù)據(jù)和計算結(jié)果的文件存儲,具有簡便、直觀、高效的特點。
    發(fā)表于 04-27 08:25 ?69次下載

    對于大規(guī)模系統(tǒng)日志的日志模式提煉算法的優(yōu)化

    提煉算法將大量的過往系統(tǒng)日志記錄縮減為少量的日志模式集合。然而隨著日志規(guī)模的增長以及messages日志文件的特殊性,原有的日志模式提煉算法已經(jīng)難以滿足對大規(guī)模日志快速處理的需要。介紹
    發(fā)表于 11-21 14:54 ?7次下載
    對于<b class='flag-5'>大規(guī)模</b>系統(tǒng)日志的日志模式提煉<b class='flag-5'>算法</b>的優(yōu)化

    求解大規(guī)模問題的協(xié)同進(jìn)化動態(tài)粒子群優(yōu)化算法

    隨著工程技術(shù)的發(fā)展與優(yōu)化問題數(shù)學(xué)模型的完善,許多優(yōu)化問題從低維優(yōu)化發(fā)展成高維的大規(guī)模復(fù)雜優(yōu)化,成為實值優(yōu)化領(lǐng)域的一個熱點問題.通過對大規(guī)模問題的特點分析,提出了隨機(jī)動態(tài)的協(xié)同進(jìn)化策略,將其加入動態(tài)
    發(fā)表于 12-14 15:48 ?1次下載
    求解<b class='flag-5'>大規(guī)模</b>問題的協(xié)同進(jìn)化動態(tài)粒子群優(yōu)化<b class='flag-5'>算法</b>

    大規(guī)模圖上的SimRank計算及研究分析

    大規(guī)模圖上的SimRank計算及研究分析
    發(fā)表于 06-07 16:05 ?13次下載

    基于綠色通信的大規(guī)模多MIMO天線選擇算法

    基于綠色通信的大規(guī)模多MIMO天線選擇算法
    發(fā)表于 07-02 11:45 ?24次下載

    使用NVIDIA DGX SuperPOD訓(xùn)練SOTA大規(guī)模視覺模型

    在這篇文章中,我們展示了在大規(guī)模人工智能超級計算機(jī)上訓(xùn)練 SOTA 大規(guī)模視覺 transformer 模型(如 VOLO \ u D5 )的主要技術(shù)和程序,如基于 NVIDIA DGX A100 的 DGX SuperPOD
    的頭像 發(fā)表于 05-30 10:17 ?2432次閱讀
    使用<b class='flag-5'>NVIDIA</b> DGX SuperPOD訓(xùn)練SOTA<b class='flag-5'>大規(guī)模</b>視覺模型

    NVIDIA聯(lián)合構(gòu)建大規(guī)模模擬和訓(xùn)練 AI 模型

    Champollion 超級計算機(jī)位于格勒諾布爾,由慧與和 NVIDIA 聯(lián)合構(gòu)建,它將為全球科學(xué)和工業(yè)領(lǐng)域的用戶創(chuàng)建大規(guī)模模擬和訓(xùn)練 AI 模型。
    的頭像 發(fā)表于 06-14 14:56 ?1877次閱讀

    NVIDIA NeMo最新語言模型服務(wù)幫助開發(fā)者定制大規(guī)模語言模型

    NVIDIA NeMo 大型語言模型(LLM)服務(wù)幫助開發(fā)者定制大規(guī)模語言模型;NVIDIA BioNeMo 服務(wù)幫助研究人員生成和預(yù)測分子、蛋白質(zhì)及 DNA
    發(fā)表于 09-22 10:42 ?942次閱讀
    百家乐官网博弈指| 顶级赌场官方直营| 广东百家乐官网扫描分析仪| 百家乐787| 安吉县| 百家乐里和的作用| 永利| 百家乐赢的技巧| 足球怎么赌| 百家乐官网线路图分析| 网上赌博| 百佬汇百家乐官网的玩法技巧和规则 | 悍马百家乐官网的玩法技巧和规则 | 澳门百家乐官网规律星期娱乐城博彩 | 悍马百家乐的玩法技巧和规则| 高清| 贵宾百家乐的玩法技巧和规则| 金公主百家乐官网现金网| 真人百家乐蓝盾娱乐平台| 网上百家乐官网骗人不| 百家乐五湖四海娱乐场开户注册| 澳门百家乐官网娱乐城送体验金| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 玩百家乐是否有技巧| 百家乐官网视频交友| 番禺百家乐电器店| 游戏百家乐官网庄闲| 百家乐平点| 百家乐官网变牌器批发| 顶级赌场连环夺宝ios下载| 关于阳宅风水24山知识| 化州市| 威尼斯人娱乐城金杯娱乐城| 赌博百家乐官网技术| 威尼斯人娱乐备用622| 乐享百家乐官网的玩法技巧和规则| 中国足球竞彩网| 玩百家乐秘诀| 百家乐官网赌博论坛在线| 申博娱乐城开户| 百家乐算点子打法攻略|