清華開源Jittor:首個國內高校自研深度學習框架,一鍵轉換PyTorch

2020-12-10 機器之心Pro

機器之心報導

機器之心編輯部

繼 Theano、Caffe 之後,又一個由高校主導的深度學習框架開源了,而且還是國產。

深度學習框架越來越多,主導的團隊也從高校研究機構漸漸轉向了科技巨頭。但是,學界在這一領域的力量不容忽視。今日。清華大學開發了一個名為計圖(Jittor)的深度學習框架。這一框架有望為深度學習社區提供新的方案,也能夠推動深度學習框架國產化的進程。

據悉,計圖(Jittor:Just in Time)是一個採用元算子表達神經網絡計算單元、完全基於動態編譯(Just-in-Time)的深度學習框架,其主要特性為元算子和統一計算圖。

據官網介紹說:「研究團隊將神經網絡所需的基本算子定義為元算子」,元算子非常底層,通過相互融合可以完成複雜的深度學習計算,體現出了易於使用的特點。並且研發團隊表示,採用元算子的 Jittor 已超越 Numpy,能夠實現更複雜更高效的操作。

而另一層面,統一計算圖則是融合了靜態計算圖和動態計算圖的諸多優點,在易於使用的同時,提供高性能的優化。基於元算子開發的深度學習模型,可以被計圖實時地自動優化並且運行在指定的硬體上,如 CPU、GPU。

目前 Jittor 已開源,用戶可以採用 pip 等方法下載使用。

Jittor 官網:https://cg.cs.tsinghua.edu.cn/jittor/

項目地址:https://github.com/Jittor/jittor

即時、易用、可定製:實現和優化分離的框架

據官網介紹,Jittor 在設計時秉持易用、靈活、即時的設計理念:

易用且可定製:只需要數行代碼,就可定義新的算子和模型。實現與優化分離:可以通過前端接口專注於實現,而實現自動被後端優化。所有都是即時的:Jittor 的所有代碼都是即時編譯並且運行的,包括 Jittor 本身。用戶可以隨時對 Jittor 的所有代碼進行修改,並且動態運行。Jittor 作為全新的深度學習框架,有幾大新特性值得關注。首先,Jittor 採用了元算子的概念,將各種基本計算定義為元算子,並通過結合不同元算子,實現深度學習中的各項算子功能。

元算子融合。

其次,在算子的設置上,團隊將元算子的反向傳播進行了閉包,即元算子的反向傳播也是元算子。這樣避免了重複開發。此外,還支持計算任意高階導數。

高階導數及反向傳播閉包。

然後,在程式語言上,Jittor 採用了靈活而易用的 Python。用戶可以使用它,編寫元算子計算的 Python 代碼,然後 Jittor

將其動態編譯為 C++,實現高性能。

算子動態編譯。

更重要的是,Jittor 內置了優化編譯遍(complier pass)功能,和 LLVM 兼容。優化過程會根據運行的硬體而定,以下為已支持的優化編譯遍。

自動優化。

在內存管理上,CPU 和 GPU 內存統一管理。GPU 內存不夠的時候會調用 GPU。

統一內存管理。

而在接口方面,Jittor 同時提供了同步和異步接口,切換不會造成性能損失。從而帶來了易用性和高效率。

高效同步異步接口。

最後值得注意的是,為了幫助 Jittor 的發展,並吸收優秀框架的特性。Jittor 採用了和 PyTorch 相似的模塊化接口,並有輔助轉換腳本,還有和 PyTorch 一樣的 Numpy+pickle 協議,使得兩者的模型可以互相加載和使用。

模型遷移。

有了如此眾多的特性,估計用來寫模型會有非常好的體驗。此外,Jittor 使用 Python 和 C ++編寫,也支持 GPU 與 CUDA。

測評結果

Jittor 的性能如何,官方也提供了測評結果進行參考。目前 ResNet、VGG、SSD、DeepLab、LSGAN 等多個網絡模型已經在 Jittor 平臺實現,可供用戶使用。與同類型框架相比,Jittor 在收斂精度一致情況下,推理速度取得了 10%-50% 的性能提升。

示例代碼

Jittor 前端語言為 Python。前端使用模塊化的設計,類似於 PyTorch,Keras,後端則使用高性能語言編寫,如 CUDA,C++。Jittor 官網目前已提供了示例代碼,我們可以來分析一下。

