使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

資料派THU發表於2020-12-02

隨著強大的深度神經網路(DNN)和人工標記服務(我們統稱為“Oracle方法”)的廣泛使用,我們可以越來越多地對非結構化資料記錄(例如,影片、文字)進行自動化查詢。例如,城市規劃人員透過查詢路邊攝像頭的影片對車輛進行計數,以瞭解交通狀況。律師可以提取包含僱員/僱主資訊的電子郵件(關係提取)來發現有效資訊。

執行此類查詢的一種簡單方法是使用Oracle方法將非結構化資料記錄完全轉化為結構化資訊。例如,物件檢測DNN可以從影片的幀中提取物件型別和物件位置,或者基於BERT的DNN可以提取員工/僱主資訊。

然而這種傳統查詢方法的執行成本可能非常高:物件檢測DNN的執行速度比實時慢十倍,而人工標註可能要花費數十萬美元。為了減少此類查詢的成本,NoScope、機率預測等使用了代理模型(proxy model)的方法,它透過訓練類似oracle方法的廉價模型得到代理分數,主要是針對二元預測的即席(ad-hoc)方式。但是要對非結構化資料執行查詢還有很多工作要做。下面開始介紹我們小組中針對這一問題的幾個新專案。

我們將釋出一系列部落格文章,描述我們最近在對非結構化資料查詢進行加速最佳化方面的工作:

  • 本文將描述即將在VLDB 2020上發表的最新工作BlazeIt。我們將描述如何加快聚合和限制查詢
  • 在第2部分中,我們將介紹一類新的查詢:具有統計保證的近似選擇查詢(SUPG查詢)。我們將描述為什麼我們需要統計保證,其語義以及這些查詢的有效演算法。SUPG也將在VLDB 2020上展出!
  • 第3部分將描述基於DNN的可視資料查詢中的系統瓶頸。我們將展示視覺資料的預處理是當前一個主要瓶頸,以及如何解決這一瓶頸。關於這項工作的論文將在VLDB 2021中釋出。
  • 第4部分將介紹如何為相同資料上的各種查詢建立索引。我們將展示如何使用索引來有效地回答以前的部落格文章及更多文章中的所有查詢

代理分數(Proxy Score)

此前在近似二元預測(approximating binary predicates)的語境查詢中已經使用了代理模型。這些演算法遵循相同的通用策略:使用oracle方法中的標籤訓練更小更便宜的代理模型。然後代理模型會為每個資料記錄生成一個分數,該分數會估計oracle預測的可能性。例如,我們可以訓練一個小的DNN來估計汽車是否在影片幀中。

但是許多需求不止是簡單地執行二元分類。如查詢每幀影片是否有汽車存在,並不能統計每幀影片的汽車數量。

為了糾正這個問題,我們引入了二元分類之外的代理模型。本文將重點介紹代理模型,這些代理模型用於將oracle方法產生的任意值近似於非結構化資料記錄。在攝取時,我們的系統使用oracle方法處理一小部分記錄:然後在查詢時使用這些記錄來訓練代理模型以估計oracle的結果。

查詢中使用代理分數

現在我們可以生成代理分數來近似計算統計資訊的oracle方法結果,我們如何使用這些分數來回答查詢?我們將簡要描述如何完成近似聚合和基數限制的選擇查詢

系統總覽

BlazeIt具有兩個關鍵元件:攝取(離線)元件和查詢處理元件。在離線元件中,BlazeIt將使用oracle方法註釋一個非結構化資料記錄的示例:這些註釋用於訓練代理模型。BlazeIt的查詢處理元件將執行查詢,併為每個查詢訓練新的代理模型。下圖展示了Blazelt的系統。

使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

系統總覽,BlazeIt嘗試在受限的情況下儘可能有效地回答查詢

近似彙總

我們描述的第一種查詢型別是加速聚合查詢,該查詢對資料集中的每條記錄統計資料進行近似處理(如對每幀影片的汽車數量進行計數)。我們側重於近似聚合,因為要提供準確的查詢答案需要窮舉執行oracle方法,而這是非常昂貴的。為了避免詳盡實現,我們提供了兩種查詢處理演算法。

