京東高級算法工程師34頁PPT詳解基於分布式向量檢索系統Vearch的大...

2021-01-08 智東西

出品 | 智東西公開課講師 | 邸志惠 京東高級算法工程師

導讀:

6月10日,京東高級算法工程師邸志惠在智東西公開課進行了CV前沿講座第八講的直播講解,主題為《大規模圖像檢索系統的挑戰與實踐》。

在本次講解中,邸志惠老師從大規模圖像檢索任務所面臨的挑戰入手,詳細解析了Vearch的原理,最後通過三個案例展示Vearch如何在實踐場景中助力深度學習應用落地。

本文為此次課程主講環節的圖文整理:

正文:

大家好,我是邸志惠,今天我要分享的主題為《大規模圖像檢索系統的挑戰與實踐》,我們會分為3個部分:

1、大規模圖像檢索任務所面臨的挑戰2、Vearch原理解析3、Vearch在深度學習場景中的實踐

大規模圖像檢索任務所面臨的挑戰

隨著深度學習技術的快速發展,它的相關應用也滲透到了我們生活的方方面面。深度學習是通過將圖片、文本、視頻等編碼成高維特徵向量來解決問題的,這就出現了海量高維特徵向量的存儲與計算問題,這些問題急需得到很好的解決。

人臉識別與拍照購場景:

智能助理與娛樂場景:

我們現在的生活已經被AI所包圍,比如早上進辦公室時,需要過人臉閘機,但就是這簡單的生活場景,想一下之前傳統的方案是什麼樣子?若有陌生人來,我們靠保安去識別時,怎麼去判斷準確性?即使保安熟悉天天進出的人,他也不會記憶這麼多人的信息,而且對每個人的精準識別也是有限的。所以,傳統的方案在應對這些場景時都是會有很大的瓶頸。然而深度學習可以利用生物特徵的唯一性以及難以作假的特性。

以上這些場景,都是新的query與資料庫中數據做搜索對比得到排序結果的應用。傳統方案是採用人工提取特徵,但是由於特徵量少,無法刻畫事物的唯一性,比如人臉識別過閘機場景,證件等外部性證明都容易作假,靠保安人員記憶,容貌相近的無關人員有可能亂入,還有銀行卡靠帳戶密碼轉帳的盜刷事件時有發生。上述杯子拍照購場景,無論搜卡通杯,還是白色陶瓷杯,還是白色卡通陶瓷杯都無法精確得到上圖結果。

深度學習的出現,通過編碼圖片、文本、視頻等的高維度信息為固定維特徵向量,使事物得到精準量化表示,導致搜索結果可以高質量精準排序。比如上述人臉場景,深層網絡會提取人臉的眼睛、鼻子、嘴巴、皮膚紋理等上萬維特徵編碼成向量來唯一刻畫人臉的唯一性。在智能助理外賣推薦場景,深層網絡可以分別把用戶畫像(口味,位置距離,性別,薪資)等多個維度的信息與商家畫像(菜品,菜價,評論,風格,距離)多個維度信息編碼成高維特徵向量,計算二者的相似度,做精準量化匹配。

但是深度學習的使用也面臨新的棘手的問題:

海量高維特徵的存儲問題 特徵向量的相似性計算搜索問題

這兩大問題,傳統資料庫是基於key/value的模糊查詢搜索原理,無法完成向量計算的操作。目前落地環節都是針對各自場景自己訓練深度學習算法,在開發對應的向量檢索系統,存在大量重複工作,這對算法工程師也不友好。目前尚沒有通用的在線解決方案,我們開源的vearch專門針對上述問題開發的在線易用的,用以解決海量特徵向量的存儲、計算、相似向量檢索問題。

Vearch原理解析

Vearch 是對大規模深度學習向量進行高性能相似搜索的彈性分布式系統,主要解決數億級別向量的存儲和計算查詢的問題。

Vearch整體架構如下:

分為三個組件:Master,Router,PartitionServer

Master:負責schema管理,集群級別的源數據和資源協調。 Router:提供RESTful API: create、delete、search、update; 請求路由轉發及結果合併。 PartitionServer(PS):基於raft複製的文檔分片;Gamma向量搜尋引擎,它提供了存儲、索引和檢索向量、標量的能力。

Vearch功能簡介

支持CPU與GPU兩種版本。 支持實時添加數據到索引。 支持單個文檔定義多個向量欄位, 添加、搜索批量操作。 支持數值欄位範圍過濾與string欄位標籤過濾。 支持IVFPQ、HNSW、二進位等索引方式。 支持內存、磁碟兩種數據存儲方式,支持超大數據規模 自研gamma引擎,提供高性能的向量檢索,同時IVFPQ倒排索引支持compaction,檢索性能不受文檔更新次數的影響 基於raft協議實現數據多副本存儲 支持內積(InnerProduct)與歐式距離(L2)方法計算向量距離