下面的代碼演示了如何一步一步使用 Python 代碼,從頭對一個雙層神經網絡建模。

import jittor as jtfrom jittor import Modulefrom jittor import nnclass Model(Module):def __init__(self):self.layer1 = nn.Linear(1, 10)self.relu = nn.Relu()self.layer2 = nn.Linear(10, 1)def execute (self,x) :x = self.layer1(x)x = self.relu(x)x = self.layer2(x)return xdef get_data(n): # generate random data for training test.for i in range(n):x = np.random.rand(batch_size, 1)y = x*xyield jt.float32(x), jt.float32(y)model = Model()learning_rate = 0.1optim = nn.SGD(model.parameters(), learning_rate)for i,(x,y) in enumerate(get_data(n)):pred_y = model(x)loss = ((pred_y - y)**2)loss_mean = loss.mean()optim.step (loss_mean)print(f"step {i}, loss = {loss_mean.data.sum()}")

以上為實現一個簡單的全連接神經網絡的代碼。可以看到,類似於 PyTorch,只需要導入包,採用類繼承的方式定義模型、數據處理(分批等)方式,並設置訓練循環即可。從上手難度來看,熟悉 PyTorch 的用戶可以直接上手,甚至沒有因為變量名不同而帶來影響。

研究團隊

據官網介紹,Jittor 的開發團隊來自清華大學計算機系的圖形學實驗室,實驗室負責人為胡事民教授。

該實驗室成立於 1998 年 3 月,2007 年發展成為清華大學可視媒體研究中心,2010 年獲批成為北京市工程技術研究中心,同年和騰訊公司合作成立清華-騰訊網際網路創新技術聯合實驗室,並於 2018 年,成立北京信息科學與技術國家研究中心下的可視媒體智能計算團隊。目前有教授 2 名、副教授 3 名、助理研究員 1 名、博士後 4 名和研究生 50 多名。

Jittor 項目的主要研發主力為實驗室的梁盾、楊國燁、楊國煒和周文洋等等博士生,此外該項目也得到了清華-騰訊聯合實驗室的資助和支持。

