我們一起聊聊AI模型組合指南
實(shí)施需要周密的計(jì)劃、資源管理以及采用現(xiàn)代部署實(shí)踐和工具。
譯自A Guide to Model Composition,作者 Sherlock Xu。
考慮一款旨在識(shí)別和分類野生動(dòng)物照片的 AI 驅(qū)動(dòng)的圖像識(shí)別應(yīng)用程序。您上傳一張遠(yuǎn)足時(shí)拍攝的照片,幾分鐘后,該應(yīng)用程序不僅識(shí)別出照片中的動(dòng)物,還提供了有關(guān)其物種、棲息地和保護(hù)狀態(tài)的詳細(xì)信息。這種應(yīng)用程序可以通過模型組合構(gòu)建,這是一種多個(gè)人工智能模型協(xié)作從不同角度分析和解釋圖像的技術(shù)。
在此背景下,模型組合可能涉及一系列專門的模型:一個(gè)用于檢測(cè)圖像中的動(dòng)物,另一個(gè)用于將其分類為廣泛的類別(例如,鳥類、哺乳動(dòng)物和爬行動(dòng)物),還有一組模型共同確定具體物種。這種分層方法提供了細(xì)致入微的分析,超出了單個(gè) AI 模型的能力。
什么是模型組合?
從本質(zhì)上講,模型組合是一種機(jī)器學(xué)習(xí)策略,它結(jié)合了多個(gè)模型來解決一個(gè)復(fù)雜的難題,而單個(gè)模型無法輕松解決。這種方法利用了每個(gè)單獨(dú)模型的優(yōu)勢(shì),提供了更細(xì)致入微的分析和更高的準(zhǔn)確性。模型組合可以看作是組建一個(gè)專家團(tuán)隊(duì),每個(gè)成員都將專門的知識(shí)和技能帶到談判桌上,共同努力實(shí)現(xiàn)一個(gè)共同的目標(biāo)。
許多現(xiàn)實(shí)世界的問題對(duì)于一刀切的模型來說過于復(fù)雜。通過協(xié)調(diào)多個(gè)模型,每個(gè)模型都經(jīng)過訓(xùn)練來處理問題或數(shù)據(jù)類型的特定方面,我們可以創(chuàng)建一個(gè)更全面、更有效的解決方案。
有幾種方法可以實(shí)現(xiàn)模型組合,包括但不限于:
- 順序處理:模型按流水線排列,其中一個(gè)模型的輸出作為下一個(gè)模型的輸入。這通常用于數(shù)據(jù)預(yù)處理、特征提取,然后是分類或預(yù)測(cè)等任務(wù)。
- 并行處理:多個(gè)模型并行運(yùn)行,每個(gè)模型獨(dú)立處理相同的輸入。然后通過平均、投票或更復(fù)雜的聚合模型將它們的輸出組合起來,以產(chǎn)生最終結(jié)果。這通常用于集成方法。
與模型組合相關(guān)的另一個(gè)重要概念是推理圖。推理圖直觀地表示了數(shù)據(jù)通過各種模型和處理步驟在模型組合系統(tǒng)中的流程。它概述了模型如何連接、它們之間的依賴關(guān)系以及數(shù)據(jù)如何從輸入轉(zhuǎn)換并流向最終預(yù)測(cè)。圖形表示有助于我們?cè)O(shè)計(jì)、實(shí)現(xiàn)和理解復(fù)雜的模型組合。以下是一個(gè)推理圖示例:
圖片
- 該服務(wù)接受文本輸入,例如“我有一個(gè)主意!”
- 該服務(wù)同時(shí)將提示發(fā)送給三個(gè)單獨(dú)的文本生成模型,這些模型并行運(yùn)行以使用不同的算法或數(shù)據(jù)集生成結(jié)果。
- 然后將這三個(gè)模型的結(jié)果發(fā)送到文本分類模型。
- 分類模型評(píng)估每段生成文本并為其分配分類分?jǐn)?shù)(例如,基于內(nèi)容的情緒)。
- 最后,該服務(wù)聚合生成的文本及其各自的分類分?jǐn)?shù),并以 JSON 形式返回它們。
我應(yīng)該在什么時(shí)候組合模型?
模型組合是機(jī)器學(xué)習(xí)中廣泛挑戰(zhàn)的實(shí)用解決方案。以下是一些模型組合發(fā)揮關(guān)鍵作用的關(guān)鍵用例。
多模態(tài)應(yīng)用程序
在當(dāng)今的數(shù)字世界中,數(shù)據(jù)以各種形式出現(xiàn):文本、圖像、音頻等等。多模態(tài)應(yīng)用程序結(jié)合了專門處理不同類型數(shù)據(jù)的模型。一個(gè)典型的組合模型來創(chuàng)建多模態(tài)應(yīng)用程序的例子是BLIP-2,它專為涉及文本和圖像的任務(wù)而設(shè)計(jì)。
BLIP2 集成了三個(gè)不同的模型,每個(gè)模型都為系統(tǒng)提供了獨(dú)特的功能:
- 一個(gè)凍結(jié)大型語言模型(LLM):提供強(qiáng)大的語言生成和零樣本遷移能力。
- 一個(gè)凍結(jié)的預(yù)訓(xùn)練圖像編碼器:從圖像中提取和編碼視覺信息。
- 輕量級(jí)查詢轉(zhuǎn)換器模型 (Q-Former):彌合 LLM 和圖像編碼器之間的模態(tài)差距。它將來自編碼器的視覺信息與 LLM 集成在一起,重點(diǎn)關(guān)注生成文本的最相關(guān)的視覺細(xì)節(jié)。
BLIP-2 架構(gòu)。來源:原始 BLIP-2 論文
集成建模
集成建模是一種用于提高機(jī)器學(xué)習(xí)模型預(yù)測(cè)精度的技術(shù)。它通過結(jié)合多個(gè)模型的預(yù)測(cè)來產(chǎn)生一個(gè)更準(zhǔn)確的單一結(jié)果。其核心思想是,通過聚合多個(gè)模型的預(yù)測(cè),通??梢詫?shí)現(xiàn)比任何單個(gè)模型單獨(dú)實(shí)現(xiàn)更好的性能。集成中的模型可以是同類型的(例如,所有決策樹),也可以是不同類型的(例如,神經(jīng)網(wǎng)絡(luò)、決策樹和邏輯回歸模型的組合)。集成建模中的關(guān)鍵技術(shù)包括:
- Bagging:在訓(xùn)練數(shù)據(jù)的不同子集上訓(xùn)練多個(gè)模型,然后對(duì)它們的預(yù)測(cè)進(jìn)行平均。這有助于減少方差。
- Boosting:順序訓(xùn)練模型,其中每個(gè)模型都嘗試糾正前一個(gè)模型所犯的錯(cuò)誤。
- Stacking:訓(xùn)練多個(gè)模型,然后使用一個(gè)更好的模型,該模型利用每個(gè)基礎(chǔ)模型的優(yōu)勢(shì)來提高整體性能并結(jié)合它們的預(yù)測(cè)。
集成建模的一個(gè)實(shí)際用例是天氣預(yù)報(bào)系統(tǒng),其中準(zhǔn)確性對(duì)于各行業(yè)和活動(dòng)中的規(guī)劃和安全至關(guān)重要。天氣預(yù)報(bào)的集成模型可能會(huì)整合來自各種模型的輸出,每個(gè)模型都在不同的數(shù)據(jù)集上進(jìn)行訓(xùn)練,使用不同的算法或關(guān)注天氣現(xiàn)象的不同方面。一些模型可能更擅長(zhǎng)預(yù)測(cè)降水,而另一些模型則在預(yù)測(cè)溫度或風(fēng)速方面表現(xiàn)得更好。通過聚合這些預(yù)測(cè),集成方法可以提供更準(zhǔn)確、更細(xì)致的預(yù)測(cè)。
流水線處理
機(jī)器學(xué)習(xí)任務(wù)通常需要一系列處理步驟,將原始數(shù)據(jù)轉(zhuǎn)換為可操作的見解。實(shí)現(xiàn)模型組合可以幫助你將這些任務(wù)構(gòu)建為流水線,其中每一步都由針對(duì)特定功能進(jìn)行優(yōu)化的不同模型處理。
常見用例之一是自動(dòng)文檔分析系統(tǒng),它能夠處理、理解和從文檔中提取有意義的信息。該系統(tǒng)可能使用一系列模型,每個(gè)模型都專門用于處理流水線中的一個(gè)階段:
- 預(yù)處理:第一步可能需要一個(gè) OCR(光學(xué)字符識(shí)別)模型,該模型從掃描的文檔或圖像中提取文本。此模型專門用于識(shí)別和將各種字體和手寫體轉(zhuǎn)換為機(jī)器可讀文本。
- 預(yù)測(cè):在文本提取之后,可以使用文本分類模型根據(jù)其內(nèi)容對(duì)文檔進(jìn)行分類,例如法律文件、技術(shù)手冊(cè)或財(cái)務(wù)報(bào)告。此分類步驟對(duì)于將文檔路由到適當(dāng)?shù)南掠瘟鞒谭浅V匾?/li>
- 后處理:在分類之后,可以使用摘要模型生成文檔內(nèi)容的簡(jiǎn)潔摘要。此摘要提供了對(duì)文檔的快速見解,為決策和優(yōu)先級(jí)排序提供信息。
除了順序流水線之外,你還可以實(shí)現(xiàn)并行處理,以便多個(gè)模型在相同數(shù)據(jù)上同時(shí)運(yùn)行(如第一張圖片所示)。這在以下場(chǎng)景中很有用:
- 集成建模:聚合來自多個(gè)模型的預(yù)測(cè)以提高準(zhǔn)確性。
- 計(jì)算機(jī)視覺任務(wù):圖像分割和對(duì)象檢測(cè)模型可以并行運(yùn)行,以提供對(duì)圖像的全面分析,將對(duì)圖像結(jié)構(gòu)的見解與對(duì)特定對(duì)象的識(shí)別相結(jié)合。
模型組合有哪些好處?
模型組合提供了許多操作和開發(fā)優(yōu)勢(shì)。以下是一些主要好處:
提高準(zhǔn)確性和性能
在某些情況下,多個(gè)模型協(xié)同工作的協(xié)同作用可以提高準(zhǔn)確性和性能。組合中的每個(gè)模型可能專注于問題的特定方面,例如不同的數(shù)據(jù)類型或數(shù)據(jù)的特定特征,確保組合系統(tǒng)涵蓋比任何單個(gè)模型更多的整個(gè)問題空間。在集成建模中尤其如此,因?yàn)榫酆蟻碜远鄠€(gè)模型的結(jié)果可以幫助消除它們的個(gè)體偏差和錯(cuò)誤,從而產(chǎn)生更準(zhǔn)確的預(yù)測(cè)。
專用基礎(chǔ)設(shè)施和資源分配
模型組合允許你在各種硬件設(shè)備上部署所涉及的模型,優(yōu)化計(jì)算資源的使用??梢愿鶕?jù)它們的處理需求和資源可用性將它們分配到最合適的基礎(chǔ)設(shè)施上——無論是 CPU、GPU 還是邊緣設(shè)備。這種專用分配還確??梢詥为?dú)擴(kuò)展系統(tǒng)的每個(gè)部分。
定制和靈活性
模型組合允許你根據(jù)特定需求定制和調(diào)整系統(tǒng)。你可以選擇最適合特定任務(wù)的模型,并根據(jù)需要輕松添加或刪除模型。這種靈活性使你可以快速適應(yīng)不斷變化的業(yè)務(wù)需求和數(shù)據(jù)可用性。
模型組合最顯著的優(yōu)勢(shì)之一是它提供的靈活性。模型可以在系統(tǒng)內(nèi)輕松添加、移除或替換,使開發(fā)人員能夠隨著新技術(shù)的出現(xiàn)或需求的變化來調(diào)整和演進(jìn)他們的應(yīng)用程序。這種模塊化方法簡(jiǎn)化了更新和維護(hù),確保系統(tǒng)能夠快速適應(yīng)新的挑戰(zhàn)和機(jī)遇。
更快的開發(fā)和迭代
模型組合支持并行開發(fā)工作流,允許團(tuán)隊(duì)同時(shí)處理系統(tǒng)中的不同模型或組件。這有助于加速開發(fā)過程,這意味著更快的迭代和更迅速的原型制作。它還使團(tuán)隊(duì)能夠?qū)Ψ答伜筒粩嘧兓男枨笞龀龈艚莸捻憫?yīng),因?yàn)榭梢詢?yōu)化或替換各個(gè)模型,而不會(huì)中斷整個(gè)系統(tǒng)。
資源優(yōu)化
通過在多個(gè)模型之間智能地分配工作負(fù)載,每個(gè)模型針對(duì)特定任務(wù)或硬件進(jìn)行優(yōu)化,您可以最大化資源利用率。這種優(yōu)化可以帶來更有效的處理、更低的延遲和更低的運(yùn)營(yíng)成本,尤其是在需要大量計(jì)算能力的復(fù)雜應(yīng)用程序中。有效的資源優(yōu)化還意味著您的應(yīng)用程序可以更平穩(wěn)地?cái)U(kuò)展,以適應(yīng)數(shù)據(jù)量或用戶需求的增長(zhǎng)。
使用 BentoML 組合多個(gè)模型
不同的模型服務(wù)或模型部署框架可能會(huì)采用不同的模型組合方法。在這方面,BentoML作為一個(gè)開源模型服務(wù)框架,提供了簡(jiǎn)單的服務(wù) API 來幫助您封裝模型、建立服務(wù)間通信并將組合模型公開為 REST API 端點(diǎn)。
下面的代碼示例演示了如何使用 BentoML 組合多個(gè)模型。在 BentoML 中,每個(gè)服務(wù)都被定義為一個(gè) Python 類。您可以使用@bentoml.service裝飾器將其標(biāo)記為服務(wù)并為其分配 CPU 或 GPU 資源。當(dāng)您將其部署到BentoCloud時(shí),不同的服務(wù)可以在專用的實(shí)例類型上運(yùn)行,并且可以單獨(dú)擴(kuò)展。
圖片
在此 BentoMLservice.py文件中,GPT2 和 DistilGPT2 被初始化為單獨(dú)的 BentoML 服務(wù)以生成文本。然后,BertBaseUncased 服務(wù)獲取生成的文本并對(duì)其進(jìn)行分類,提供表示情緒的分?jǐn)?shù)。InferenceGraph服務(wù)協(xié)調(diào)這些單獨(dú)的服務(wù),使用asyncio.gather從兩個(gè) GPT-2 模型同時(shí)生成文本,然后使用 BERT 模型對(duì)輸出進(jìn)行分類。
在部署到 BentoCloud 后,服務(wù)可以在單獨(dú)的實(shí)例類型上運(yùn)行,如下所示:
圖片
監(jiān)控性能:
圖片
有關(guān)詳細(xì)說明,請(qǐng)參閱此示例項(xiàng)目。
常見問題
在結(jié)束之前,讓我們看看有關(guān)模型組合的一些常見問題。
集成建模和多模態(tài)應(yīng)用程序之間有什么區(qū)別?
這兩個(gè)機(jī)器學(xué)習(xí)概念服務(wù)于不同的目的,并應(yīng)用于不同的環(huán)境。
- 目的和應(yīng)用:集成建模通過組合多個(gè)模型來提高預(yù)測(cè)準(zhǔn)確性。多模態(tài)應(yīng)用程序集成和解釋來自多個(gè)來源或類型的的數(shù)據(jù),以做出更好的決策或預(yù)測(cè)。
- 模型與數(shù)據(jù):集成建模專注于使用多個(gè)模型來增強(qiáng)預(yù)測(cè)。多模態(tài)應(yīng)用程序?qū)W⒂诩刹煌愋偷臄?shù)據(jù)(例如,文本、圖像、音頻)。
- 實(shí)現(xiàn):多模態(tài)系統(tǒng)通常需要數(shù)據(jù)預(yù)處理和特征提取技術(shù)來有效處理不同類型的數(shù)據(jù)。另一方面,集成建模需要結(jié)合模型預(yù)測(cè)的策略,這可能涉及直接平均或更復(fù)雜的投票系統(tǒng)。
我在應(yīng)用程序中使用單個(gè)模型。我應(yīng)該轉(zhuǎn)向多模型嗎?
重要的是要注意,雖然模型組合提供了如上所述的不同好處,但它并不總是必要的。如果單個(gè)模型可以有效且準(zhǔn)確地完成手頭任務(wù),我建議您堅(jiān)持使用它。組合多個(gè)模型的決策和處理流水線的設(shè)計(jì)應(yīng)根據(jù)您的具體要求進(jìn)行指導(dǎo)。
模型組合如何影響生產(chǎn)部署?
集成多個(gè)模型會(huì)增加生產(chǎn)部署的復(fù)雜性。您需要考慮以下因素:
復(fù)雜性增加
- 配置和管理:組合中的每個(gè)模型可能需要其配置、依賴項(xiàng)和環(huán)境。在多個(gè)模型中管理這些內(nèi)容會(huì)增加部署過程的復(fù)雜性。
- 服務(wù)編排:組合多個(gè)模型通常需要仔細(xì)編排,以確保數(shù)據(jù)在模型之間正確流動(dòng),并且每個(gè)模型按要求以正確的順序或并行執(zhí)行。
資源分配
- 硬件要求:如上所述,不同的模型可能具有不同的硬件要求。一些模型可能需要 GPU 進(jìn)行推理,而另一些模型可以在 CPU 上運(yùn)行。您選擇的提供和部署框架應(yīng)支持靈活的資源分配,以滿足您的需求。
- 擴(kuò)展策略:在生產(chǎn)中擴(kuò)展多個(gè)模型可能不像擴(kuò)展單個(gè)模型那樣簡(jiǎn)單。應(yīng)用程序的不同組件可能具有不同的負(fù)載,需要?jiǎng)討B(tài)擴(kuò)展策略,該策略可以根據(jù)需求調(diào)整各個(gè)模型的資源。
監(jiān)控和維護(hù)
- 監(jiān)控:跟蹤生產(chǎn)中不同模型的性能和運(yùn)行狀況需要全面的監(jiān)控解決方案,這些解決方案可以提供對(duì)每個(gè)模型的性能、資源使用情況和潛在瓶頸的見解。
- 版本控制和更新:更新復(fù)合應(yīng)用程序中的一個(gè)模型可能會(huì)對(duì)其他模型產(chǎn)生級(jí)聯(lián)影響。必須制定適當(dāng)?shù)陌姹究刂坪蜏y(cè)試策略,以便在不中斷應(yīng)用程序整體性能的情況下管理更新。
部署策略
- 微服務(wù)架構(gòu):采用微服務(wù)架構(gòu)可以通過將每個(gè)模型封裝為一個(gè)單獨(dú)的服務(wù)來簡(jiǎn)化多個(gè)模型的部署。這種方法簡(jiǎn)化了擴(kuò)展、更新和管理,但需要靈活的服務(wù)編排工具。
- 容器化:使用容器部署 AI 模型可以幫助管理每個(gè)模型的依賴項(xiàng)和環(huán)境。容器編排工具(如 Kubernetes)可以幫助管理容器化模型的部署、擴(kuò)展和網(wǎng)絡(luò)。
模型組合可以通過需要更多資源和更復(fù)雜的部署策略來影響部署。但是,如上例所示,BentoML 和 BentoCloud 等平臺(tái)可以通過允許開發(fā)人員高效地打包、部署和擴(kuò)展多模型服務(wù),幫助開發(fā)人員構(gòu)建多個(gè)模型的 AI 應(yīng)用程序。
最后的想法
雖然模型組合的好處很明顯,從增強(qiáng)的性能到處理多種數(shù)據(jù)類型的能力,但重要的是要認(rèn)識(shí)到它帶來的復(fù)雜性,尤其是與生產(chǎn)部署相關(guān)的復(fù)雜性。成功的實(shí)施需要仔細(xì)規(guī)劃、資源管理以及采用現(xiàn)代部署實(shí)踐和工具來應(yīng)對(duì)配置、擴(kuò)展和維護(hù)方面的挑戰(zhàn)。