陳天奇:在深度學習框架之間共享張量——內存張量結構DLPack的PythonAPI來了

2021-03-02 新智元

來源:推特

編輯:keyu

【新智元導讀】DLPack是一種開放的內存張量結構,用於在框架之間共享張量,近日,開發者陳天奇更新社交媒體詳細介紹了為DLPack添加PythonAPI、語義和實現細節的內容。

大家知道DLPack嗎:

深度學習從業人員或多或少都會有了解,諸如 Tensorflow、PyTorch 等深度學習框架,確實為深度學習的快速原型設計和模型部署提供了強大的工具箱。

 

但是,不幸的是,它們的易用性通常以碎片化為代價

 

他們僅僅限於對每個框架單獨使用,如果對框架進行垂直整合,那麼開發流程可以適用於常見用例,但實際上,打破常規可能會是個非常棘手的問題。

 

一種解決的方法是,在內存中直接將張量從一個框架傳遞到另一個框架,而不發生任何數據複製或拷貝。

 

DLPack,就是張量數據結構的中間內存表示標準,它是一種開放的內存張量結構,用於在框架之間共享張量

 

它提供了一個簡單、可移植的內存數據結構:

DLPack使:

 

更容易包裝供應商級別的運營商實施,允許在引入新設備/操作時進行協作。對於最終用戶來說,這可以帶來更多的運營商,並且可以在框架之間混合使用。https://gitee.com/mirrors/DLPack此外,DLPack的開發者不打算實現Tensor和Ops,而是將其用作跨框架重用張量和操作的公共橋梁。此外,最近,DLPack的開發者陳天奇更新了一則Git,標題為:「為 DLPack 添加PythonAPI、語義和實現細節」,在其中討論了添加的詳細內容、以及要引用DLPack本身的什麼內容。同時,陳天奇還計劃將一些文檔導入DLPack,目前,DLPack沒有任何關於Python級API的文檔。https://github.com/data-apis/consortium-feedback/issues/1https://github.com/data-apis/array-api/pull/106



