今(jin)日(ri),寒武紀開源了PyTorch設備后端擴展插件(jian)Torch-MLU,并實現了寒武紀硬件(jian)對(dui)于PyTorch的原生支持,充(chong)分提升了開發者(zhe)的使用(yong)體驗和集成效率(lv)。

早在2018年,寒武紀就開始了與PyTorch框架的集成適配工作。自PyTorch 1.3版本開始就支持寒武紀MLU系列智能(neng)加速卡作為PyTorch的(de)加速(su)后端,使開發者能夠將原(yuan)先基(ji)于(yu)(yu)GPU的(de)深度學習網絡(luo)高效(xiao)遷移(yi)到基(ji)于(yu)(yu)寒武(wu)紀(ji)MLU的(de)PyTorch環境(jing)中。

隨著PyTorch社(she)區(qu)發布(bu)PyTorch 2.4版本(ben),配合新版本(ben)(≥ V1.22)的(de)Torch-MLU插(cha)件(jian),寒武紀(ji)硬件(jian)實現了對(dui)PyTorch的(de)原生支持。開發者無需再安(an)裝(zhuang)寒武紀(ji)定制的(de)Cambricon PyTorch,而是可以(yi)基于社(she)區(qu)的(de)PyTorch安(an)裝(zhuang)Torch-MLU插(cha)件(jian),就(jiu)可將寒武紀(ji)硬件(jian)的(de)算力(li)接入原生PyTorch。

與此同時,Torch-MLU的(de)(de)開(kai)(kai)源使寒武紀(ji)能夠更快地響應開(kai)(kai)發(fa)者的(de)(de)反饋和問(wen)題(ti),搭建(jian)了高效的(de)(de)溝通橋梁,促進了與全(quan)球開(kai)(kai)發(fa)者的(de)(de)協作和知識共(gong)享。寒武紀(ji)通過持續貢獻開(kai)(kai)源社區的(de)(de)實(shi)際行動(dong),展(zhan)示著擁(yong)抱開(kai)(kai)源、支持AI生態共(gong)建(jian)的(de)(de)決心(xin)。

GitEE倉庫(點擊文末(mo)“閱(yue)讀原(yuan)文”可直接跳轉)↓

//gitee.com/cambricon/torch_mlu

*具體版本與分支信息請參考倉庫中的README文檔。

一、?Torch-MLU的技術演進

1、設備后端接入PyTorch框架

PyTorch初期沒有提供第三方(fang)后端統一接(jie)入方(fang)案(an)。新設備后端如果想(xiang)接(jie)入PyTorch,往往需要對PyTorch的(de)核心代碼進(jin)行修(xiu)改(gai)。比如開發(fa)者需要在(zai)核心模塊Dispatcher中加入對應后端的(de)Dispatch Key,以及對其他(ta)模塊中關于設備后端做一些(xie)適(shi)配(pei)性修(xiu)改(gai)。設備后端擴展插件(jian)需要配(pei)合修(xiu)改(gai)過的(de)PyTorch才(cai)能夠正(zheng)常工(gong)作。

原生PyTorch支持,大模型一鍵遷移!寒武紀開源Torch-MLU

▲侵入式設備(bei)后端支持

2023年8月PyTorch社區(qu)發布了(le)PyTorch 2.1版(ban)本,重磅推出了(le)基于(yu)PrivateUse1 Dispatch Key的新后(hou)端統一(yi)接(jie)入參考設計(ji)。PrivateUse1設計(ji)方案通過PrivateUse1抽(chou)象層將設備廠商私有屬性(xing)統一(yi)封(feng)裝(zhuang),完善(shan)了(le)PyTorch的設備擴展(zhan)機制,為新硬件非侵(qin)入性(xing)接(jie)入PyTorch提供了(le)途徑。

原生PyTorch支持,大模型一鍵遷移!寒武紀開源Torch-MLU

▲設備后端原生支持

通過這些改進,PyTorch不僅增強了其作為深度學(xue)習(xi)框架的靈(ling)活性和可擴(kuo)展性,還為開發者和設備廠商(shang)提供了更(geng)順暢和高效(xiao)的合作環境(jing)。

2、寒武紀持續貢獻PyTorch社區

PrivateUse1接入方(fang)案的推出為新后端統一接入提供(gong)了啟發性的思路(lu),但是在初期仍有一些(xie)待完善的特性和模(mo)塊,需要設備廠商的持續投入和貢獻。