Vearch支持如下三種使用方式,同時支持分布式

Restful API Python SDK Plugin

Vearch的相關性能與效果測評

下面的性能測評有助於我們在實踐過程中根據自己的使用場景選擇合適的參數。

Nprobe實驗,由下圖可知,recall在10左右,recall與qps都能得到很好的效果。開源系統默認值為10。

IVFPQ檢索模型相關對比實驗

Ncentroids實驗,IVFPQ是適合億級別數據的檢索方式,檢索時會提前對資料庫裡的數據聚類,Ncentroids是聚類的質心個數,大家可根據自己的使用場景及數據量手動設置如下指標。

IVFPQ檢索模型相關對比實驗

分布式測試實驗,不同線代表的是不同數據級別,綠色代表是最大的億級別的數據,藍色代表500MB的數據量,紅色代表100MB數據量,測試模型是VGG,測試集群為三臺Master,三臺Router,三臺partition。虛線部分是採用過濾欄位後的效果,可以看到QPS提高2.5倍。故在設定數據表時,如有額外可利用的欄位,一定要建進去,後續提升搜索性能。

大規模CPU伺服器集群測試

下圖是不同量級數據集在相關算法上的效率,從測評結果來看,vearch不論在大數據集還是小數據集上,都有較高召回率,表現都優於其他檢索算法。

Vearch在深度學習場景中的實踐

下文結合三個實踐場景詳細說明vearch的三個使用方式。

Vearch的安裝:

Vearch的github地址:https://github.com/vearch/vearchVearch使用文檔:https://vearch.readthedocs.io/zh_CN/latest/quick-start-guide.htmlVearch可通過編譯的方式使用restful API接口,簡單單機驗證型場景可通過Pip install vearch安裝,編譯完成後,配置如下配置文件:執行命令:./vearch -conf config.toml,同時啟動master,ps,router機器

3.1 Vearch和resnet構建圖像搜尋引擎

針對人臉識別場景,基於resnet50跟vearch四步搭建人臉識別搜索系統。需要提前訓練並已部署好的圖片特徵向量提取模型resnet50,準備好人臉資料庫。

下面以restful API使用方式展示詳細搭建步驟:

Step1:創建人臉引擎

Step2:創建人臉數據表

max_size:資料庫中數據尺寸大小

retrieval_type有IVFPQ跟HNSW以及二進位三種選擇,IVFPQ存儲的是壓縮後的特徵向量,這可以大大提升搜索效率,但是搜索精度也會有所下降,nsubvector表示壓縮後的維度設置,故IVFPQ適合數億級別數據集。HNSW是存儲原始特徵向量,故適合千萬級別數據。Ncentroids表示搜索時數據的聚類的類別數目,可根據特定場景靈活設置。

如果數據有明顯的欄位可設置的話,建議設置,比如人臉識別的性別,商品的品類等,後期搜索可大大提升檢索速度

Step3:插入人臉數據

可以單條插入也可以批量插入

Step4:查詢

查詢時可以通過設置欄位過濾的方式,極大提升搜索速度,比如人臉識別中性別欄位與年齡欄位。當查詢face是男兒童時,可以通過設置性別與年齡範圍大大縮小查詢數據集的大小,極大地提升搜索速度與效率。也可通過size欄位設置查詢結果數量。

3.2 vearch在拍照購場景搭建搜尋引擎

訓練並部署商品圖片特徵提取模型,也用上述resnet50,準備電商場景各品類商品圖片庫,採用python SDK方式搭建拍照購索索引擎,同樣四步搭建。

Step1:創建拍照購引擎

Step2:創建商品數據表

Step3:插入商品數據

Step4:查詢及結果展示

3.3 vearch的分布式使用Vearch的分布式部署如下圖,只需要修改集群配置文件,修改如果master的ip部分,並將配置文件複製到集群每臺機器中,分別在master,ps,router機器上執行對應啟動命令即可。

3.4 vearch的plugin使用方式

Plugin方式是我們針對常用文本,圖像場景內置了通用提取文本特徵的bert模型跟提取圖片特徵向量的resnet,vgg模型等常規模型,很多精確度需求不高且需要快速獲取結果的場景使用,此時引擎配置時model部分設置預置的模型即可,直接構建自己的向量資料庫進行相似性搜索即可。如下圖

Plugin使用

總結

Vearch具有實時查詢、方便維護,易於擴展等特性,同時提供了多種使用方式且部署靈活,同時支持深度學習落地絕大多數相似性向量搜索場景,不論輸入是文本、圖片、音頻還是視頻,只要能通過深度學習編碼成高維特徵向量,就可用vearch來一鍵部署對應的搜索系統。

