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

2020-12-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來一鍵部署對應的搜索系統。

相關焦點

  • 英特爾與京東優化分布式特徵向量檢索系統Vearch,加速AI應用創新
    英特爾和京東一起,在基於英特爾至強可擴展處理器的伺服器上,開發了服務於 AI 時代的分布式向量搜索系統Vearch,讓京東的業務綜合性能獲得顯著提升,從而顯著加速重複圖片去重、相似性商品圖片搜索、人臉識別等 AI 應用的響應速度。
  • 英特爾與京東聯合強化AI武器:讓創新更專注
    為了給AI領域的向量檢索提供基礎系統支撐與保障,京東與英特爾合作,在基於英特爾®至強®可擴展處理器的伺服器上對分布式特徵向量檢索系統Vearch 進行優化,藉助英特爾軟硬結合優勢,幫助企業改進重複圖片去重、相似性商品圖片搜索、人臉識別等 AI 應用的響應速度,並大幅降低特徵向量檢索系統總體擁有成本(TCO)。
  • 向量檢索的應用
    |常見應用場景 圖片、視頻、語音、文本等非結構化數據可以通過人工智慧技術(深度學習算法)提取特徵向量,然後通過對這些特徵向量的計算和檢索來實現對非結構化數據的分析與檢索。針對向量檢索常見的應用場景有[2]: 圖片識別:以圖搜圖,通過圖片檢索圖片。
  • 資深數據挖掘工程師29頁PPT詳解圖推薦算法在E&E問題上的應用【附PPT下載】
    本次分享將圍繞以圖為基礎衍生的一類推薦算法原理和應用,以及 E&E 問題 ( 如何應對新用戶和新內容 ) 的一些處理方法。E&E 指探索與利用,是推薦系統當中的兩個核心問題。完整分享PPT可在本公眾號後臺回復「推薦系統01」獲取。
  • Milvus 實戰 | 基於 Milvus 的食譜檢索系統
    跨模態檢索是指用一種類型的數據去查詢另一種不同類型的數據。處理跨模態檢索問題通過把不同模態的數據映射到同一高維向量空間進行比較來完成檢索任務。跨模態檢索有著豐富的應用場景,如使用圖像與文本檢索監控視頻,電商網站搜索商品等問題。本文將介紹如何使用 Milvus 實現一個通過食物圖片查詢相應食譜的跨模態檢索系統。
  • 算法推薦組:數據平臺(高級)工程師等
    數據平臺(高級)工程師 北京 經驗3-5年 碩士及以上 全職 職位描述:1、設計和實現通用的數據分析系統,降低數據的使用門檻,支持業務團隊基於通用的系統高效地、自助化、規範化地進行數據處理和分析,實現數據的最大價值;2、為海量用戶行為數據構建設計良好的數據 pipeline、數據倉庫
  • 【SDCC 2015現場】算法實踐論壇(上):網易、京東、騰訊的算法優化...
    現場詳解如何通過基於搜索用戶日誌挖掘、基於Query短語權重的相似性糾錯等Query優化手段實現RPM上升,「精確」召回更多廣告,提升單次點擊價格。、通用模型、排序預測、監控四個方面詳細剖析了京東商城在推薦系統應用方面的實踐。
  • Milvus 實戰 | 基於 Milvus 的圖像查重系統
    目前大部分論文查重系統只能檢查論文文字,不能檢查圖片。因此,論文圖片查重已然成為了學術論文原創性檢測的重要部分。 本項目主要針對論文圖像進行查重。算法是整個查重系統中的核心。本項目基於深度學習的方法,通過 ResNet 模型推理得到圖像的特徵向量,並利用 Milvus 構建圖像特徵向量庫。同時,Milvus 會自動為向量構建索引。
  • NLP: 基於文本語義的智能問答系統
    (word2vec、doc2vec、elmo、bert等),然後把這種特徵向量進行索引(faiss/Milus) ,最終實現在線服務系統的檢索,然後再通過一定的規則進行過濾,獲取最終的數據內容。它包含多種搜索任意大小向量集(備註:向量集大小由RAM內存決定)的算法,以及用於算法評估和參數調整的支持代碼。Faiss用C++編寫,並提供與Numpy完美銜接的Python接口。除此以外,對一些核心算法提供了GPU實現。相關介紹參考《Faiss:Facebook 開源的相似性搜索類庫》
  • 基於分布式帳本技術的跨境支付系統應用
    分布式帳本技術及其在跨境支付領域的應用分析分布式帳本是一種在網絡成員之間共享、複製和同步的資料庫。與典型的帳本系統不同,分布式帳本系統由該系統的所有參與者而不是由一個中心方(例如銀行或清算中心)進行維護。它以密碼學技術為基礎,通過分布式多節點共識機制,完整、不可篡改地記錄交易過程。
  • 完美的分布式監控系統——普羅米修斯
    DevOps工程師或SRE工程師,可能都知道Prometheus普羅米修斯。Prometheus於2012年由SoundCloud創建,目前已經已發展為最熱門的分布式監控系統。Prometheus完全開源的,被很多雲廠商(架構)內置,在這些廠商(架構)中,可以簡單部署Prometheus,用來監控整個雲基礎架構設施。
  • 推薦系統產品與算法概述
    下面圖1是電視貓(一款基於OTT端[智能電視或者智能盒子]的視頻播放軟體)的推薦系統的業務流程,包含召回、排序和業務調控三大算法和策略模塊,可以作為大家設計推薦系統算法模塊的參考。本文只講解召回、排序兩個階段涉及到的算法,業務調控跟具體業務及公司運營策略強相關,本文不做過多描述。
  • 分布式商業公鏈BitCherry BCHC項目詳解(二):aBFT+PoUc共識算法
    作為全球首個基於IPv8技術服務於分布式商業的可擴容區塊鏈基礎設施,BitCherry以革新物理層的全新思維搭建P2Plus點對點加密網絡協議,通過由關係圖譜改進的哈希圖實現高度可擴展的數據架構,提供智能合約、跨鏈共識等運行機制,為全球商業提供高性能、高安全、高可用的底層技術支持,服務涉及供應鏈金融、產品溯源、資產數位化、商業消費、電商、分布式雲計算等眾多領域。
  • 基於關鍵詞的文本內容過濾算法的研究與應用
    摘要:本文對目前文本過濾技術進行了調研,並在此基礎上利用空間向量模型作為用戶需求模板,使用餘弦距離計算文本相似度,採用K-means算法進行文本聚類分析效果優化,提出了基於關鍵詞的文本內容過濾模型,能夠為人民網用戶個性化推薦新聞、廣告、文章等信息,縮簡訊息檢索時間,最大程度為用戶提供其感興趣的內容
  • 算法工程師都有哪些分類?
    圖像算法工程師,圖像處理工程師,音/視頻處理算法工程師,計算機視覺工程師(1) 精通DirectX HLSL和OpenGL GLSL等shader語言,熟悉常見圖像處理算法GPU實現及優化;(2) 語言:精通C/C++;(3) 工具:Matlab數學軟體,CUDA運算平臺,VTK圖像圖形開源軟體【醫學領域:ITK,醫學圖像處理軟體包】(4)
  • 你知道算法工程師的分類嗎?
    算法工程師的技能樹(不同方向差異較大,此處僅供參考)1 機器學習2 大數據處理:熟悉至少一個分布式計算框架Hadoop/Spark/Storm/ map-reduce/MPI3 數據挖掘4 紮實的數學功底5 至少熟悉C/C++或者Java,熟悉至少一門程式語言例如java/python
  • 張洋:淺析PageRank算法——十大數據挖掘算法之一
    從本質上說,搜尋引擎是一個資料檢索系統,搜尋引擎擁有一個資料庫(具體到這裡就是網際網路頁面),用戶提交一個檢索條件(例如關鍵詞),搜尋引擎返回符合查詢條件的資料列表。理論上檢索條件可以非常複雜,為了簡單起見,我們不妨設檢索條件是一至多個以空格分隔的詞,而其表達的語義是同時含有這些詞的資料(等價於布爾代數的邏輯與)。
  • 基於向量空間的知識圖譜查詢及結果解釋
    為了讓大家對知識圖譜有更深入的認識,今天這篇文章將由東南大學計算機科學與工程學院王萌老師為我們講解基於向量空間的知識圖譜查詢及結果解釋。知識圖譜的向量模型之前是通過關係資料庫或者圖資料庫,採用傳統的方式存儲。但在2015年,谷歌的工程師就思考用向量表示網絡和知識圖譜。由此產生的概念是表示學習,如果看經典機器學習的書,第一就是介紹表示學習,即通過機器學習得到數據的表示形式,以及分布式表示和連續的向量的概念。
  • 破局傳統算法痛點,騰訊安全首提基於跨模態檢索的二進位代碼-源...
    該論文首次提出了基於AI的二進位代碼/原始碼端到端匹配算法,與傳統算法相比,準確率大幅提升,並為逆向分析領域提供了新的思路,可提升工業部署方面的效率。目前,該論文成果已在騰訊安全科恩實驗室研發的代碼檢索工具BinaryAI實現了落地應用。
  • 從理論到實踐,一文詳解 AI 推薦系統的三大算法
    然後通過兩個feature向量的內積來判斷用戶對一個物品的喜好程度。雖然這個方法不要求共同評分,但推薦系統還是面臨很大的數據稀疏問題。算法邏輯作為CF的兩大基本分類,鄰域的相關算法比較簡單不再介紹,本文主要介紹SVD,不過在介紹SVD之前,先對K-Means做個簡單的說明K-means算法介紹推薦系統大多數都是基於海量的數據進行處理和計算,要在海量數據的基礎上進行協同過濾的相關處理,運行效率會很低,為了解決這個問題通常是先使用