當前位置:
首頁 > 新聞 > Facebook又放大招!開源框架Pythia讓深度學習更高效

Facebook又放大招!開源框架Pythia讓深度學習更高效

Facebook又放大招!開源框架Pythia讓深度學習更高效

打開今日頭條,查看更多圖片

【新智元導讀】Facebook的人工智慧研究部門近期推出Pythia,一個模塊化的即插即用框架。目標是使數據科學家能夠快速構建、複製和基準人工智慧模型,將VQA v2.0數據集模型的性能從65.67%提高到70.22%,已在Github上開源。

Facebook最近接連針對開發者社區拋出了一系列工具。繼一月份image processing library Spectrum、去年底的自然語言處理建模框架PyText和11月的人工智慧增強學習平台Horizon的開源後,Facebook的人工智慧研究部門又推出了Pythia,一個模塊化的即插即用框架。

Pythia的目標是使數據科學家能夠快速構建、複製和基準人工智慧模型,已在Github上開源。

而Pythia(中文一般譯作皮媞亞)這個名字的來歷也很有意思。古希臘神話中,Pythia是阿波羅神的女祭司,服務於帕納塞斯山上的德爾斐(Delphi)神廟,以傳達阿波羅神的神諭而聞名,被認為能預知未來。

Facebook又放大招!開源框架Pythia讓深度學習更高效


即插即用Pythia:讓數據科學家快速構建、複製和基準AI模型

Pythia是什麼?

Pythia是一個深度學習框架,支持視覺和語言領域的多任務處理。基於PyTorch 框架,模塊化即插即用的設計使研究人員能夠快速構建、複製和基準化人工智慧模型。

Pythia是為視覺和語言任務而設計的,例如回答與視覺數據相關的問題和自動生成圖像注釋。

Pythia能做什麼?

Pythia加入了最近的人工智慧競賽(2018年VQA挑戰賽和2018年Vizwiz挑戰賽)中獲獎作品的元素。功能包括用參考實現(reference implementations)來顯示以前最先進的模型如何實現相關的基準結果,並快速衡量新模型的性能。

除了多任務處理之外,Pythia還支持分散式培訓和各種數據集,以及自定義損失、度量、調度(scheduling)和優化器。

Pythia的特性

  • Model Zoo:藝術級的視覺和語言模型的參考實現,包括LoRRA(VQA和TextVQA上的SoTA)、Pythia模型(VQA 2018 挑戰賽獲勝者)和Ban。
  • 多任務處理:支持多任務處理,允許對多個數據集進行訓練。
  • 數據集:包括對各種內置數據集的支持,包括VQA, VizWiz, TextVQA and和VisualDialog。
  • 模塊:為視覺和語言領域中的許多常用層提供實現
  • 分散式:支持基於數據並行和分散式數據並行的分散式訓練。
  • Unopinionated:關於基於它的數據集和模型實現是Unopinionated。
  • 定製:定製損失、度量、調度、優化器、Tensorboard;適合用戶所有的定製需求。
  • 用戶可以使用Pythia為自己下一個視覺和語言多模式研究項目進行引導。Pythia還可以作為圍繞視覺和語言數據集的挑戰的起始代碼庫(參見TextVQA挑戰賽和VQA挑戰賽)。

Pythia最厲害的地方是什麼?

Pythia簡化了進入視覺和語言發展子領域的過程,使研究人員能夠專註於更快的原型製作和實驗。Facebook的目標是通過增加這些模型和結果的再現性來加速進展。這將使社區更容易建立成功系統的基礎和基準。

開發者還希望通過Pythia消除障礙,能夠使研究人員更快地為人們和智能機器開發新的交流方式。這項工作還應該幫助研究人員開發自適應人工智慧,將多種理解合成一種更基於上下文的多模式理解。除了這個開源版本,Facebook計劃繼續添加工具、任務、數據集和引用模型。

在上面提到的VQA 2018比賽中,Pythia v0.1出發點是自下而上、自上而下模型的模塊化重新實現,最終力壓群雄而勝出。

Pythia v0.1證明,通過對模型體系結構和學習速率計划進行細微但重要的更改、微調圖像功能和添加數據擴充,可以顯著提高VQA v2.0數據集自上而下模型的性能,從65.67%提高到70.22%。

此外,通過使用不同特徵和不同數據集訓練的不同模型集合,Pythia v0.1能夠顯著提高1.31%的「標準」集合方式(即具有不同隨機種子的相同模型)。總的來說,Pythia v0.1在VQA v2.0數據集的測試標準分割上達到了72.27%。


術語和概念

Pythia經過精心設計,從一開始就是一個多任務框架。這意味著使用Pythia,可以一起訓練多個任務和數據集。

但是,Pythia在其模塊中抽象了許多概念,在Pythia之上進行開發,有必要理解Pythia代碼庫中使用的概念和術語。一旦開發人員理解了這些簡單的概念,就很容易在Pythia之上進行開發。其中主要概念和術語如下:

任務和數據集

在Pythia中,數據集被劃分為一組任務。因此,任務對應屬於它的數據集的集合。例如,VQA 2.0,VizWiz和TextVQA都屬於VQA任務。 已為每個任務和數據集分配了一個唯一key,用於在命令行參數中引用。