相關焦點

  • 推薦算法系統/人臉識別/深度學習對話機器人高級實戰課
    包含了推薦算法系統實戰、深度學習人臉識別實戰、深度學習對話機器人實戰等高級前沿的精品課程,下面分別介紹下各個實戰項目:1、推薦算法系統實戰首先推薦系統不等於推薦算法,更不等於協同過濾。這麼來說,雖然算法是核心,但離不開每個子系統的配合,另外就是不同算法可以嵌入到各個子系統中,算法可以貫穿到每個子系統。從開發人員角色上來講,推薦系統不僅僅只有算法工程師角色的人就能完成整個系統,需要各個角色的工程師相配合才行。
  • 兩位專家詳解TEE聯邦學習與開源向量...
    其中富數科技首席科學家陳立峰的講解主題為《基於TEE增強的聯邦學習與多方安全計算平臺解析》,Zilliz 數據工程師李晴的講解主題為《開源向量相似搜尋引擎Milvus的框架與應用》。數據的隱私問題一直是人們所關心的焦點問題。尤其是工業界來說,隨著對數據安全的重視和隱私保護法案的出臺,以前粗放式的數據共享受到挑戰,各個數據擁有者重新回到數據孤島的狀態。
  • 從理論到實踐,一文詳解 AI 推薦系統的三大算法
    然後通過兩個feature向量的內積來判斷用戶對一個物品的喜好程度。雖然這個方法不要求共同評分,但推薦系統還是面臨很大的數據稀疏問題。算法邏輯作為CF的兩大基本分類,鄰域的相關算法比較簡單不再介紹,本文主要介紹SVD,不過在介紹SVD之前,先對K-Means做個簡單的說明K-means算法介紹推薦系統大多數都是基於海量的數據進行處理和計算,要在海量數據的基礎上進行協同過濾的相關處理,運行效率會很低,為了解決這個問題通常是先使用
  • 基於向量空間的知識圖譜查詢及結果解釋
    為了讓大家對知識圖譜有更深入的認識,今天這篇文章將由東南大學計算機科學與工程學院王萌老師為我們講解基於向量空間的知識圖譜查詢及結果解釋。知識圖譜的向量模型之前是通過關係資料庫或者圖資料庫,採用傳統的方式存儲。但在2015年,谷歌的工程師就思考用向量表示網絡和知識圖譜。由此產生的概念是表示學習,如果看經典機器學習的書,第一就是介紹表示學習,即通過機器學習得到數據的表示形式,以及分布式表示和連續的向量的概念。
  • 聊聊分布式系統的數據一致性
    以前都是碰到問題見招拆招,看一些分布式系統中偏理論的研究時也是覺得雲裡霧裡,所以也想趁這次機會好好梳理一下,整理出的內容也希望能夠對大家以後的開發工作起到幫助。數據多副本間的一致性存儲系統是千差萬別的,可以拿來存放視頻這種動輒幾個G的大文件,也可以存放幾KB的KV鍵值對數據,還可能是MySQL這種關係型的資料庫。
  • 阿里雲高效基因序列檢索助力新冠肺炎病毒序列快速分析
    基因序列檢索技術也可以檢索與新冠肺炎病毒相似的病毒基因序列,例如SARS、MERS等病毒,從而借鑑相關藥物靶點設計機制,更快、更高效地研發檢測試劑盒、疫苗以及相關的治療藥物。基於當下疫情的快速蔓延,當前的基因匹配算法太慢,迫切需要高效匹配算法進行基因序列檢索。
  • 阿里雲推出高效病毒基因序列檢索功能,它的底層邏輯原來是這樣的
    基因檢索的演示界面如圖1,用戶將冠狀病毒的序列(COVID-19)上傳到AnalyticDB基因檢索工具中來。系統在幾個毫秒就可以檢索到相似的基因片段(當前系統只返回匹配度超過0.8的基因片段)。我們可以看到,穿山甲攜帶的冠狀病毒(GD/P1L),蝙蝠攜帶的冠狀病毒(RaTG13),以及SARS和MARS病毒被返回出來。
  • 京東數科首度公開聯邦學習戰略全布局,薄列峰詳解兩大算法突破
    邀請京東數字科技AI實驗室首席科學家薄列峰做客公開課,以《京東數科的聯邦學習戰略全布局》為題進行分享。就是在滿足數據隱私安全和監管要求的前提下,讓人工智慧系統更加高效準確地共同使用各自數據的機器學習框架。
  • 後端工程師,必須搞懂的 RPC 框架
    去年我面試一位高級後端工程師的時候,看他簡歷上寫著「熟練掌握 RPC 框架」,所以我就試探著問了他幾個原理方面的問題,比如,「大概說下 RPC 框架的核心原理」「、描述下序列化部分的邏輯」。但聊了半天,我發現他其實並不熟,他的回答基本都是在告訴我怎麼用,以及怎麼更好地用好這些框架。
  • 基於MPPT算法的光伏發電併網系統仿真研究
    針對目前光伏發電併網系統仿真模型參數較多、數據計算複雜等問題,本文提出一種基於Matlab/Simulink帶有MPPT算法的光伏發電併網仿真模型,該模型考慮了環境溫度、光照強度、光伏陣列串並連數、光伏模塊參數對I-V特性、逆變併網對電網的影響。
  • 基於卡爾曼濾波器及多傳感狀態的融合估計算法介紹
    針對動態系統(1) 和(2) ,Kalman 遞推濾波算法如下:  2 多傳感狀態融合估計算法  單採樣率多傳感器狀態融合估計的研究方法主要有基於概率論的方法、基於Kalman 濾波的方法、基於推理網絡的方法、基於模糊理論的方法、基於神經網絡的方法, 以及基於小波
  • 京東私有雲三大技術方向解析
    去年11.11時,曾有數家媒體對京東的雲基礎架構服務進行過採訪。當時京東雲平臺首席架構師、系統技術部負責人劉海鋒就京東文件系統、分布式緩存與高速KV服務、新消息隊列、新服務框架等進行了闡述。為此,2013年8月,劉海鋒的團隊開始自主研發大規模分布式存儲系統——京東文件系統(JFS)。
  • 機械工程師聯盟(2016年-20201207)
    2018-08-10衝壓、焊接、塗裝--3大汽車關鍵製造工藝詳解!看完你就明白了歐美車企的至暗時刻:超8萬人等著被裁,德國已爆發遊行示威2019-12-12一文讀懂Cp、Cpk、Pp、Ppk,高級篇!102頁PPT詳解金屬加工工藝基礎一文全面了解齒輪知識?推薦收藏2019-12-15GD&T最詳細的公差原則講解詳解 | 如何寫一份客戶滿意的8D報告?
  • 專欄| NLP概述和文本自動分類算法詳解
    原標題:專欄 | NLP概述和文本自動分類算法詳解 機器之心專欄 作者:達觀數據 本文根據達觀數據聯合創始人張健的直播內容《NLP 概述及文本自動分類算法詳解》整理而成。 一、 NLP 概述 1.
  • 視覺信息助力廣告點擊率預估-京東廣告團隊技術論文入圍KDD2020
    論文構建了一種基於特定類目的卷積神經網絡(Category-Specific CNN, CSCNN),該算法有效利用了電商領域中豐富的商品類目信息,創新性的將商品類目信息與商品主圖共同作為主圖特徵提取模塊的輸入,提取基於特定先驗類目信息的商品主圖特徵,大大提高了CTR預估的準確度。 儘管京東的廣告業務在業界起步的比較晚,但增速卻讓人刮目相看。
  • 視覺信息助力廣告點擊率預估——京東廣告團隊技術論文入圍KDD2020
    近日,來自京東廣告團隊的一篇論文《Category-Specific CNN for Visual-aware CTR Prediction at JD.com》,即《在京東,視覺助力點擊率預估——基於給定類目信息的卷積神經網絡》被KDD2020成功收錄。
  • 京東DNN Lab新品用戶營銷的兩種技術方案
    為了篩選出最有可能轉化的用戶,京東DNN實驗室結合大數據進行了相關研究。本文以新品手機為例,使用商品相似度和基於分類的手段進行用戶群篩選。餘弦相似度的篩選方式在實際應用中,我們為了找出相似的文章或者相似新聞,需要用到「餘弦相似性」,下面我們舉例說明什麼是餘弦相似性。為了簡單起見,我們來看兩個簡單的句子。句子A:我喜歡吃中餐,不喜歡吃西餐。
  • 98頁PPT,看懂阿里、小米、京東、美團的組織架構和戰略變遷
    告訴你一個秘密,關注我們的都是行業大佬和精英今天分享的這篇文章,來自方正證券發布的名為 「從組織架構視角出發,回顧四大商業巨頭的戰略變遷——阿里、小米、京東、美團」的報告。這份長達98頁PPT的報告很詳細地梳理了四家公司的發展階段及對應的組織架構調整,還是有點意思的。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • 基於用戶畫像與新聞詞向量的個性化新聞推薦模型
    個性化推薦系統通過分析用戶的歷史信息和行為數據,預測用戶興趣愛好,從而向用戶推薦感興趣或潛在興趣的信息,並針對不同的用戶給出不同的個性化展示頁面,以此來提高網站的點擊率和收益。 目前常用的推薦算法主要分為三類:基於內容的推薦算法[3]、協同過濾推薦算法[1][4]以及混合推薦算法。