[論文閱讀] 人工智能 | 在非CUDA硬件上運行幾何學習:基于Intel Gaudi-v2 HPU的PyTorch框架移植實踐

在非CUDA硬件上運行幾何學習:基于Intel Gaudi-v2 HPU的PyTorch框架移植實踐

論文標題:PyTorch-based Geometric Learning with Non-CUDA Processing Units: Experiences from Intel Gaudi-v2 HPUs

arXiv:2507.01031 (cross-list from cs.LG)
PyTorch-based Geometric Learning with Non-CUDA Processing Units: Experiences from Intel Gaudi-v2 HPUs
Fanchen Bu, Kijung Shin
Comments: Conference paper: Accepted in Korea Computer Congress (KCC) 2025. The library is available at this https URL
Subjects: Machine Learning (cs.LG); Software Engineering (cs.SE)

研究背景:當圖學習遇上硬件新選擇

想象一下,我們生活在一個由"關系"構成的世界里:社交網絡中人與人的關注關系、化學分子中原子的連接方式、推薦系統中用戶與商品的互動記錄,這些都可以用"圖"這種數據結構來表示。而幾何學習,尤其是圖神經網絡(GNN),就像是一位擅長解讀這些關系的"翻譯官",能從圖數據中提取有價值的信息,在節點分類、鏈接預測等任務中大顯身手。

過去,Nvidia的CUDA顯卡就像幾何學習領域的"標準配置電腦",幾乎所有算法都為它優化。但隨著技術發展,我們有了新的"硬件選擇"——比如Intel的Gaudi HPU,它像一臺性價比更高的"新型電腦",在性能和能耗上表現亮眼。然而麻煩來了:原來為CUDA"定制"的軟件(如PyTorch幾何學習框架),在這臺"新電腦"上無法直接運行,需要我們當"系統工程師",解決兼容性問題。

創新點:為非CUDA硬件搭建"橋梁"

論文的獨特之處在于,它沒有僅僅停留在理論分析,而是動手打造了一套"跨平臺工具包":

  1. 核心操作重構:針對Gaudi HPU不支持的散射、稀疏索引等基礎操作,用PyTorch重新實現,就像為新硬件編寫"驅動程序"。

  2. 全流程實踐指南:提供16個手把手教程和11個真實案例,從環境搭建到模型訓練,覆蓋節點分類、點云分析等場景,相當于一份"新電腦使用說明書"。

  3. 問題診斷數據庫:記錄移植中遇到的錯誤(如RuntimeError)和解決方法,比如通過移除torch.compile解決兼容性問題,形成"故障排除手冊"。

研究方法和思路:三步拆解移植工程

第一步:識別"不兼容零件"

  • 發現torch-scatter(散射操作)、torch-sparse(稀疏矩陣)、torch-cluster(圖聚類)等庫不支持Gaudi HPU,就像發現新電腦無法識別舊軟件的安裝包。

第二步:打造"兼容適配器"

  • 散射操作:用純PyTorch函數重寫,比如通過索引聚合實現"散射相加",讓新硬件能執行基礎數據聚合。
  • 稀疏操作:將稀疏矩陣乘法轉換為散射操作,就像把"方言指令"翻譯成新硬件能聽懂的"普通話"。
  • 高級圖操作:先在CPU上計算k-NN搜索等任務,再把結果傳給Gaudi HPU,類似"分工合作"的工作模式。

第三步:編寫"使用教程"

  • 基于PyTorch Geometric官方教程,改編出從GCN基礎到點云分類的實操案例,每個例子都帶可運行代碼和錯誤分析,降低上手難度。

主要貢獻:讓非CUDA硬件"能用、好用"

  1. 降低硬件門檻:以前只有CUDA顯卡能高效運行幾何學習模型,現在研究人員用Gaudi HPU也能做實驗,節省成本且拓寬硬件選擇。

  2. 提供一站式資源:公開的GitHub倉庫整合了工具代碼、教程和故障解決方案,相當于一個"幾何學習跨平臺加油站",地址:https://github.com/NAVER-INTEL-Co-Lab/gaudi-geometric-learning。

  3. 推動跨平臺發展:為幾何學習算法在非CUDA硬件上的優化提供了基礎,就像為軟件跨平臺運行鋪好了道路。

總結

解決的主要問題

論文解決了Intel Gaudi-v2 HPU與PyTorch幾何學習框架的兼容性問題,通過重寫核心操作、提供實踐教程,讓非CUDA硬件能順利運行圖神經網絡模型,填補了現有庫對新興加速器支持的空白。

