今日上午,清华大学发布中国首个高校自研深度学习训练框架—计图Jittor
在百度狂推PaddlePaddle框架,以及曠視計劃本月25日發布自研深度學習訓練框架MegEngine之際,清華大學突然發布首個中國高校自研深度學習框架Jittor,中文名為計圖。
官網鏈接?https://cg.cs.tsinghua.edu.cn/jittor/
Github鏈接?https://github.com/Jittor/jittor
如果把深度學習框架的發展比作春秋戰國,那2018年前可以算作春秋時代,其中既有早期的Torch(2002年)、 Theano(2007年),又有2012年深度學習的轉折年之后的Caffe(2013年)、Deeplearning4J(2014年)、Keras(2015年)、TensorFlow(2015年)、MXNet(2015年)、日本創業公司的Chainer(2015年)、微軟CNTK(2016年)、百度PaddlePaddle(2016年)、Caffe2(2017年)、PyTorch(2017年)等,甚至還有依附于這些框架的微框架——FastAI、TFLayer(Keras也算),種種深度學習框架層出不窮,烽煙四起。
但是,自2018年以后,深度學習可以說是步入了戰國時期,強國開始不斷侵蝕弱國的地盤,以至于今天形成了PyTorch和TensorFLow兩強稱霸的格局。曾經的霸主Caffe逐漸勢微,但在工業界還有一席之位,Keras基本融入進了TensorFlow,Chainer宣布改旗易幟到PyTorch,Caffe2也融合進了PyTorch,MXNet雖然寫的教材很棒,開源的模型也不少,但是仍舊不慍不火。另外,還有國產的PaddlePaddle,最近在各大公眾號砸錢推廣其Detection框架、Server部署框架、AI studio等,仍在向強國奮勇邁進。
曠視也預計本月25日發布其MegEngine訓練框架,會同時開源多個模型示例,加入國產訓練框架之爭。沒想到,半路突然殺出個程咬金,清華大學今日突然發布了國內首個高校研發的深度學習框架Jittor。
首先介紹一下Jittor的開發團隊,該團隊來自清華大學計算機系的圖形學實驗室,實驗室負責人為胡事民教授,主要研發主力為實驗室的梁盾、楊國燁、楊國煒和周文洋等博士生。
1
Jittor基本組成
根據Jittor官網的介紹,該框架是一個完全基于動態編譯的框架,主要有兩大核心部分:元算子和統一計算圖。
元算子是基本的運算單元,也就是我們常說的OP,作者稱元算子和Numpy一樣易用,還超越了Numpy能夠實現更復雜高效的操作。基本的元算子 可以融合成卷積、池化、BN等算子。下面是從元算子,到基本深度學習單元,再到模型的結構圖。(有沒有感覺這個圖顯得比較古老,有點類似10年前自動化系統的介紹圖~)
Jittor內置的元算子編譯器,可以的將Python編寫的算子,動態編譯成C++代碼。
統一計算圖則融合了靜態圖和動態圖的優點,易于使用,可以高效的將模型優化到CPU、GPU等硬件上。
Jittor內置的編譯器,與LLVM兼容,會根據硬件,自動動態編譯代碼,對C++代碼進一步優化,生成對底層硬件更友好的底層算子。
Jittor一個比較創新的地方是,其統一管理GPU顯存和內存,當顯存耗盡時,可以轉到內存。這樣大家就不用擔心顯卡的那區區8~12G顯存不夠用了。但是主板內存的效率,相比顯存下降多少,需要測試比較。
根據介紹,我們看到,相比各種國產的套個殼子的芯片或者操作系統,Jittor在底層還是有一定的創新的。
2
前端使用
Jittor后端使用CUDA、C++編譯,但前端是Python。前端則非常類似于PyTorch。由于參數保存和數據傳輸與PyTorch一樣,都是用Numpy和Pickle格式,Jittor甚至可以直接加載PyTorch的模型。厲害了吧~
下面是一個兩層的全連接網絡的搭建和訓練示例,相信會用PyTorch的同學,直接import jittor as torch 就可以無縫切換使用了。這個真不是玩笑~
好像相比PyTorch,唯一的不同就是不需要loss.backward() ,可以說真的基本無縫遷移啊。
Jittor還貼心的給出了PyTorch的轉換腳本。筆者想說,這個轉換真的是容易呀,雖然他們后臺不一樣,但是臉,簡直就是雙胞胎一對啊。所以大家從PyTorch轉過來,簡直沒有學習成本。
關于安裝等信息,大家可以去官網查看,這里不再贅述。
3
模型示例
可以說,一個框架能不能火,除框架本身的易用性外,其官方例子,以及開發者是否積極貢獻代碼,都對一個框架的發展有重要影響。這不,百度Paddle團隊就瘋狂的實現了各種模型,基本上只要TensorFlow有的,Paddle都會搞一套。
Jittor在上午也同步開源了SSD、DeepLabV3+、LSGAN的完整示例。
基本概念:Op, Var
元算子:通過元算子實現自己的卷積層
自定義算子:使用C++和CUDA編寫您的算子,并其進行即時編譯
示例1:線性回歸
示例2:MNIST圖像分類
示例3:圖像生成之 LSGAN
示例4:語義分割之 DeepLabV3+
示例5:目標檢測之 SSD
在其實現的VGG16作為Backbone的SSD中,在Pascal數據集上,Jittor的mAP甚至還高千分之一,其推理速度相比PyTorch要快10~50%.
筆者大致看了一下其實現的DeepLabV3+和SSD,寫的還是非常好的,初學者可以參考一下它的代碼結構。
4
總結
總體來說,Jittor在后端還是下了一番功夫的,其前端也保持和PyTorch基本一模一樣的接口,保證了前端的易用性,方便開發者遷移。
不過,在深度學習框架的戰國時期,各個訓練框架的基本功能單元都很相似,甚至有ONNX這種通用格式,或許訓練框架會越來越走向大一統,現在看來PyTorch是風頭正盛, TensorFlow也不甘人后,Paddle也在花重金推廣。在部署方面,TensorRT、OpenVINO和TVM也基本形成三國鼎力之勢,Jittor能否殺出重圍,大家可以在評論區發表一下您的看法。
不管怎么說,國貨當自強。雖然Caffe、MXNet、TVM都是中國人主導開發的,可惜都是在美國高校和公司開發的。我們祝愿Jittor、PaddlePaddle和一周后發布的曠視MegEngine能做大做強,甚至走出國門,。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的今日上午,清华大学发布中国首个高校自研深度学习训练框架—计图Jittor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pandas 4 个小 trick,都很
- 下一篇: Github标星5.4k+:常见NLP模