Facebook的人工智能研究部門近期推出Pythia,一個模塊化的即插即用框架。目標(biāo)是使數(shù)據(jù)科學(xué)家能夠快速構(gòu)建、復(fù)制和基準(zhǔn)人工智能模型,將VQA v2.0數(shù)據(jù)集模型的性能從65.67%提高到70.22%,已在Github上開源。
Facebook最近在開發(fā)者社區(qū)拋出了一系列工具。繼一月份image processing library Spectrum、去年底的自然語言處理建模框架PyText和11月的人工智能增強(qiáng)學(xué)習(xí)平臺Horizon的開源后,F(xiàn)acebook的人工智能研究部門又推出了Pythia,一個模塊化的即插即用框架。
Pythia的目標(biāo)是使數(shù)據(jù)科學(xué)家能夠快速構(gòu)建、復(fù)制和基準(zhǔn)人工智能模型,已在Github上開源。
而Pythia(中文一般譯作皮媞亞)這個名字的來歷也很有意思。古希臘神話中,Pythia是阿波羅神的女祭司,服務(wù)于帕納塞斯山上的德爾斐(Delphi)神廟,以傳達(dá)阿波羅神的神諭而聞名,被認(rèn)為能預(yù)知未來。
即插即用Pythia:讓數(shù)據(jù)科學(xué)家快速構(gòu)建、復(fù)制和基準(zhǔn)AI模型
Pythia是什么?
Pythia是一個深度學(xué)習(xí)框架,支持視覺和語言領(lǐng)域的多任務(wù)處理。基于PyTorch 框架,模塊化即插即用的設(shè)計使研究人員能夠快速構(gòu)建、復(fù)制和基準(zhǔn)化人工智能模型。
Pythia是為視覺和語言任務(wù)而設(shè)計的,例如回答與視覺數(shù)據(jù)相關(guān)的問題和自動生成圖像注釋。
Pythia能做什么?
Pythia加入了最近的人工智能競賽(2018年VQA挑戰(zhàn)賽和2018年Vizwiz挑戰(zhàn)賽)中獲獎作品的元素。功能包括用參考實(shí)現(xiàn)(reference implementations)來顯示以前最先進(jìn)的模型如何實(shí)現(xiàn)相關(guān)的基準(zhǔn)結(jié)果,并快速衡量新模型的性能。
除了多任務(wù)處理之外,Pythia還支持分布式培訓(xùn)和各種數(shù)據(jù)集,以及自定義損失、度量、調(diào)度(scheduling)和優(yōu)化器。
Pythia的特性
Model Zoo:藝術(shù)級的視覺和語言模型的參考實(shí)現(xiàn),包括LoRRA(VQA和TextVQA上的SoTA)、Pythia模型(VQA 2018 挑戰(zhàn)賽獲勝者)和Ban。
多任務(wù)處理:支持多任務(wù)處理,允許對多個數(shù)據(jù)集進(jìn)行訓(xùn)練。
數(shù)據(jù)集:包括對各種內(nèi)置數(shù)據(jù)集的支持,包括VQA, VizWiz, TextVQA and和VisualDialog。
模塊:為視覺和語言領(lǐng)域中的許多常用層提供實(shí)現(xiàn)
分布式:支持基于數(shù)據(jù)并行和分布式數(shù)據(jù)并行的分布式訓(xùn)練。
Unopinionated:關(guān)于基于它的數(shù)據(jù)集和模型實(shí)現(xiàn)是Unopinionated。
定制:定制損失、度量、調(diào)度、優(yōu)化器、Tensorboard;適合用戶所有的定制需求。
用戶可以使用Pythia為自己下一個視覺和語言多模式研究項目進(jìn)行引導(dǎo)。Pythia還可以作為圍繞視覺和語言數(shù)據(jù)集的挑戰(zhàn)的起始代碼庫(參見TextVQA挑戰(zhàn)賽和VQA挑戰(zhàn)賽)。
Pythia最厲害的地方是什么?
Pythia簡化了進(jìn)入視覺和語言發(fā)展子領(lǐng)域的過程,使研究人員能夠?qū)W⒂诟斓脑椭谱骱蛯?shí)驗。Facebook的目標(biāo)是通過增加這些模型和結(jié)果的再現(xiàn)性來加速進(jìn)展。這將使社區(qū)更容易建立成功系統(tǒng)的基礎(chǔ)和基準(zhǔn)。
開發(fā)者還希望通過Pythia消除障礙,能夠使研究人員更快地為人們和智能機(jī)器開發(fā)新的交流方式。這項工作還應(yīng)該幫助研究人員開發(fā)自適應(yīng)人工智能,將多種理解合成一種更基于上下文的多模式理解。除了這個開源版本,F(xiàn)acebook計劃繼續(xù)添加工具、任務(wù)、數(shù)據(jù)集和引用模型。
在上面提到的VQA 2018比賽中,Pythia v0.1出發(fā)點(diǎn)是自下而上、自上而下模型的模塊化重新實(shí)現(xiàn),最終力壓群雄而勝出。
Pythia v0.1證明,通過對模型體系結(jié)構(gòu)和學(xué)習(xí)速率計劃進(jìn)行細(xì)微但重要的更改、微調(diào)圖像功能和添加數(shù)據(jù)擴(kuò)充,可以顯著提高VQA v2.0數(shù)據(jù)集自上而下模型的性能,從65.67%提高到70.22%。
此外,通過使用不同特征和不同數(shù)據(jù)集訓(xùn)練的不同模型集合,Pythia v0.1能夠顯著提高1.31%的“標(biāo)準(zhǔn)”集合方式(即具有不同隨機(jī)種子的相同模型)。總的來說,Pythia v0.1在VQA v2.0數(shù)據(jù)集的測試標(biāo)準(zhǔn)分割上達(dá)到了72.27%。
術(shù)語和概念
Pythia經(jīng)過精心設(shè)計,從一開始就是一個多任務(wù)框架。這意味著使用Pythia,可以一起訓(xùn)練多個任務(wù)和數(shù)據(jù)集。
但是,Pythia在其模塊中抽象了許多概念,在Pythia之上進(jìn)行開發(fā),有必要理解Pythia代碼庫中使用的概念和術(shù)語。一旦開發(fā)人員理解了這些簡單的概念,就很容易在Pythia之上進(jìn)行開發(fā)。其中主要概念和術(shù)語如下:
任務(wù)和數(shù)據(jù)集
在Pythia中,數(shù)據(jù)集被劃分為一組任務(wù)。因此,任務(wù)對應(yīng)屬于它的數(shù)據(jù)集的集合。例如,VQA 2.0,VizWiz和TextVQA都屬于VQA任務(wù)。 已為每個任務(wù)和數(shù)據(jù)集分配了一個唯一key,用于在命令行參數(shù)中引用。
下表顯示了任務(wù)及其數(shù)據(jù)集:
下表顯示了上表的反轉(zhuǎn),數(shù)據(jù)集及其任務(wù)和key:
模型
已經(jīng)包括了最先進(jìn)模型的參考實(shí)施,作為研究論文復(fù)制和新研究起點(diǎn)的基礎(chǔ)。Pythia曾被用于以下論文:
走向可以閱讀的VQA模型(LoRRA模型)
VQA 2018挑戰(zhàn)賽冠軍
VizWiz 2018挑戰(zhàn)賽冠軍
與任務(wù)和數(shù)據(jù)集類似,每個模型都使用唯一key進(jìn)行注冊,以便在配置和命令行參數(shù)中輕松引用。下表顯示了可以運(yùn)行的每個模型的關(guān)鍵名稱和數(shù)據(jù)集。
注冊表
受到Redux全球商店的啟發(fā),Pythia生態(tài)系統(tǒng)所需的有用信息已在注冊表中注冊。可以將注冊表視為框架的多個部分所需的信息的通用存儲,并在需要該信息的任何地方起作用信息源。
注冊表還基于如上所述的唯一密鑰來注冊模型、任務(wù)、數(shù)據(jù)集等。 注冊表的函數(shù)可以用作需要注冊的類的裝飾器(例如模型等)
導(dǎo)入注冊表對象導(dǎo)入:
from pythia.common.registry import registry
配置
根據(jù)研究需要,Pythia中的大多數(shù)參數(shù)/設(shè)置都是可配置的。 Pythia特定的默認(rèn)值(training_parameters)存在于:
pythia/common/defaults/configs/base.yml
其中詳細(xì)的注釋描述了每個參數(shù)的用法。為了便于使用和模塊化,每個數(shù)據(jù)集的配置分別保存在:
pythia/common/defaults/configs/tasks/[task]/[dataset].yml
可以從Tasks中的表中獲取數(shù)據(jù)集的[task]值和數(shù)據(jù)集部分。模型配置也是分開的,并且是用戶在創(chuàng)建自己的模型時需要定義的部分。
由于每個數(shù)據(jù)集的單獨(dú)配置,這個概念可以擴(kuò)展到執(zhí)行多任務(wù)并在此包含多個數(shù)據(jù)集配置。
處理器的主要目的是使數(shù)據(jù)處理流程盡可能與不同數(shù)據(jù)集相似,并允許代碼重用。
處理器接受帶有與所需數(shù)據(jù)相對應(yīng)key的字典,并返回帶有處理數(shù)據(jù)的字典。這有助于通過修復(fù)所需的簽名來使處理器獨(dú)立于邏輯的其余部分。
處理器用于所有數(shù)據(jù)集以切換數(shù)據(jù)處理需求。在處理器文檔中了解有關(guān)處理器的更多信息。
SampleList
SampleList受到了maskrcnn-benchmark中BBoxList的啟發(fā),但更為通用。與Pythia集成的所有數(shù)據(jù)集都需要返回一個Sample,該Sample將被整理到SampleList中。
現(xiàn)在,SampleList帶有許多方便的功能,可以輕松地批量處理和訪問事物。對于例如樣本是帶有一些key的字典。在SampleList中,這些key的值將根據(jù)它是張量還是列表而被巧妙地分組,并分配回該字典。
因此,終端用戶可以很好地將這些key組合在一起,并可以在他們的模型中使用它們。與Pythia集成的模型接收SampleList作為參數(shù),這再次使trainer對模型和數(shù)據(jù)集不再有任何影響。在其文檔中了解有關(guān)Sample和SampleList的更多信息。
預(yù)訓(xùn)練模型
在Pythia中使用預(yù)訓(xùn)練模型進(jìn)行推理很容易。從下表中選取一個預(yù)訓(xùn)練模型,并按照步驟進(jìn)行推理或生成預(yù)測讓EvalAI評估。(注意,這部分內(nèi)容需要先安裝教程中介紹的數(shù)據(jù),教程鏈接在文末)
現(xiàn)在,假設(shè)你到預(yù)培訓(xùn)模型model是link(從table中選擇>右鍵單擊>復(fù)制鏈接地址),相應(yīng)的配置應(yīng)該位于configs/[task]/[dataset]/[model].yml。例如,vqa2 train_and_val的配置文件應(yīng)該是configs/vqa/vqa2/pythia_train_and_val.yml。現(xiàn)在要運(yùn)行EvalAI的推斷,請運(yùn)行以下命令:
如果要在val上進(jìn)行培訓(xùn)或評估,請相應(yīng)地將run_type改為train或val。你還可以使用多個運(yùn)行類型,例如進(jìn)行訓(xùn)練、對val進(jìn)行推斷、還可以將--run_type設(shè)置為train+val+inference進(jìn)行推斷。
如果刪除--evalai_inference論證,Pythia 將執(zhí)行推斷并直接在數(shù)據(jù)集上提供結(jié)果。請注意,對于測試集,這是不能用的,因為我們沒有它們的答案/目標(biāo)。因此,這對于在本地執(zhí)行 val集的推理很有用。
如果刪除--evalai_inference論證,Pythia 將執(zhí)行推斷并直接在數(shù)據(jù)集上提供結(jié)果。請注意,對于測試集,這是不能用的,因為我們沒有它們的答案/目標(biāo)。因此,這對于在本地執(zhí)行 val集的推理很有用。
下表顯示了各種預(yù)培訓(xùn)模型的評估指標(biāo):
Demo演示
-
Facebook
+關(guān)注
關(guān)注
3文章
1429瀏覽量
54841 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5510瀏覽量
121338 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13283
原文標(biāo)題:Facebook全新開源深度學(xué)習(xí)框架Pythia,即插即用快速構(gòu)建AI模型
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論