主要成果

  • 開發了Gaudi HPU兼容的散射、稀疏等操作工具集;
  • 整理了16個教程和11個案例,覆蓋從基礎到復雜的幾何學習任務;
  • 建立公開倉庫,分享移植經驗和故障解決方案,助力非CUDA硬件上的幾何學習研究。

一段話總結

本文聚焦于在Intel Gaudi-v2 HPU等非CUDA處理單元上運行基于PyTorch的幾何學習框架的實踐,介紹了開發的核心實用工具(如散射、稀疏索引、k近鄰等操作),提供了十六個引導教程和十一個真實案例,包含遇到的故障診斷分析及詳細解決方法,相關資源整合在公開的GitHub倉庫中,為研究人員在非CUDA硬件上實驗幾何學習算法和模型降低了門檻,為進一步優化和跨平臺可移植性奠定了基礎。


思維導圖

在這里插入圖片描述


詳細總結

一、研究背景與目標
  1. 幾何學習的重要性:幾何學習已成為建模非歐幾里得數據(尤其是圖結構數據)的強大范式,應用涵蓋社交網絡、分子結構、知識圖譜和推薦系統等領域。
  2. 硬件現狀:Nvidia支持CUDA的GPU在深度學習硬件領域占主導地位,但英特爾的Gaudi HPU等新興加速器在性能和能效方面具有競爭力。
  3. 面臨挑戰:使用此類非CUDA處理單元需要大量的工程工作和新穎的軟件適配,例如稀疏操作不支持、關鍵內核的反向傳播問題等。
  4. 研究目標:將基于PyTorch的幾何學習框架移植到Gaudi-v2 HPU,降低研究人員在非CUDA硬件上實驗幾何學習算法和模型的門檻。
二、核心貢獻
  1. 開發核心實用工具:恢復了Gaudi-v2 HPU上的基本操作,如散射、稀疏索引、k-最近鄰等。
  2. 提供豐富資源:整合了16個引導教程和11個真實世界的例子,并對遇到的故障進行了診斷分析,提供了詳細的解決方法。
  3. 建立公開倉庫:將所有經驗整合到一個公開的GitHub存儲庫中,為進一步優化和跨平臺可移植性提供了基礎。
三、GitHub存儲庫概述
部分內容詳情
文檔包含用戶友好的README,包括環境設置說明、在Gaudi上啟動作業的指導以及相關外部材料的鏈接
核心實用工具一套輔助模塊,旨在彌補現有庫的不足,支持在Gaudi上進行散射、稀疏索引和鄰域計算等操作,無需底層編程
教程和例子包含分步教程和實際例子,涵蓋從基本圖卷積網絡(GCN)構建到鏈接預測和點云分類等任務,每個都有可運行的代碼和對在Gaudi-v2上遇到的挑戰的分析
四、核心實用工具
  1. 散射操作
    • 挑戰:torch-scatter庫提供了CPU和CUDA后端的實現,但缺乏對Gaudi HPU的原生支持。
    • 解決方案:使用純PyTorch函數重新實現散射操作,確保與Gaudi-v2 HPU兼容。
  2. 稀疏操作
    • 挑戰:torch-sparse庫提供了CPU和CUDA后端的實現,但缺乏對Gaudi HPU的原生支持。
    • 解決方案:將幾個稀疏張量操作轉換為等效的散射操作,例如稀疏矩陣和密集矩陣之間的乘法可以通過基于散射的聚合重新實現。
  3. 高級圖操作
    • 挑戰:k-最近鄰(k-NN)搜索和METIS分區等高級圖操作缺乏對Gaudi HPU的支持。
    • 解決方案:提供在CPU上執行這些圖實用程序的指南和實現,然后將結果傳輸到Gaudi HPU進行進一步處理。
五、教程和例子
  1. 教程
    • GCN和GAT管道:涵蓋基本的圖卷積和注意力機制。
    • 嵌入和聚合函數:說明如何在Gaudi上高效實現和執行節點嵌入和聚合函數。
    • 圖池化和讀出:演示各種用于圖級表示學習和總結的技術。
    • DeepWalk和Node2Vec實踐:通過隨機游走介紹表示學習,強調用于下游任務的節點嵌入。
  2. 例子
    • 節點分類:使用基準數據集的分步工作流程,包括訓練和評估程序。
    • 鏈接預測:演示如何使用GNN建模實體之間的關系,包括推薦等任務的實際工作流程。
    • 用DGCNN進行點云分類:說明超越圖的幾何深度學習,特別是針對3D點云分類任務。
  3. 診斷分析
    • 記錄了將現有PyTorch幾何教程和例子適配到Gaudi-v2 HPU時遇到的各種兼容性問題,包括不支持的操作、意外的運行時錯誤和細微的數值不匹配,并提供了系統的調試過程和解決方法。