相關焦點

  • 來探尋深度學習框架的內部架構
    如果你在進程 B 改變張量,你會看到改動也會反映在進程 A 中,因為張量之間共享著同樣的存儲區域。DLPack:深度學習框架 Babel 的希望現在讓我們來看看 PyTorch 代碼庫最新的一些內容——DLPack(https://github.com/dmlc/dlpack)。DLPack 是一個內存張量結構的開放標準,允許張量數據在框架之間交換。
  • 深度學習中的張量方法(文末送福利)
    1、深度學習中的張量張量是所有深度學習框架中最核心的組件,因為後續的所有運算和優化算法都是基於張量進行的。
  • 張量解釋——深度學習的數據結構
    這將給我們知識,我們需要看看一些基本的張量屬性,這些屬性將用於深度學習中。這個系列前面部分是關於pytorch的安裝,相對簡單,這裡就先暫時不介紹了。後續如果有需要,或者為了系列的完整性會考慮補上神經網絡中的輸入、輸出和變換都是用張量表示的,因此,神經網絡編程大量使用張量。張量的概念是其他更具體概念的數學歸納。
  • 張量數據結構
    它廣泛應用於計算機視覺,自然語言處理等深度學習領域。是目前和TensorFlow分庭抗禮的深度學習框架,在學術圈頗受歡迎。它主要提供了以下兩種核心功能:1,支持GPU加速的張量計算。2,方便優化模型的自動微分機制。
  • MIT Taco項目:自動生成張量計算的優化代碼,深度學習加速效果提高...
    該系統的名字叫Taco,即「張量代數編譯器」的縮寫。在計算機科學上,類似亞馬遜的表格這樣的數據結構被稱為「矩陣」,張量只是一個矩陣的更高維的模擬。如果亞馬遜表格還將客戶和產品與亞馬遜網站上的客戶的產品評級以及產品評論中使用的字詞進行了對比,那麼這可以用四維張量來表示。Taco的殺手鐧:內核融合對張量的數學運算對於大數據分析和機器學習都是至關重要的問題。
  • 從零開始深度學習Pytorch筆記(2)——張量的創建(上)
    在該系列的上一篇文章中,王大偉老師幫助我們完整實現了Pytorch的cpu和gpu版本的安裝,如果你還沒有安裝Pytorch,戳這裡:從零開始深度學習Pytorch
  • 深度學習框架太抽象?其實不外乎這五大核心組件
    為了更好地認識深度學習框架,也為了給一些想要自己親手搭建深度學習框架的朋友提供一些基礎性的指導,日前來自蘇黎世聯邦理工學院計算機科學系的碩士研究生Gokula Krishnan Santhanam在博客上撰文,概括了大部分深度學習框架都會包含的五大核心組件,為我們詳細剖析了深度學習框架一般性的內部組織結構。以下由雷鋒網編譯。
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch是由Facebook公司開發的深度學習框架,其起源應該是Torch這個深度學習框架。Torch深度學習框架最初的開發可以追溯到2002年。相比使用Python語言作為深度學習框架前端的PyTorch,Torch使用了Lua語言作為深度學習框架的前端。由於機器學習的主流語言是Python,相比之下,Lua語言比較小眾。
  • 從張量到自動微分:PyTorch入門教程
    編者按:DataCamp的Sayak Paul帶你入門張量、PyTorch。在深度學習中,常常看到張量是數據結構的基石這一說法。
  • 教程| 深度學習初學者必讀:張量究竟是什麼?
    作者:Ted Dunning機器之心編譯參與:晏奇、吳攀今天很多現有的深度學習系統都是基於張量代數(tensor algebra)而設計的,但是張量代數不僅僅只能用於深度學習。本文對張量進行了詳細的解讀,能幫你在對張量的理解上更進一步。本文作者為 MapR Technologies 的首席應用架構師 Ted Dunning。
  • Facebook 發布開源框架 PyTorch, Torch 終於被移植到 Python 生態...
    這是由於 PyTorch 採用了動態計算圖(dynamic computational graph)結構,而不是大多數開源框架,比如 TensorFlow、Caffe、CNTK、Theano 等採用的靜態計算圖。雷鋒網(公眾號:雷鋒網)獲知,該技術從另一個 Python 的神經網絡框架——Chainer 那裡借用。
  • 王敏捷 - 深度學習框架這十年!
    強調了深度學習框架的重要性與推動因素,介紹了3位ACM人李沐、陳天奇和他一起將各自的技術Parameter Server、CXXNet、Minerva融合併創造了新的深度學習框架MXNet。敏捷學長也指出了在深度學習新時代,隨著可微分編程、圖神經網絡等新領域的出現以及專用晶片的發展,深度學習框架會迎來更多機遇與挑戰。深度學習的浪潮其實到現在僅僅發展了十幾年的時間。
  • ...Java工程師轉型AI的秘密法寶——深度學習框架Deeplearning4j...
    雷鋒網AI研習社按:深度學習是人工智慧發展最為迅速的領域之一,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源深度學習框架。目前研究人員使用的深度學習框架有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,而Deeplearning4j是為數不多以Java/JVM為基礎,能與Apache Spark無縫結合,支持CPU/GPU集群分布式計算的開源框架。本文就來為大家詳細介紹一下深度學習框架Deeplearning4j的重要組件,不同環境下的操作用法及實例分享。
  • TensorFlow 2.0 基礎:張量、自動求導與優化器
    不過你也可以通過加入dtype參數來自行指定類型,例如zero_vector = tf.zeros(shape=(2), dtype=tf.int32)將使得張量中的元素類型均為整數。張量的numpy()方法是將張量的值轉換為一個 NumPy 數組。
  • 深度學習框架中的「張量」不好用?也許我們需要重新定義Tensor了
    儘管張量在深度學習的世界中無處不在,但它是有破綻的。它催生出了一些壞習慣,比如公開專用維度、基於絕對位置進行廣播,以及在文檔中保存類型信息。這篇文章介紹了一種具有命名維度的替代方法 named tensor,並對其進行了概念驗證。這一改變消除了對索引、維度參數、einsum 式解壓縮以及基於文檔的編碼的需求。
  • Torch7 開源 PyTorch:Python 優先深度學習框架
    據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。PyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:如有需要,你也可以復用你最喜歡的 Python 軟體包(如 numpy、scipy 和 Cython)來擴展 PyTorch。
  • PyTorch進階之路(一):張量與梯度
    (神經網絡、CNN、RNN、GAN 等)本系列教程旨在讓用戶更好地利用 PyTorch 學習深度學習和神經網絡。本文將介紹 PyTorch 模型的基本構件:張量和梯度。系統設置本教程採用代碼優先的方法來學習 PyTorch,你應該嘗試自己運行和實驗代碼。
  • 「張量」?「纖維取向張量」?看得懂的都是專家
    如果它在同一個位置、從不同的方向上看,有不同的值,而且這個數恰好可以用矩陣乘觀察方向來算出來,就是張量。幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視為零階張量,矢量視為一階張量,那麼矩陣就是二階張量。張量的嚴格定義是利用線性映射來描述的。與矢量相類似,定義由若干坐標系改變時滿足一定坐標轉化關係的有序數組成的集合為張量。
  • 陳天奇:深度學習編譯技術的現狀和未來
    作者 | 陳天奇來源 | TVM社區https://zhuanlan.zhihu.com/p/65452090傳統的深度學習框架採用人工優化算子,然後建立運行時圖解釋器來解決內存分配調度等問題。深度學習編譯器技術路線一般指在優化過程中採用了自動或者半自動的代碼生成用以替代人工優化。深度學習編譯器無疑是最近非常熱門的話題。
  • 【深度學習】深度學習之Pytorch基礎教程!
    ,深度學習框架開始大量的出現。尤其是近兩年,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源的深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。