首先践惑,附上 Github 鏈接MetaSpore:https://github.com/meta-soul/MetaSpore浇辜,可搜索公眾號(hào)元靈數(shù)智砂轻,在底部菜單了解我們 - 用戶交流獲取官方技術(shù)交流群二維碼牙言,進(jìn)群與業(yè)內(nèi)大佬進(jìn)行技術(shù)交流鹏倘。
隨著深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺缝驳、自然語言處理栏尚、語音理解等領(lǐng)域不斷取得創(chuàng)新性突破,越來越多的非結(jié)構(gòu)化數(shù)據(jù)被機(jī)器進(jìn)行感知拥峦、理解和加工贴膘。這些進(jìn)展主要得益于深度學(xué)習(xí)的強(qiáng)大表征學(xué)習(xí)能力,通過在海量數(shù)據(jù)上對(duì)深度模型進(jìn)行預(yù)訓(xùn)練略号,使得模型捕捉到數(shù)據(jù)內(nèi)在模式刑峡,進(jìn)而對(duì)大量下游任務(wù)帶來幫助。隨著工業(yè)界和學(xué)術(shù)界投入越來越多精力在預(yù)訓(xùn)練技術(shù)研究上玄柠,陸續(xù)出現(xiàn)了 HuggingFace 和 Timm 這樣的預(yù)訓(xùn)練模型分發(fā)倉庫突梦,預(yù)訓(xùn)練大模型紅利正在被開源社區(qū)以前所未有的速度在釋放著。
近年來機(jī)器建模和理解的數(shù)據(jù)形態(tài)逐漸從單模態(tài)向多模態(tài)演進(jìn)羽利,不同模態(tài)之間的語義鴻溝正在消弭宫患,使得跨模態(tài)檢索落地成為可能。以 OpenAI 的開源工作 CLIP 為例铐伴,在 4 億圖文數(shù)據(jù)集上對(duì)圖文雙塔模型進(jìn)行預(yù)訓(xùn)練撮奏,將圖像和文本之間的語義銜接了起來俏讹,學(xué)術(shù)界已經(jīng)有不少研究人員在基于這項(xiàng)技術(shù)解決圖文生成、檢索等多模態(tài)問題畜吊≡蠼回到工業(yè)界來看,雖然前沿技術(shù)打通了多模態(tài)數(shù)據(jù)之間的語義鴻溝玲献,但依然存在繁復(fù)的模型調(diào)優(yōu)殉疼、離線數(shù)據(jù)處理、高性能的線上推理架構(gòu)設(shè)計(jì)捌年、異構(gòu)計(jì)算以及在線算法應(yīng)用落地等多個(gè)流程和挑戰(zhàn)瓢娜,這些都阻礙了前沿多模態(tài)檢索技術(shù)的落地和普惠。
北京數(shù)元靈科技針對(duì)以上技術(shù)痛點(diǎn)礼预,對(duì)模型訓(xùn)練優(yōu)化眠砾、線上推理、算法實(shí)驗(yàn)等多個(gè)環(huán)節(jié)進(jìn)行抽象統(tǒng)一托酸,形成一套可以快速應(yīng)用離線預(yù)訓(xùn)練模型到線上的解決方案褒颈。本文將向大家介紹,如何基于 MetaSpore 技術(shù)生態(tài)來使用 HuggingFace 社區(qū)預(yù)訓(xùn)練模型進(jìn)行線上推理和算法實(shí)驗(yàn)励堡,讓預(yù)訓(xùn)練模型紅利更充分釋放到工業(yè)界谷丸、普惠到中小企業(yè)的具體業(yè)務(wù)中,并且我們會(huì)給出以文搜文和以文搜圖兩個(gè)多模態(tài)檢索演示樣例供大家參考应结。
1.多模態(tài)語義檢索
本文介紹的多模態(tài)檢索演示樣例架構(gòu)如下:我們的多模態(tài)檢索系統(tǒng)同時(shí)支撐以文搜文和以文搜圖應(yīng)用場景刨疼,含有離線處理、模型推理以及在線服務(wù)等核心模塊:
1.離線處理鹅龄,含有以文搜文和以文搜圖不同應(yīng)用場景的離線數(shù)據(jù)處理流程揩慕,包括模型調(diào)優(yōu)、模型導(dǎo)出扮休、數(shù)據(jù)索引建庫漩绵、數(shù)據(jù)推送等。
2.模型推理肛炮,離線模型訓(xùn)練完畢之后,我們基于 MetaSpore Serving 框架宝踪,部署我們的 NLP侨糟、CV 大模型,MetaSpore Serving 可以幫助我們方便地進(jìn)行在線推理瘩燥、彈性調(diào)度秕重、負(fù)載均衡,以及在異構(gòu)環(huán)境中進(jìn)行資源調(diào)度厉膀。
3.在線服務(wù)溶耘,我們基于 MetaSpore 在線算法應(yīng)用框架二拐,打造了一套完整可重用的在線檢索服務(wù),包括:前端檢索 UI凳兵、多模態(tài)數(shù)據(jù)預(yù)處理百新、向量召回和排序算法、AB 實(shí)驗(yàn)框架等庐扫,同時(shí)支撐以文搜文和以文搜圖場景饭望,并可低成本遷移到其它應(yīng)用場景。
一般來說形庭,對(duì)于類似的多模態(tài)檢索問題铅辞,HuggingFace 開源社區(qū)已經(jīng)提供了很多優(yōu)秀的基線模型,工業(yè)界的實(shí)際優(yōu)化往往也是以此為起點(diǎn)萨醒。我們?cè)谝晕乃盐暮鸵晕乃褕D的線上服務(wù)中同樣使用了 HuggingFace 社區(qū)的預(yù)訓(xùn)練模型斟珊,其中以文搜文基于我們調(diào)優(yōu)的問答領(lǐng)域語義相似模型,以文搜圖基于開箱即用的社區(qū)預(yù)訓(xùn)練模型富纸。
這些社區(qū)開源預(yù)訓(xùn)練模型會(huì)被導(dǎo)出為通用 ONNX 格式囤踩,并載入 MetaSpore Serving 進(jìn)行在線推理,下文會(huì)對(duì)模型的導(dǎo)出上線胜嗓、數(shù)據(jù)的檢索建庫以及在線檢索算法服務(wù)等內(nèi)容展開詳細(xì)的介紹高职。其中模型推理的部分,是標(biāo)準(zhǔn)化的 SAAS 服務(wù)辞州,和業(yè)務(wù)的耦合性較低怔锌,感興趣的讀者可以參考我們之前的公眾號(hào)文章:揭秘!新一代一站式機(jī)器學(xué)習(xí)平臺(tái)MetaSpore的設(shè)計(jì)理念变过。
1.1 離線處理
離線處理主要涉及到上線模型的導(dǎo)出和載入以及文檔庫的索引建庫和推送埃元,大家可以按照下文逐步指引來完成以文搜文和以文搜圖檢索的離線處理工作,通過這兩個(gè)樣例大家也可以了解離線預(yù)訓(xùn)練模型是怎樣實(shí)現(xiàn)在 MetaSpore Serving 上推理的媚狰。
1.1.1 以文搜文
傳統(tǒng)的文本檢索系統(tǒng)基于 BM25 之類的字面匹配算法實(shí)現(xiàn)岛杀,由于用戶表達(dá) query 查詢?cè)~多種多樣,往往會(huì)遇到查詢?cè)~跟文檔之間語義鴻溝的問題崭孤,比如用戶把 “iPhone” 錯(cuò)拼為 “Ihone”类嗤、查詢?cè)~極為長尾 “1~3月齡男嬰秋季小尺碼包包褲”等,傳統(tǒng)文本檢索系統(tǒng)會(huì)利用拼寫糾錯(cuò)辨宠、同義詞擴(kuò)展遗锣、查詢?cè)~改寫等手段來緩解語義鴻溝問題,但未能從根本上解決這個(gè)問題嗤形。檢索系統(tǒng)只有充分理解了用戶查詢?cè)~和文檔的語義精偿,才能夠在語義層面滿足用戶的檢索訴求,近年來隨著預(yù)訓(xùn)練和表征學(xué)習(xí)技術(shù)不斷進(jìn)步,一些商業(yè)搜索引擎不斷將基于表征學(xué)習(xí)的語義向量檢索方法融入到檢索生態(tài)中笔咽。
語義檢索模型
本文介紹的以文搜文是一套完全基于語義向量檢索的應(yīng)用搔预,我們以百科問答數(shù)據(jù)為基礎(chǔ),構(gòu)建了一套問答語義檢索系統(tǒng)叶组。我們采用了 Sentence-BERT 模型作為語義向量表示模型拯田,該模型通過監(jiān)督或無監(jiān)督方式來對(duì)雙塔 BERT 進(jìn)行微調(diào),使得模型更適配檢索任務(wù)扶叉,模型結(jié)構(gòu)如下:
由于文本表示模型要在線上對(duì) query 進(jìn)行向量編碼酪劫,因此我們需要導(dǎo)出該模型吞鸭,以供在線服務(wù)使用。進(jìn)入問答數(shù)據(jù)的建庫代碼目錄覆糟,參照說明文檔將模型導(dǎo)出刻剥,在腳本中會(huì)利用 Pytorch 的 Tracing 機(jī)制來完成導(dǎo)出。模型將被導(dǎo)出到 ./export 目錄滩字,導(dǎo)出內(nèi)容主要有線上推理使用的 ONNX 模型和預(yù)處理模型 Tokenizer 以及有關(guān)配置文件造虏,導(dǎo)出模型會(huì)被下文介紹的線上服務(wù)體系載入到 MetaSpore Serving 中進(jìn)行模型推理(注:由于導(dǎo)出模型會(huì)被拷貝到云存儲(chǔ),需要在 env.sh 中配置相關(guān)變量)麦箍。
文本搜索建庫
以文搜文檢索基于百萬級(jí)百科問答數(shù)據(jù)集來構(gòu)建檢索庫漓藕,大家需要下載此數(shù)據(jù)并根據(jù)說明文檔完成建庫,問答數(shù)據(jù)會(huì)被離線模型編碼為向量挟裂,然后建庫數(shù)據(jù)將被推送到服務(wù)組件中享钞。整個(gè)建庫過程說明如下:
1.預(yù)處理,把原始數(shù)據(jù)轉(zhuǎn)換為較為通用的 jsonline 格式以供建庫使用诀蓉;
2.構(gòu)建索引栗竖,使用跟線上相同的模型 sbert-chinese-qmc-domain-v1 來索引文檔(每行一個(gè)文檔對(duì)象);
3.推送倒排和正排渠啤,把倒排(向量)和正排(文檔字段)數(shù)據(jù)分別推送到各個(gè)組件服務(wù)端划滋。
建庫數(shù)據(jù)格式樣例如下所示。離線建庫完成后埃篓,各種數(shù)據(jù)被推送到對(duì)應(yīng)的服務(wù)組件中,比如 Milvus會(huì)存儲(chǔ)文檔的向量表示根资、 MongoDB會(huì)存儲(chǔ)文檔的摘要信息架专,這些服務(wù)組件會(huì)被在線檢索算法服務(wù)所調(diào)用來獲取相關(guān)數(shù)據(jù)同窘。
# 預(yù)處理
{"id": "0", "question": "人站在地球上為什么沒有頭朝下的感覺 ", "answer": "地球上重力作用一直是指向球心的,因此<br/>只要頭遠(yuǎn)離球心部脚,人們就回感到頭朝上想邦。", "category": ["教育/科學(xué)", "理工學(xué)科", "地球科學(xué)"]}
# Milvus
{"id": 0, "image_emb": [-0.058228425681591034, -0.006109456066042185, -0.005825215484946966,...,-0.04344896227121353, 0.004351312294602394]}
# MongoDB
{"question" : "人站在地球上為什么沒有頭朝下的感覺 ", "answer" : "地球上重力作用一直是指向球心的,因此<br/>只要頭遠(yuǎn)離球心委刘,人們就回感到頭朝上丧没。", "category": ["教育/科學(xué)", "理工學(xué)科", "地球科學(xué)"], "queryid" : "0" }
1.1.2 以文搜圖
文本和圖像對(duì)于人類來說很容易把它們的語義關(guān)聯(lián)起來,但對(duì)機(jī)器來說卻較為困難锡移。首先從數(shù)據(jù)形式上來看呕童,文本是基于字和詞的離散 ID 型一維數(shù)據(jù),而圖像則是連續(xù)型的二維或三維數(shù)據(jù)淆珊;還有文本是人類主觀的創(chuàng)作夺饲,其表達(dá)能力極為豐富,含有各種轉(zhuǎn)折施符、隱喻等表述方式往声,而圖像則是對(duì)客觀世界的機(jī)器表示;總之戳吝,要將文本和圖像數(shù)據(jù)之間的語義鴻溝打通遠(yuǎn)比上述以文搜文要難很多浩销。傳統(tǒng)以文搜圖檢索技術(shù),一般會(huì)依賴圖片的外部文本描述數(shù)據(jù)或者近鄰檢索技術(shù)听哭,通過圖像關(guān)聯(lián)文本進(jìn)行檢索本質(zhì)上就是將問題退化為了以文搜文慢洋,但這樣也會(huì)面臨諸多問題,比如圖片關(guān)聯(lián)文本如何獲取欢唾、以文搜文本身準(zhǔn)確度是否足夠高等等且警。近年深度模型逐漸從單模態(tài)向多模態(tài)演進(jìn),以 OpenAI 的開源工作 CLIP為例礁遣,通過互聯(lián)網(wǎng)上海量的圖文數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練斑芜,將文本和圖像數(shù)據(jù)映射到同一個(gè)語義空間中,使得基于語義向量的以文搜圖技術(shù)落地成為可能祟霍。
CLIP圖文模型
本文介紹的以文搜圖基于語義向量檢索來實(shí)現(xiàn)杏头,以 CLIP 預(yù)訓(xùn)練模型作為雙塔檢索架構(gòu),由于 CLIP 模型已經(jīng)在海量圖文數(shù)據(jù)上對(duì)雙塔的文本和圖像側(cè)模型進(jìn)行了語義對(duì)齊訓(xùn)練沸呐,使其特別適合以文搜圖場景醇王,模型結(jié)構(gòu)如下:由于圖片和文本數(shù)據(jù)形態(tài)不同,以文搜圖檢索使用了 query-doc 非對(duì)稱雙塔模型崭添,離線建庫時(shí)需要用到雙塔的圖像側(cè)模型寓娩,線上檢索時(shí)需要用到雙塔的文本側(cè)模型,最終在線檢索時(shí)文本側(cè)模型編碼 query 后會(huì)對(duì)圖像側(cè)模型的建庫數(shù)據(jù)進(jìn)行查找,而圖文之間的語義相關(guān)性則由 CLIP 預(yù)訓(xùn)練模型得到保證(通過在海量圖文數(shù)據(jù)上預(yù)訓(xùn)練棘伴,模型能夠?qū)D文對(duì)在向量空間中不斷拉近)寞埠。
這里我們需要把文本側(cè)模型導(dǎo)出以供線上 MetaSpore Serving 推理。由于我們檢索場景是基于中文的焊夸,所以選用了支持中文理解的 CLIP 模型仁连。模型導(dǎo)出的具體操作參見文末說明文檔,跟以文搜文類似阱穗,導(dǎo)出內(nèi)容主要有線上推理使用的 ONNX 模型和預(yù)處理模型 Tokenizer饭冬,MetaSpore Serving 可以通過導(dǎo)出內(nèi)容來載入模型推理。
圖像搜索建庫
以文搜圖檢索使用了 Unsplash Lite 圖庫數(shù)據(jù)揪阶,需要前往下載該數(shù)據(jù)并根據(jù)說明文檔指引完成建庫操作昌抠。整個(gè)建庫過程說明如下:
1.預(yù)處理,指定圖片目錄遣钳,然后生成一個(gè)較為通用的 jsonline 文件供建庫使用扰魂;
2.構(gòu)建索引,使用 openai/clip-vit-base-patch32 預(yù)訓(xùn)練模型對(duì)圖庫進(jìn)行索引蕴茴,輸出索引數(shù)據(jù)每行一個(gè)文檔對(duì)象劝评;
3.推送倒排和正排,把倒排(向量)和正排(文檔字段)數(shù)據(jù)分別推送到各個(gè)組件服務(wù)端倦淀。
同以文搜文類似蒋畜,離線建庫完成后,相關(guān)數(shù)據(jù)會(huì)被推送到服務(wù)組件撞叽,這些服務(wù)組件會(huì)被在線檢索算法服務(wù)所調(diào)用來獲取相關(guān)數(shù)據(jù)姻成。
1.2 在線服務(wù)
整套在線服務(wù)體系架構(gòu)圖如下:多模態(tài)檢索線上服務(wù)體系,同時(shí)支撐以文搜文愿棋、以文搜圖等應(yīng)用場景科展,整套線上服務(wù)由以下幾部分構(gòu)成:
1.Query 預(yù)處理服務(wù):對(duì)預(yù)訓(xùn)練模型的預(yù)處理邏輯(含文本/圖像等)封裝,以 gRPC 接口提供服務(wù)糠雨;
2.檢索算法服務(wù):含有 AB 實(shí)驗(yàn)切流配置才睹、MetaSpore Serving 調(diào)用、向量召回甘邀、排序琅攘、文檔摘要等整個(gè)算法處理鏈路;
3.用戶入口服務(wù):提供檢索 Web UI 界面松邪,便于用戶對(duì)檢索服務(wù)進(jìn)行調(diào)試坞琴、問題追查。
從用戶請(qǐng)求視角看逗抑,以上幾個(gè)服務(wù)從后往前依次形成調(diào)用依賴關(guān)系剧辐,所以要把多模態(tài)樣例搭建起來寒亥,就需要從前往后依次把各個(gè)服務(wù)先跑起來。當(dāng)然做這些之前荧关,要記得先把離線的模型導(dǎo)出护盈、上線和建庫先搞定哈!接下來我們會(huì)依此介紹在線服務(wù)體系中的各部分服務(wù)羞酗,按照下文引導(dǎo)一步一步把整個(gè)服務(wù)體系搭建起來,更多細(xì)節(jié)參見文末說明文檔紊服。
1.2.1 Query 預(yù)處理服務(wù)
我們知道深度學(xué)習(xí)模型一般都是基于張量(Tensor)的運(yùn)算檀轨,不過 NLP/CV 模型往往有一個(gè)前置預(yù)處理部分,這部分的功能就在于把原始的文本和圖片數(shù)據(jù)轉(zhuǎn)換為深度學(xué)習(xí)模型可接受的張量形式欺嗤。比如 NLP 類模型往往有一個(gè)前置的 Tokenizer 用來把字符串類型的文本數(shù)據(jù)轉(zhuǎn)變?yōu)殡x散型的張量數(shù)據(jù)参萄,還有 CV 類模型也有類似的處理邏輯會(huì)通過前置預(yù)處理來完成對(duì)輸入圖片的裁剪、縮放煎饼、變換等處理讹挎。一方面考慮到這部分預(yù)處理邏輯跟深度模型的張量推理是解耦的,另一方面深度模型的推理有基于 ONNX 獨(dú)立的技術(shù)體系吆玖,所以我們把預(yù)處理這部分邏輯拆解了出來筒溃。
在這里我們重點(diǎn)針對(duì) HuggingFace NLP/CV 模型的預(yù)處理邏輯進(jìn)行了拆解,目前 NLP 預(yù)處理 Tokenizer 已經(jīng)整合進(jìn)入了 Query 預(yù)處理服務(wù)沾乘。我們以較為通用的約定進(jìn)行拆解怜奖,用戶只需要提供預(yù)處理邏輯文件實(shí)現(xiàn)載入和預(yù)測接口,并導(dǎo)出必要的數(shù)據(jù)和配置文件翅阵,就可以被載入到預(yù)處理服務(wù)中歪玲。后續(xù) CV 預(yù)處理邏輯也將以這種方式被集成進(jìn)來。
目前預(yù)處理服務(wù)對(duì)外提供 gRPC 接口調(diào)用掷匠,被檢索算法服務(wù)中的 Query 預(yù)處理(QP)模塊依賴滥崩,用戶請(qǐng)求到達(dá)檢索算法服務(wù)后會(huì)轉(zhuǎn)發(fā)到該服務(wù)完成數(shù)據(jù)預(yù)處理,然后再繼續(xù)后面的處理讹语。關(guān)于預(yù)處理服務(wù)如何啟動(dòng)钙皮、離線導(dǎo)出到云存儲(chǔ)的預(yù)處理模型如何進(jìn)入服務(wù)以及如何調(diào)試服務(wù)等細(xì)節(jié)可以參考說明文檔。
為了進(jìn)一步提升模型推理的效率和穩(wěn)定性募强,我們正在 MetaSpore Serving 中實(shí)現(xiàn) Python 預(yù)處理子模塊株灸,可以通過用戶指定的 preprocessor.py 提供 gRPC 服務(wù),完成 NLP 中的 Tokenizer 或者 CV 相關(guān)的預(yù)處理擎值,將請(qǐng)求轉(zhuǎn)成深度模型可處理的 Tensor慌烧,然后由 MetaSpore Serving 后續(xù)子模塊進(jìn)行模型推理。
這里給出我們?cè)?GitHub 上的代碼實(shí)現(xiàn):https://github.com/meta-soul/MetaSpore/compare/add_python_preprocessor
1.2.2 檢索算法服務(wù)
檢索算法服務(wù)是整個(gè)在線服務(wù)體系中的核心鸠儿,負(fù)責(zé)實(shí)驗(yàn)的分流屹蚊,預(yù)處理厕氨、召回、排序等算法鏈組裝以及依賴組件服務(wù)的調(diào)用等汹粤。整個(gè)檢索算法服務(wù)基于 Java Spring 框架開發(fā)命斧,同時(shí)支持以文搜文和以文搜圖多模態(tài)檢索場景,由于內(nèi)部進(jìn)行了較好的抽象和模塊化設(shè)計(jì)嘱兼,靈活性較高国葬,可以低成本的遷移到類似的應(yīng)用場景中。
接下來簡單地向大家介紹如何配置環(huán)境把檢索算法服務(wù)搭建起來芹壕,更多細(xì)節(jié)參見說明文檔:
1.安裝依賴組件汇四,使用 maven 來安裝 online-serving 組件
2.檢索服務(wù)配置,拷貝模版配置文件并根據(jù)開發(fā)/生產(chǎn)環(huán)境對(duì)里面 MongoDB踢涌、Milvus 等配置進(jìn)行替換通孽。
3.安裝配置 Consul,我們通過 Consul 來實(shí)時(shí)同步檢索服務(wù)的配置睁壁,包括實(shí)驗(yàn)的切流背苦、召回參數(shù)、排序參數(shù)等都可以通過 Consul 實(shí)時(shí)配置潘明。當(dāng)前以文搜文和以文搜圖應(yīng)用的配置參數(shù)見項(xiàng)目中的配置文件行剂,其中預(yù)處理和召回階段的參數(shù) modelName 就是我們?cè)陔x線處理中導(dǎo)出的相應(yīng)模型。
4.啟動(dòng)服務(wù)钉疫,上述配置完成后可以通過入口腳本來啟動(dòng)檢索服務(wù)硼讽。
服務(wù)啟動(dòng)后就可以進(jìn)行測試?yán)玻∨e例來說牲阁,對(duì)于 userId=10 的用戶固阁,想要查詢 “如何補(bǔ)辦身份證”,訪問以文搜文檢索服務(wù):
curl -H "Content-Type: application/json" -X POST -d '{"query":"如何補(bǔ)辦身份證"}' http://localhost:8080/qa/user/10
將得到如下檢索結(jié)果:
{
"queryModel" : {
"query" : "如何補(bǔ)辦身份證"
},
"searchItemModels" : [ [ {
"id" : "823067",
"originalRetrievalScoreMap" : {
"ann_matcher" : 0.9867960810661316
},
"finalRetrievalScore" : 3.9989876453053745,
"originalRankingScoreMap" : {
"dummy" : 3.9989876453053745
},
"finalRankingScore" : 3.9989876453053745,
"score" : 3.9989876453053745,
"summary" : {
"question" : "怎樣補(bǔ)辦身份證 ",
"answer" : "去戶口所在地的公安局辦理 <br/>",
"category" : [ "生活", "美容/塑身", "化妝" ]
}
}, ...] ]
}
1.2.3 用戶入口服務(wù)
考慮到檢索算法服務(wù)是 API 接口形式城菊,較難對(duì)問題定位追查备燃,尤其對(duì)于以文搜圖場景能夠直觀的展現(xiàn)檢索結(jié)果便于檢索算法的迭代優(yōu)化。為此我們針對(duì)以文搜文和以文搜圖檢索場景提供了一個(gè)輕量的 Web UI 界面凌唬,為用戶提供了一個(gè)搜索輸入框和結(jié)果展示頁面并齐。服務(wù)基于 Flask 開發(fā),可以方便的集成其它檢索應(yīng)用客税,該服務(wù)會(huì)調(diào)用檢索算法服務(wù)并把返回結(jié)果展示到頁面中况褪。
服務(wù)安裝和啟動(dòng)也很方便,啟動(dòng)完成后更耻,前往 http://127.0.0.1:8090 去查看搜索 UI 服務(wù)是否運(yùn)行正常测垛,具體細(xì)節(jié)參考文末說明文檔。
多模態(tài)系統(tǒng)演示
當(dāng)按照上述指引完成離線處理和在線服務(wù)環(huán)境配置后秧均,我們就可以啟動(dòng)多模態(tài)檢索服務(wù)啦食侮!
可以點(diǎn)擊鏈接下滑至末尾查看視頻教程
多模態(tài)語義檢索 | 基于 MetaSpore 快速部署 HuggingFace 預(yù)訓(xùn)練模型 (qq.com)
2.1 以文搜文—百科問答
我們進(jìn)入到以文搜文應(yīng)用的入口号涯,來探究一下問答語義檢索系統(tǒng),輸入 “給寶寶起名字”锯七,檢索返回前 3 個(gè)結(jié)果都是關(guān)于給寶寶起名字相關(guān)的問答內(nèi)容:
我們?cè)诶^續(xù)對(duì)檢索詞添加一個(gè)屬相約束域蜗,改為 “給男孩子寶寶起名字,屬旁牖”地消,可以看到返回第一條結(jié)果就是關(guān)于牛年男寶寶起名字的內(nèi)容:
在上述示例中,我們圍繞“給寶寶起名字”這個(gè)主題畏妖,不斷對(duì)檢索詞添加約束,檢索訴求越來越精確疼阔,語義檢索系統(tǒng)都能夠返回相關(guān)內(nèi)容戒劫。
2.2 以文搜圖—圖庫檢索
我們?cè)龠M(jìn)入以文搜圖應(yīng)用的入口,先來輸入 “貓” 婆廊,可以看到返回結(jié)果前 3 位都是貓:在上述示例中,我們對(duì)貓進(jìn)行了顏色以及場景修飾后宾舅,依然可以通過以文搜圖系統(tǒng)找到相關(guān)圖片统阿。
結(jié)束語
前沿預(yù)訓(xùn)練技術(shù)打通不同模態(tài)之間的語義鴻溝,而 HuggingFace 社區(qū)又極大的降低開發(fā)人員使用預(yù)訓(xùn)練模型的成本筹我,再結(jié)合我們提供的 MetaSpore 線上推理和線上微服務(wù)的技術(shù)生態(tài)扶平,預(yù)訓(xùn)練模型不再停留于離線的淺嘗輒止,而是可以真正實(shí)現(xiàn)從前沿技術(shù)到工業(yè)場景的端到端落地蔬蕊,充分釋放預(yù)訓(xùn)練大模型的紅利结澄!未來我們會(huì)不斷完善優(yōu)化 MetaSpore 技術(shù)生態(tài):
1.更自動(dòng)化、更廣泛的接入 HuggingFace 社區(qū)生態(tài)岸夯,近期我們會(huì)發(fā)布一套通用模型上線機(jī)制麻献,使得 HuggingFace 生態(tài)接入更為方便,同時(shí)后續(xù)會(huì)把預(yù)處理服務(wù)集成到在線服務(wù)中猜扮;
2.多模態(tài)檢索離線算法優(yōu)化勉吻,針對(duì)多模態(tài)檢索場景,我們會(huì)持續(xù)迭代優(yōu)化離線算法組件破镰,包含文本召回/排序模型餐曼,圖文召回/排序模型等压储,提升檢索算法的精度和效率。
本文中相關(guān)的代碼源譬、參考文檔集惋,請(qǐng)?jiān)L問鏈接:http://github.com/meta-soul/MetaSpore/blob/main/demo/multimodal/online/README-CN.md
部分圖片來源:
https://github.com/openai/CLIP/raw/main/CLIP.png
https://www.sbert.net/examples/training/sts/README.html
官方資料
GitHub:
LakeSou: https://github.com/meta-soul/LakeSoul
MetaSpore: https://github.com/meta-soul/MetaSpore
官網(wǎng):元靈數(shù)智-云原生一站式數(shù)據(jù)智能平臺(tái)-北京數(shù)元靈科技有限公司 (dmetasoul.com)
官方交流群:微信群:關(guān)注公眾號(hào),點(diǎn)擊“了解我們-用戶交流”
Slack:https://join.slack.com/t/dmetasoul-user/shared_invite/zt-1681xagg3-4YouyW0Y4wfhPnvji~OwFg