六、結論

本文展示了將基于PyTorch的幾何學習工作流適配到Intel Gaudi-v2 HPU的努力,通過開發核心實用工具彌補了功能差距,提供的教程和例子展示了在非CUDA硬件上的端到端GNN訓練,所有資源整合在公開倉庫中,降低了研究人員在替代加速器上探索圖神經網絡的門檻。


關鍵問題

  1. 問題:在Gaudi-v2 HPU上運行PyTorch幾何學習框架面臨的主要挑戰是什么?
    答案:主要挑戰包括現有庫(如torch-scatter、torch-sparse、torch-cluster)缺乏對Gaudi HPU的原生支持,導致散射操作、稀疏操作和高級圖操作(如k-NN搜索)無法直接使用,還存在反向傳播等問題。
  2. 問題:針對散射操作缺乏支持的問題,采取了什么解決方案?
    答案:使用純PyTorch函數重新實現了散射操作,確保與Gaudi-v2 HPU兼容,無需依賴原生不支持的torch-scatter庫。
  3. 問題:GitHub存儲庫中包含哪些主要部分來支持在Gaudi-v2 HPU上的幾何學習?
    答案:存儲庫包含三個主要部分,分別是文檔(提供環境設置、作業啟動等指導)、核心實用工具(實現散射、稀疏等操作)、教程和例子(涵蓋從基礎到實際應用的各種任務及代碼和分析)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89829.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89829.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89829.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python-多線程-threading

1 需求 2 接口 3 示例 4 參考資料 Python treading 模塊 | 菜鳥教程

2025年- H91-Lc199-- 62.不同路徑(多維動態規劃)--Java版

1.題目描述 2.思路 dp含義:代表到當前位置的路徑數 遞推公式:dp[i][j]dp[i-1][j]dp[i][j-1] dp數組初始化,我們要確保第一行和第一列是有值的. dp數組的遍歷順序:我們需要從左往右遍歷,從上往下遍歷。并且把第一行和第…

char 不是 Java 中的 2 字節(16 位)嗎? 為什么用 UTF-8 編碼寫入時,一個中文要占 3 個字節?

char 不是 Java 中的 2 字節(16 位)嗎? 為什么用 UTF-8 編碼寫入時,一個中文要占 3 個字節? ? 一、Java 中的 char 是什么? Java 的 char 是一個 固定大小的 2 字節(16 位)類型&am…

【Elasticsearch】檢索排序 分頁

檢索排序 & 分頁 1.測試數據準備2.排序功能2.1 簡單字段排序2.2 多字段排序2.3 日期排序 3.分頁功能3.1 基礎分頁3.2 深度分頁(不推薦大數據量使用)3.3 使用 search_after 進行高效分頁 4.綜合示例:高亮排序分頁5.實踐建議 1.測試數據準備…

Delta、Jackknife、Bootstrap