相關焦點

  • 深度學習框架搭建之PyTorch
    深度學習框架搭建之PyTorchPyTorch 簡介PyTorch 是由 Facebook 推出,目前一款發展與流行勢頭非常強勁的深度學習框架。PyTorch 與 NumPy 非常相似,可以說是它的替代者,支持 GPU 加速運算,用來搭建和訓練深度神經網絡。如果學習過 NumPy 以及常見的深度學習概念(如卷積層,循環層等),非常容易上手PyTorch。目前主流的深度學習框架主要有 TensorFlow,PyTorch,mxnet,caffe和Keras 等。
  • 清華自研深度學習框架「計圖」開源!多項任務性能超過PyTorch
    值得一提的是,這也是首個來自中國高校科研機構的開源深度學習框架,之前,業內來自「高校」的還有加拿大蒙特婁大學的Theano,UC伯克利的Caffe。與主流的深度學習框架TensorFlow、Pytorch不同,Jittor是一個完全基於動態編譯(Just-in-time)、使用元算子和統一計算圖的深度學習框架。
  • 最全面的深度學習框架pytorch搭建過程
    深度學習一直是比較熱門的話題,在動手學習之前,需要搭建深度學習框架,如pytorch、TensorFlow、caffe、mxnet等。
  • 【深度學習】深度學習之Pytorch基礎教程!
    ,深圳大學隨著深度學習的發展,深度學習框架開始大量的出現。尤其是近兩年,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源的深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。
  • Keras vs PyTorch:誰是第一深度學習框架?
    【IT168 資訊】「第一個深度學習框架該怎麼選」對於初學者而言一直是個頭疼的問題。本文中,來自 deepsense.ai 的研究員給出了他們在高級框架上的答案。在 Keras 與 PyTorch 的對比中,作者還給出了相同神經網絡在不同框架中性能的基準測試結果。
  • 清華自研深度學習框架「計圖」開源!多項任務性能超過PyTorch
    值得一提的是,這也是首個來自中國高校科研機構的開源深度學習框架,之前,業內來自「高校」的還有加拿大蒙特婁大學的Theano,UC伯克利的Caffe。與主流的深度學習框架TensorFlow、Pytorch不同,Jittor是一個完全基於動態編譯(Just-in-time)、使用元算子和統一計算圖的深度學習框架。
  • 深度學習之Pytorch基礎教程!
    作者:李祖賢,Datawhale高校群成員,深圳大學隨著深度學習的發展
  • Torch7 開源 PyTorch:Python 優先深度學習框架
    據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。PyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:如有需要,你也可以復用你最喜歡的 Python 軟體包(如 numpy、scipy 和 Cython)來擴展 PyTorch。
  • 深度學習大講堂之pytorch入門
    ,他們也一直在支持一些開源的深度學習框架,有 TensorFlow 、Pytorch、Caffe、Theano、Keras等。這其中,TensorFlow和Pytorch佔據了深度學習的半壁江山。今天小天就帶大家從數據操作、自動求梯度和神經網絡設計的pytorch版本三個方面來入門pytorch。
  • 重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架
    據官網介紹,PyTorch 是一個 Python 優先的深度學習框架,能夠在強大的 GPU 加速基礎上實現張量和動態神經網絡。官網:http://pytorch.orgGitHub:https://github.com/pytorch/pytorchPyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:使用強大的 GPU 加速的 Tensor 計算(類似 numpy)構建於基於 tape 的 autograd 系統的深度神經網絡如有需要,你也可以復用你最喜歡的
  • 在Linux系統中安裝深度學習框架Pytorch
    設為星標才不會錯過哦     你好呀 我是然怡這篇推文是兩個月前復現深度學習論文時做的筆記一系列的筆記做了好幾篇看著閱讀量很低就沒有再發公眾號很久沒有推文了前幾天對公眾號進行了小改「然怡乾貨鋪」改為「水文sw」頭像也是換了的
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • PyTorch為何如此高效好用?來探尋深度學習框架的內部架構
    作為 Facebook 人工智慧團隊(FAIR)提供支持的深度學習框架,PyTorch 自 2017 年 1 月推出以來立即成為了一種流行開發工具。其在調試、編譯等方面的優勢使其受到了學界研究者們的普遍歡迎。本文中,來自蒙特婁綜合理工學院的研究員 Christian S.
  • Caffe2代碼全部併入PyTorch:深度學習框架格局劇震
    昨日,Caffe2 的 Github 頁面突然出現了一個「巨大的改動」:Caffe2 開原始碼正式併入 PyTorch,至此,Facebook 主力支持的兩大深度學習框架已合二為一。這兩大框架,在整個深度學習框架格局中都極受關注。
  • 「決戰紫禁之巔」之深度學習框架篇:Keras VS PyTorch
    一年前,機器之心就曾做過此方面的探討:《Keras vs PyTorch:誰是「第一」深度學習框架?》。現在PyTorch已經升級到1.x版本,而Keras也在進一步發展,情況發生了怎樣的變化呢?本文從四個方面對Keras和PyTorch各自的優劣勢做了進一步詳述,相信讀者會對如何選擇適合自己的框架有更清楚的認知。
  • 掌握深度學習,為什麼要用 PyTorch、TensorFlow 框架?
    另一方面,在某些情況下,深度學習或深度遷移學習可以幫助你訓練更準確的模型。在這些情況下,你可以考慮使用PyTorch和TensorFlow,特別是如果你所需的訓練模型與其中一個框架模型庫中的模型類似。PyTorchPyTorch建立在舊版的Torch和Caffe2框架之上。
  • 深度學習框架如何選?4大場景對比Keras和PyTorch
    本文對比了Keras和PyTorch四個方面的不同,讀者可以針對自己的任務來選擇。對於許多科學家、工程師和開發人員來說,TensorFlow是他們的第一個深度學習框架。但indus.ai公司機器學習工程師George Seif認為,TF並不是非常的用戶友好。相比TF,Seif認為Keras和PyTorch比TensorFlow更易用,已經獲得了巨大的普及。
  • PYTORCH與TENSORFLOW:哪種框架最適合您的深度學習項目?
    作者:王抒偉  編輯:王抒偉如果您正在閱讀本文,則可能已經開始了深度學習的旅程
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智慧。本文將手把手帶你快速搭建你自己的深度學習環境,然後實現自己的第一個深度學習程序。野蠻智能,小白也能看懂的人工智慧。精講深度學習RNN三大核心點,三分鐘掌握循環神經網絡進行簡單了解。下面進入實戰環節。
  • 深度學習自救指南(一)| Anaconda、PyTorch的下載和安裝
    在我們進行深度學習的過程中,離不開Anaconda環境和PyTorch深度學習框架。