磐創(chuàng)AI 512篇原創(chuàng)內(nèi)容 公眾號(hào) 轉(zhuǎn)自 | 機(jī)器學(xué)習(xí)實(shí)驗(yàn)室 作者 | louwill 來(lái)源 | Machine Learning Lab 隨著近幾年的大力發(fā)展,PyTorch逐漸成為主流的深度學(xué)習(xí)框架。相應(yīng)的PyTorch技術(shù)生態(tài)也逐漸豐富和完善。本文重點(diǎn)回顧和盤(pán)點(diǎn)PyTorch的技術(shù)生態(tài),包含大量的工具庫(kù),遍布AI各個(gè)領(lǐng)域和方向。 Pytorch Lightning是一款基于Pytorch的輕量級(jí)高級(jí)計(jì)算框架,相較于Pytorch而言最大特征是簡(jiǎn)潔易用,相當(dāng)于Pytorch版本的Keras框架。Libtorch可以看作是C++版本的PyTorch,在Python環(huán)境下對(duì)訓(xùn)練好的模型進(jìn)行轉(zhuǎn)換之后,我們需要C++環(huán)境下的PyTorch來(lái)讀取模型并進(jìn)行編譯部署。這種C++環(huán)境下的PyTorch就是libtorch。地址:https://pytorch.org/cppdocs/Detectron2是Facebook AI (FAIR) 發(fā)布的下一代目標(biāo)檢測(cè)算法框架。Detectron2是對(duì)Detectron項(xiàng)目的重構(gòu),也是maskrcnn-benchmark的替代框架。地址:https://github.com/facebookresearch/detectron2Transformers是一款基于PyTorch的自然語(yǔ)言處理SOTA模型庫(kù)。Transformers提供了數(shù)千種經(jīng)過(guò)預(yù)訓(xùn)練的模型,能夠處理各種NLP問(wèn)題,例如文本分類(lèi)、信息提取、問(wèn)答系統(tǒng),文本摘要,機(jī)器翻譯和文本生成等。地址:https://github.com/huggingface/transformersONNX Runtime是一種跨平臺(tái)深度學(xué)習(xí)訓(xùn)練和推理機(jī)加速器,與深度學(xué)習(xí)框架,可以兼容TensorFlow、Keras和PyTorch等多種深度學(xué)習(xí)框架。ONNX (Open Neural Network Exchange) 是一種用于表示深度學(xué)習(xí)模型的開(kāi)放格式,ONNX定義了一組通用的運(yùn)算符、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型的構(gòu)建塊以及一種通用的文件格式,使AI開(kāi)發(fā)人員可以將模型與各種框架、工具和編譯器一起使用。地址:https://github.com/microsoft/onnxruntimePyTorch Geometric (PyG) 是一款基于PyTorch的圖神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)擴(kuò)展庫(kù)。PyG對(duì)已發(fā)表或者常用的圖神經(jīng)網(wǎng)絡(luò)和數(shù)據(jù)集都進(jìn)行了集成,因而是當(dāng)前最流行和廣泛使用的GNN庫(kù)。地址:https://github.com/rusty1s/pytorch_geometricPyTorch3D是一款基于PyTorch將深度學(xué)習(xí)與3D進(jìn)行結(jié)合的研究框架。3D數(shù)據(jù)比2D圖像更為復(fù)雜,在處理諸如Mesh R-CNN和C3DPO之類(lèi)的項(xiàng)目時(shí),需要用3D數(shù)據(jù)進(jìn)行表示,在批處理和速度方面的諸多挑戰(zhàn)。 PyTorch3D開(kāi)發(fā)出許多用于3D深度學(xué)習(xí)的有用的運(yùn)算符和抽象,并希望與社區(qū)共享以推動(dòng)這一領(lǐng)域的新穎研究。Ray為構(gòu)建分布式機(jī)器學(xué)習(xí)應(yīng)用提供簡(jiǎn)單和通用式的API。Ray打包了Tune、RLlib、RaySGD和Ray Serve等多款機(jī)器學(xué)習(xí)庫(kù)。地址:https://github.com/ray-project/ray從名稱(chēng)就可以看出來(lái),skorch是一款綜合scikit-learn和PyTorch的機(jī)器學(xué)習(xí)庫(kù),可以實(shí)現(xiàn)scikit-learn和PyTorch高效兼容。地址:https://github.com/skorch-dev/skorchPySyft是用于安全和私有深度學(xué)習(xí)的Python庫(kù)。PySyft使用聯(lián)合學(xué)習(xí),差分隱私和加密計(jì)算(例如PyTorch和TensorFlow等主要深度學(xué)習(xí)框架中的多方計(jì)算 (MPC) 和同態(tài)加密 (HE) 將模型訓(xùn)練中的私人數(shù)據(jù)進(jìn)行解耦。地址:https://github.com/OpenMined/PySyftPyro是一款基于PyTorch作為后端的通用概率編程語(yǔ)言 (PPL)。fastai使用當(dāng)前深度學(xué)習(xí)最佳實(shí)踐簡(jiǎn)化了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程,并且在速度和精度上都非常可觀(guān)。fastai作為一款深度學(xué)習(xí)庫(kù),可為從業(yè)人員提供高級(jí)組件,這些組件可以快速輕松地提供標(biāo)準(zhǔn)深度學(xué)習(xí)領(lǐng)域中的最新結(jié)果,并為研究人員提供可以混合和匹配以構(gòu)建的低級(jí)組件新方法。Horovod可以為PyTorch提供分布式深度學(xué)習(xí)訓(xùn)練框架。Horovod最初由Uber開(kāi)發(fā),旨在使分布式深度學(xué)習(xí)變得快速且易于使用,使模型訓(xùn)練時(shí)間從幾天和幾周縮短到數(shù)小時(shí)和數(shù)分鐘。使用Horovod可以將現(xiàn)有的訓(xùn)練腳本規(guī)模進(jìn)行擴(kuò)大,使其僅用幾行Python代碼就可以在數(shù)百個(gè)GPU上運(yùn)行。AllenNLP幾乎可以針對(duì)幾乎所有NLP問(wèn)題設(shè)計(jì)深度學(xué)習(xí)模型,并且可以輕松地在云端或筆記本電腦上運(yùn)行。Albumentations是一款用于計(jì)算機(jī)視覺(jué)圖像增強(qiáng)的高級(jí)庫(kù)?;贏lbumentations的圖像增強(qiáng)效果入下圖所示。地址:https://github.com/albumentations-team/albumentationsDeepSpeed是一個(gè)深度學(xué)習(xí)優(yōu)化庫(kù),它使分布式訓(xùn)練變得容易和高效。Flair是一款非常容易上手的PyTorch NLP SOTA框架。地址:https://github.com/flairNLP/flairParlAI是一款跨多個(gè)任務(wù)共享,訓(xùn)練和評(píng)估對(duì)話(huà)模型的一體化的機(jī)器學(xué)習(xí)平臺(tái)。PyTorch Metric Learning能夠讓你以最輕松的方式在你的機(jī)器學(xué)習(xí)代碼中融入深度度量學(xué)習(xí),并且容易模塊化、高度的靈活性和可拓展性。PML 9大模塊如下圖所示。地址:https://kevinmusgrave./pytorch-metric-learning/BoTorch是一個(gè)基于PyTorch的高效貝葉斯優(yōu)化框架。隨著PyTorch逐漸流行以及越來(lái)越多的開(kāi)發(fā)者加入,基于PyTorch的深度學(xué)習(xí)技術(shù)生態(tài)也逐漸豐富和完善。本文限于篇幅,就僅羅列部分具有代表性和流行性的技術(shù)框架。
|