用班級平均身高的案例,展示 ?Delta、Jackknife、Bootstrap? 的完整計算過程。 ?0. 數據準備? ?原始數據(4個學生的身高)??: 真實均值(目標統計量)??: ?1. Delta 方法(公式…

企業智腦技術架構設計:緊貼企業場景規劃面向未來的發展趨勢與實現路徑

摘要 本文深入探討了企業智腦技術架構的設計理念與發展趨勢,分析了當前企業智能化轉型的技術需求與挑戰,提出了一個面向未來的企業智腦技術架構設計方案。文章從底層技術支撐、核心能力構建、應用場景適配、安全合規保障以及未來發展路徑五個維度展開論…

新手向:Python方向講解

從NASA火星任務到TikTok推薦算法,從自動化腳本到量子計算,Python用import antigravity重新定義了編程邊界 一、設計哲學:優雅明確的編程禪學 Python之禪(import this): 優美勝于丑陋(Beautifu…

Chrome谷歌瀏覽器插件ModHeader,修改請求頭,開發神器

文章目錄一、介紹與下載二、使用一、介紹與下載 ModHeader顧名思義就是讓我們可以自定義HTTP請求頭或者是重寫響應頭,包括新增請求頭/響應頭或者覆蓋Chrome瀏覽器設置的請求頭的默認值,同時還可以根據URL Pattern來只對特定網站生效。 有條件的同學可以…

SEW:無監督預訓練在語音識別中的性能-效率權衡

摘要 本文研究了自動語音識別(ASR)中預訓練模型的性能-效率權衡問題。我們聚焦于 wav2vec 2.0,并形式化了多種影響模型性能和效率的架構設計。基于所有觀察結果,我們提出了 SEW(Squeezed and Efficient Wav2vec&#…

linux系統部署express+vue項目

一、準備階段: 1、安裝linux上所需要的環境:npm nodejs nginx pm2 //安裝 npm(Node 包管理器) sudo apt install npm//判斷是否安裝成功 npm -v//安裝 Node.js(可以根據需要選擇版本) sudo apt inst…

PixiJS教程(004):點擊事件交互

1.6 事件交互實現要求:點擊寶劍,修改寶劍的顏色。1??實現代碼: // 為精靈添加交互事件 sprite.interactive true; sprite.on(click, () > {// 點擊精靈時,改變精靈的顏色sprite.tint Math.random() * 0xFFFFFF; });說明&am…

創客匠人助力家庭教育IP破局:從0到1打造創始人個人品牌全攻略

一、IP定位:細分賽道的精準錨定與用戶畫像構建 在家庭教育8000億市場規模的競爭中,創始人IP的差異化定位成為破局關鍵。創客匠人通過“標簽化定位”工具,幫助教育者鎖定垂直領域,如親子溝通、青春期教育等細分賽道。以景麗霞老師…

使用堅果云擴容Zotero同步空間的簡單快捷方法

本文介紹基于堅果云的WebDAV協議,用于文獻管理軟件Zotero的文件同步,從而實現Zotero存儲空間擴容的方法。 在之前的文章Zotero文獻管理軟件入門使用方法:軟件下載、文獻導入、引文插入(https://blog.csdn.net/zhebushibiaoshifu/a…

Java啟動腳本

Java啟動腳本 編寫代碼,然后打包 Java-1.0-SNAPSHOT.jar public class test {public static void main(String[] args) {System.out.println("Hello IDEA");} }編寫運行腳本 #!/bin/sh WORKDIR$(cd $(dirname $0); pwd) cd $WORKDIRexport JAVA_OPTS"…

VSCode使用ssh遠程連接阿里云

1. 終端選擇 Windows使用PowerShell Ubuntu和Mac使用Terminal 2. 設置ssh 2.1. 第一臺電腦 生成密鑰 ssh-keygen -o -t rsa -b 4096 -C "emailexample.com" 按三次回車 查看密鑰 cat ~/.ssh/id_rsa.pub 拷貝密鑰,粘貼到服務器的密鑰框中 2.2. 第…

XLSR-Wav2Vec2:用于語音識別的無監督跨語言表示學習

摘要 本文提出了 XLSR,該方法通過從多種語言的原始語音波形中預訓練單個模型,以學習跨語言的語音表示。我們基于 wav2vec 2.0 構建模型,該方法通過對掩蔽后的潛在語音表示解決對比任務進行訓練,并聯合學習在多種語言之間共享的潛…

圖靈完備之路(數電學習三分鐘)----數據選擇器與總線

1.數據選擇器之前我們學習了邏輯與算數的計算,得知兩個數字之間的加減和與或的結果是不同的,而一個通用的數字電路不可能只有一個功能,所以我們將在本節引入電路選擇器這一“器件”,來實現對兩個輸入的運算方式的選擇,…

Linux下如何設置CUDA的路徑

今天遇到一個關于CUDA的問題,我要跑的深度學習代碼,他里面有cuda編程,需要編譯。但是你運行就報錯。 代碼提示我大段報錯。 (score-denoise) ubuntuGPUA10002:~/wbd/score-denoise_Transformerdepth20$ python train.py Detected CUDA fil…

js樹的排序

樹 樹的前中后序遍歷 樹是一種重要的非線性數據結構,尤其是二叉樹。二叉樹的遍歷是操作樹的基礎,主要有前序遍歷、中序遍歷和后序遍歷三種方式。 前序遍歷 訪問順序:根結點 -> 左子樹 -> 右子樹。 遍歷規則:首先訪問根結…

解碼 Red Stuff:Walrus 高效可靠存儲的引擎

Red Stuff 是 Walrus 所采用的二維(2D)糾刪碼協議,定義了數據如何被編碼和存儲。它是實現高效、安全、且高可用的去中心化存儲的關鍵。通過 Red Stuff,Walrus 成功解決了去中心化存儲系統常見的三大難題:安全性、復制效…