色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Memgraph和NVIDIA cuGraph算法運行大規模圖形分析

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

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

PageRank (圖形分析)

Louvain (社區檢測

平衡切割(聚類)

光譜聚類(聚類)

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

萊頓(社區檢測)

Katz Centrality

中間性和中心

教程將向您展示如何使用 PageRank 圖分析和 Louvain 社區檢測來分析包含 130 萬關系的 Facebook 數據集。

在本教程結束時,您將知道如何:

使用 Python 在 Memgraph 中導入數據

在大規模圖形上運行分析并獲得快速結果

從 Memgraph 在 NVIDIA GPU 上運行分析

教程先決條件

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

碼頭工人 用于運行mage-cugraph映像

朱皮特 為了分析圖形數據

煉金術 將 Memgraph 與 Python 連接

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

下一節將指導您為本教程安裝和設置這些工具。

碼頭工人

Docker 用于安裝和運行mage-cugraph Docker 映像。設置和運行 Docker 映像涉及三個步驟:

下載 Docker

下載教程數據

運行 Docker 映像,使其能夠訪問教程數據

1.下載 Docker

您可以通過訪問安裝 Docker 網頁,并按照操作系統的說明操作。

2.下載教程數據

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

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

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

3.運行 Docker 鏡像

現在,您可以使用以下命令運行 Docker 鏡像并將車間數據裝載到/samples文件夾:

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

運行 Docker 容器時,您應該會看到以下消息:

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

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

Jupyter 筆記本

現在 Memgraph 已經運行,請安裝 Jupyter.本教程使用 JupyterLab,您可以使用以下命令安裝它:

pip install jupyterlab

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

jupyter lab

煉金術

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

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

pip install gqlalchemy

Memgraph 實驗室

您需要安裝的最后一個先決條件是: Memgraph 實驗室 連接到 Memgraph 后,您將使用它創建數據可視化。學 如何安裝 Memgraph 實驗室 作為操作系統的桌面應用程序。

安裝 Memgraph Lab 后,您現在應該 連接到 Memgraph 數據庫 。

此時,您終于準備好:

使用 GQLAlchemy 連接到 Memgraph

導入數據集

在 Python 中運行圖形分析

使用 GQLAlchemy 連接到 Memgraph

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

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

從 CSV 文件導入數據集。

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

導入數據

這個 Facebook 數據集 由八個 CSV 文件組成,每個文件具有以下結構:

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

每條記錄表示連接兩個節點的邊。節點表示頁面,它們之間的關系是相互的。

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

由于 Memgraph 在數據具有索引時導入查詢速度更快,因此在id屬性上使用標簽Page為所有節點創建查詢。

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

Docker 已經擁有對本教程中使用的數據的容器訪問權限,因此您可以通過./data/facebook_clean_data/文件夾中的本地文件進行列表。通過連接文件名和/samples/文件夾,可以確定它們的路徑。使用連接的文件路徑將數據加載到 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 社區檢測算法與 Python 結合使用,以確定網絡中哪些頁面最重要,并找到網絡中的所有社區。

PageRank 重要性分析

要識別 Facebook 數據集中的重要頁面,您將執行 PageRank 。了解不同的 算法設置 這可以在調用 PageRank 時設置。

請注意,您還會發現MAGE中集成了其他算法。 Memgraph 應該有助于在大規模圖形上運行圖形分析。找到其他 Memgraph 教程 關于如何運行這些分析。

MAGE被集成以簡化 PageRank 的執行。以下查詢將首先執行算法,然后創建每個節點的rank屬性,并將其設置為cugraph.pagerank算法返回的值。

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

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

接下來,使用以下 Python 調用檢索列組:

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

此代碼返回具有最高秩分數的 10 個節點。結果以字典形式提供。

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

  • 查詢圖形數據庫并用 Python 或 C ++甚至 Rust 編寫圖形算法
  • 檢查 Memgraph 數據庫日志
  • 可視化圖形模式

Memgraph Lab 提供了各種預構建的數據集,幫助您入門。在 Memgraph Lab 中打開執行查詢視圖并運行以下查詢:

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

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

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

下一步是學習如何使用 Louvain 社區檢測來查找圖中存在的社區。

Louvain 的社區檢測

Louvain 算法測量社區內節點的連接程度,與它們在隨機網絡中的連接程度進行比較。

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

使用 Louvain ,您可以在圖中找到社區的數量。首先執行 Louvain 并將 cluster_id保存為每個節點的屬性:

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

要查找社區的數量,請運行以下代碼:

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

接下來,仔細看看其中的一些社區。例如,您可能會發現屬于一個社區的節點,但連接到另一個屬于相反社區的節點。 Louvain 試圖最小化此類節點的數量,因此您不應該看到很多節點。在 Memgraph Lab 中,執行以下查詢:

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

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

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

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

總結

現在,您可以使用 Memgraph 導入數百萬個節點和關系,并使用 cuGraph PageRank 和 Louvain graph 分析算法進行分析。借助由 NVIDIA cuGraph 提供的 Memgraph 的 GPU 圖形分析功能,您可以探索海量圖形數據庫并進行推理,而無需等待結果。

關于作者

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

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4978

    瀏覽量

    102987
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4729

    瀏覽量

    128890
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627
收藏 人收藏

    評論

    相關推薦

    革命性的圖形分析NVIDIA cuGraph 加速的下一代架構

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

    大規模FPGA設計中的多點綜合技術

    大規模FPGA設計中的多點綜合技術
    發表于 08-17 10:27

    大規模特征構建實踐總結

    背景一般大公司的機器學習團隊,才會嘗試構建大規模機器學習模型,如果去看百度、頭條、阿里等分享,都有提到過這類模型。當然,大家現在都在說深度學習,但在推薦、搜索的場景,據我所知,ROI并沒有很高,大家
    發表于 11-19 09:35

    大規模MIMO的利弊

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

    大規模MIMO的性能

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

    構建大規模MIMO的難點在哪?

    構建大規模MIMO的難點在哪?高功率硅開關的應用案列分析
    發表于 03-11 07:05

    如何去推進FTTH大規模建設?

    如何去推進FTTH大規模建設?影響FTTH大規模建設的原因有哪些?
    發表于 05-27 06:58

    基于MATLAB的大規模電路分析

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

    對于大規模系統日志的日志模式提煉算法的優化

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

    求解大規模問題的協同進化動態粒子群優化算法

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

    大規模圖上的SimRank計算及研究分析

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

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

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

    使用NVIDIA DGX SuperPOD訓練SOTA大規模視覺模型

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

    NVIDIA聯合構建大規模模擬和訓練 AI 模型

    Champollion 超級計算機位于格勒諾布爾,由慧與和 NVIDIA 聯合構建,它將為全球科學和工業領域的用戶創建大規模模擬和訓練 AI 模型。
    的頭像 發表于 06-14 14:56 ?1826次閱讀

    NVIDIA NeMo最新語言模型服務幫助開發者定制大規模語言模型

    NVIDIA NeMo 大型語言模型(LLM)服務幫助開發者定制大規模語言模型;NVIDIA BioNeMo 服務幫助研究人員生成和預測分子、蛋白質及 DNA
    發表于 09-22 10:42 ?913次閱讀
    主站蜘蛛池模板: 极品少妇高潮啪啪无码吴梦 | 2012中文字幕在线动漫电影| 色偷偷7777www| 欧美一区二区三区免费播放| 久久精品熟一区二区三区| 国产精品无码麻豆放荡AV| 成人精品亚洲| ae58老司机福利| 91进入蜜桃臀在线播放| 在线免费中文字幕| 亚洲一区乱码电影在线| 亚洲不卡视频在线观看| 天天射天天爱天天干| 日韩亚洲视频一区二区三区| 人妻插B视频一区二区三区| 啪啪漫画无遮挡全彩h网站| 欧美国产影院| 欧洲亚洲精品A片久久99果冻| 强壮的公次次弄得我高潮韩国电影| 美女胸被男子强捏视频| 女人和男人插曲视频大全| 欧美日韩精品一区二区三区高清视频| 美女扒开尿口直播| 欧美 亚洲综合在线一区| 妙玉被肉干高H潮文| 欧美高清videos 360p| 人人干人人爽| 香蕉59tv视频| 中文无码不卡的岛国片国产片| 97超碰97资源在线观看| 不用播放器的黄| 国产精品久久久久影院色| 久久99re2在线视频精品| 暖暖视频免费观看高清完整版 | 成人亚洲乱码在线| 国产一卡 二卡三卡四卡无卡乱码视频 | 一品道门在线视频| aaaaaaa一级毛片| 国产精品免费小视频| 六月婷婷国产精品综合| 日本熟妇乱人伦A片精品软件|