下表顯示了任務及其數據集:

Facebook又放大招!開源框架Pythia讓深度學習更高效

下表顯示了上表的反轉,數據集及其任務和key:

Facebook又放大招!開源框架Pythia讓深度學習更高效

模型

已經包括了最先進模型的參考實施,作為研究論文複製和新研究起點的基礎。Pythia曾被用於以下論文:

  • 走向可以閱讀的VQA模型(LoRRA模型)
  • VQA 2018挑戰賽冠軍
  • VizWiz 2018挑戰賽冠軍

與任務和數據集類似,每個模型都使用唯一key進行註冊,以便在配置和命令行參數中輕鬆引用。下表顯示了可以運行的每個模型的關鍵名稱和數據集。

Facebook又放大招!開源框架Pythia讓深度學習更高效

註冊表

受到Redux全球商店的啟發,Pythia生態系統所需的有用信息已在註冊表中註冊。可以將註冊表視為框架的多個部分所需的信息的通用存儲,並在需要該信息的任何地方起作用信息源。

註冊表還基於如上所述的唯一密鑰來註冊模型、任務、數據集等。 註冊表的函數可以用作需要註冊的類的裝飾器(例如模型等)

配置

根據研究需要,Pythia中的大多數參數/設置都是可配置的。 Pythia特定的默認值(training_parameters)存在於:

pythia/common/defaults/configs/base.yml

其中詳細的注釋描述了每個參數的用法。為了便於使用和模塊化,每個數據集的配置分別保存在:

pythia/common/defaults/configs/tasks/[task]/[dataset].yml

可以從Tasks中的表中獲取數據集的[task]值和數據集部分。模型配置也是分開的,並且是用戶在創建自己的模型時需要定義的部分。

由於每個數據集的單獨配置,這個概念可以擴展到執行多任務並在此包含多個數據集配置。

處理器

處理器的主要目的是使數據處理流程儘可能與不同數據集相似,並允許代碼重用。

處理器接受帶有與所需數據相對應key的字典,並返回帶有處理數據的字典。這有助於通過修復所需的簽名來使處理器獨立於邏輯的其餘部分。

處理器用於所有數據集以切換數據處理需求。在處理器文檔中了解有關處理器的更多信息。

SampleList

SampleList受到了maskrcnn-benchmark中BBoxList的啟發,但更為通用。與Pythia集成的所有數據集都需要返回一個Sample,該Sample將被整理到SampleList中。

現在,SampleList帶有許多方便的功能,可以輕鬆地批量處理和訪問事物。對於例如樣本是帶有一些key的字典。在SampleList中,這些key的值將根據它是張量還是列表而被巧妙地分組,並分配回該字典。

因此,終端用戶可以很好地將這些key組合在一起,並可以在他們的模型中使用它們。與Pythia集成的模型接收SampleList作為參數,這再次使trainer對模型和數據集不再有任何影響。在其文檔中了解有關Sample和SampleList的更多信息。


預訓練模型

在Pythia中使用預訓練模型進行推理很容易。從下表中選取一個預訓練模型,並按照步驟進行推理或生成預測讓EvalAI評估。(注意,這部分內容需要先安裝教程中介紹的數據,教程鏈接在文末)

Facebook又放大招!開源框架Pythia讓深度學習更高效

現在,假設你到預培訓模型model是link(從table中選擇>右鍵單擊>複製鏈接地址),相應的配置應該位於configs/[task]/[dataset]/[model].yml。例如,vqa2 train_and_val的配置文件應該是configs/vqa/vqa2/pythia_train_and_val.yml。現在要運行EvalAI的推斷,請運行以下命令:

Facebook又放大招!開源框架Pythia讓深度學習更高效

如果要在val上進行培訓或評估,請相應地將run_type改為train或val。你還可以使用多個運行類型,例如進行訓練、對val進行推斷、還可以將--run_type設置為train+val+inference進行推斷。

如果刪除--evalai_inference論證,Pythia 將執行推斷並直接在數據集上提供結果。請注意,對於測試集,這是不能用的,因為我們沒有它們的答案/目標。因此,這對於在本地執行 val集的推理很有用。

如果刪除--evalai_inference論證,Pythia 將執行推斷並直接在數據集上提供結果。請注意,對於測試集,這是不能用的,因為我們沒有它們的答案/目標。因此,這對於在本地執行 val集的推理很有用。

下表顯示了各種預培訓模型的評估指標:

Facebook又放大招!開源框架Pythia讓深度學習更高效

Demo演示

Facebook又放大招!開源框架Pythia讓深度學習更高效

相關資源:

Github:

https://github.com/facebookresearch/pythia

Demo:

https://colab.research.google.com/drive/1Z9fsh10rFtgWe4uy8nvU4mQmqdokdIRR

教程:

https://learnpythia.readthedocs.io

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

一圖看懂編程語言遷移模式:終點站是Python、Go、JS
谷歌重磅推出TensorFlow Graphics:為3D圖像任務打造的深度學習利器

TAG:新智元 |