我們證明了可以直接使用代理分數來回答近似聚合查詢。由於代理分數和基本事實接近,因此我們可以直接彙總分數。例如要計算每條記錄的平均值,我們可以對代理分數求和,然後除以記錄總數。由於代理模型是透過oracle方法訓練的,所以代理和oracle之間的誤差將理想地平均化。經證實,直接使用代理分數比回答聚合查詢的替代方法要有效得多。

雖然直接使用代理分數可能是有效的,但某些應用程式需要查詢準確性的統計保證。為了滿足這種需求,我們可以在近似查詢處理(AQP)技術的啟發下,使用取樣技術來加速近似聚合查詢。透過適當地使用置信區間,我們可以實現查詢的統計保證。但是標準的AQP技術在取樣中不使用代理分數,這是有價值的資訊來源。為了利用代理評分,我們將它們用作控制變數,這是一種統計方法,可以減少抽樣方差。最後我們將控制變數與始終有效的停止演算法結合在一起,該演算法使用較少樣本且方差較小的樣本,稱為EBS停止。綜合講,這可以使我們的系統在給定的誤差水平下使用更少的樣本。下圖展示了控制變數和演算法概述-演算法的關鍵部分是演算法始終有效,並根據樣本方差終止。

使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

控制變數示意圖。m(t)是真實值,a(t)是代理分數。雖然並不總是精確的,但a(t)可以近似為m(t)。

使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

EBS停止的虛擬碼,如果滿足差異條件,它將提前停止

為了展示我們演算法的效用,我們展示了它們在近似計算每幀影片的汽車數量上的效能。關於每幀影片是否有汽車的問題,我們將原始方法與使用代理模型的方法進行比較。如下圖所示,我們的方法大大優於基準方法。尤其是已知某汽車在影片幀中出現,並不能瞭解該汽車是否在影片中普遍存在。


使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

BlazeIt's 與詳盡註釋,二進位制檢測工作和隨機抽樣相比,聚合查詢的效能更高。如圖所示,BlazeIt優於所有基準


基數限制選擇

我們描述如何加速的第二種查詢型別是基數有限的選擇查詢,用於找到滿足某些條件的少量記錄。這些查詢通常用於手動研究異常事件。

為了加快這些查詢的速度,我們使用代理分數對感興趣的記錄進行排名。尤其是,我們訓練一個代理模型來估算感興趣的數量(例如,一幀中的汽車數量)並根據這些分數進行排名。我們發現,即使此類事件很少發生,代理模型在排名最高的資料記錄中也可以具有很高的精度。

下圖中顯示了演算法的效能(有和沒有代理模型的效果)和基線。與近似聚合一樣,對於異常事件的基數限制選擇,我們的算法大大勝過傳統方法和隨機抽樣。

使用機器學習加速對非結構化資料的查詢-第1部分(使用BlazeIt加速聚合和限制查詢)

與詳盡的註釋,先前的二元分類工作和隨機取樣相比,BlazeIt在極限查詢上的效能更高。如圖所示,BlazeIt優於所有基線。

結論

由於機器學習的發展,非結構化資料查詢變得越來越可行。但是部署oracle方法的成本很高,因此執行此類查詢的費用可能會過高。我們本文中介紹了使用代理得分來加速彙總和限制查詢的方法,我們希望這些方法可以開始對非結構化資料進行查詢。在下一篇博文中,我們將介紹如何透過統計保證執行近似選擇查詢

相關閱讀

  • Accelerating Queries over Unstructured Data with ML, Part 2 (Approximate Selection Queries with Statistical Guarantees) 31 Aug 2020(https://dawn.cs.stanford.edu/2020/08/31/supg/)
  • How do MLPerf v0.7 entries compare on cost? 17 Aug 2020(https://dawn.cs.stanford.edu/2020/08/17/mlperf-v0.7-cost/)
  • Selection via Proxy: Efficient Data Selection for Deep Learning 23 Apr 2020(https://dawn.cs.stanford.edu/2020/04/23/selection-via-proxy/)

相關文章