PrivateUse1支持(chi)設(she)備(bei)在Eager模(mo)式(shi)下的(de)基(ji)本(ben)的(de)運行和接入(ru),但并不(bu)能完(wan)善支持(chi)PyTorch的(de)一(yi)些特性(xing)。比如Profiler模(mo)塊,初期僅支持(chi)GPU后(hou)端,不(bu)支持(chi)外部自定義(yi)后(hou)端,基(ji)于(yu)PrivateUse1注冊的(de)設(she)備(bei)后(hou)端無法使用PyTorch原生(sheng)的(de)Profiler。

PrivateUse1路(lu)徑的限制給開發者(zhe)帶(dai)來了(le)更多挑戰(zhan),使(shi)他們在進行設備集成時面臨(lin)更多障(zhang)礙,影響了(le)整(zheng)體(ti)使(shi)用體(ti)驗。

寒武紀在PrivateUse1接入方案的基礎上優化了非CUDA設備的接入體驗,在今年向PyTorch社區提交了數十個Patch,涉及(ji)Profiler、Compile、Graph Capture、Autograd、Allocator、Storage, FSDP、Sparse等眾多模塊,打通(tong)了這(zhe)些模塊與PrivateUse1的集(ji)(ji)成路徑,進一步(bu)完(wan)善(shan)了PrivateUse1機制。未來,第三方設備的廠商和開(kai)發者就能夠充(chong)分利用這(zhe)些已打通(tong)的集(ji)(ji)成路徑,更加(jia)高效和便捷地接(jie)入(ru)PyTorch。

3、安裝Torch-MLU插件,保留原生體驗

經過寒武紀對(dui)PyTorch社區的PrivateUse1機制進行完善后,自PyTorch 2.4版本(ben)起,寒武紀硬(ying)件實現了(le)PyTorch原(yuan)生支持(chi)。

開發者可(ke)直接(jie)基于社區PyTorch發布(bu)包(bao)安裝Torch-MLU插件,即可(ke)將寒武紀MLU的(de)算力無縫接(jie)入,同時保留原生PyTorch的(de)使用體驗(yan)。

二、開源范圍

當前開源的Torch-MLU倉庫支持的社區版本:

  • PyTorch 2.1
  • PyTorch 2.3
  • PyTorch 2.4(2024年7月25日最新發布)

未來會(hui)隨社區版(ban)本持(chi)續更新(xin)。

三、擁抱開源社區,持續生態貢獻

寒武紀長期以來秉承開放、合作、共享的理念,積極參與開源社區的建設,在多個重要開源項目中貢獻代碼,如PyTorch、TensorFlow、Huggingface、Transformers、vLLM、Deepspeed等大模型訓(xun)練(lian)推(tui)理(li)應用中的核心(xin)組件。

近期,寒武紀開源(yuan)了Triton-Linalg AI編譯器(qi)前端,開發(fa)者或(huo)者硬件(jian)廠商可以以極低的(de)開發(fa)成本,快速集成支持Triton語言特性的(de)后(hou)端指令集,并(bing)對接(jie)上(shang)層AI應(ying)用。

此次開(kai)源Torch-MLU插件(jian),也是(shi)希望(wang)未來能更(geng)好(hao)地(di)(di)理解(jie)和更(geng)快速地(di)(di)解(jie)決開(kai)發(fa)者的問題,同時(shi)為寒武(wu)紀深度學習框(kuang)架與開(kai)發(fa)者之間建立(li)直接的交流渠道。寒武(wu)紀堅信,推(tui)動人(ren)工智能領域未來發(fa)展的關鍵在(zai)于(yu)開(kai)放性、合作精(jing)神和共(gong)享(xiang)資源。通過開(kai)源項目,開(kai)發(fa)者們可以團結一致,通過協作和配合,使得技術(shu)成(cheng)果得到廣(guang)泛應用。

未來,寒武(wu)紀將持續貢(gong)獻(xian)開源(yuan)(yuan)社區(qu),為AI開源(yuan)(yuan)生態注入新動力。同時通過(guo)技術的開源(yuan)(yuan),賦(fu)予開發者(zhe)更多能(neng)力,共同促(cu)進繁(fan)榮和多元(yuan)的人工(gong)智(zhi)能(neng)世界。