Prompt、RAG、微調(diào)還是重新訓(xùn)練?如何選擇正確的生成式AI的使用方法
生成式人工智能正在快速發(fā)展,許多人正在嘗試使用這項(xiàng)技術(shù)來解決他們的業(yè)務(wù)問題。一般情況下有4種常見的使用方法:
- Prompt Engineering
- Retrieval Augmented Generation (RAG 檢索增強(qiáng)生成)
- 微調(diào)
- 從頭開始訓(xùn)練基礎(chǔ)模型(FM)
本文將試圖根據(jù)一些常見的可量化指標(biāo),為選擇正確的生成式人工智能方法提供建議。
本文不包括“使用原模型”的選項(xiàng),因?yàn)閹缀鯖]有任何業(yè)務(wù)用例可以有效地使用基礎(chǔ)模型。按原樣使用基礎(chǔ)模型可以很好地用于一般搜索,但對(duì)于任何特定的用力,則需要使用上面提到的選項(xiàng)之一。
如何執(zhí)行比較?
基于以下指標(biāo):
- 準(zhǔn)確性(回答有多準(zhǔn)確?)
- 實(shí)現(xiàn)復(fù)雜性(實(shí)現(xiàn)可以有多復(fù)雜?)
- 投入工作量(需要多少工作的投入來實(shí)現(xiàn)?)
- 總成本(擁有解決方案的總成本是多少?)
- 靈活性(架構(gòu)的耦合有多松?更換/升級(jí)組件有多容易?)
我們將對(duì)這些度量標(biāo)準(zhǔn)上的每個(gè)解決方案方法進(jìn)行評(píng)級(jí),進(jìn)行一個(gè)簡(jiǎn)單的對(duì)比。
準(zhǔn)確性
讓我們首先得到討論最總要的一點(diǎn):哪種方法提供最準(zhǔn)確的響應(yīng)?
Prompt Engineering就是通過提供少量示例提供盡可能多的上下文,以使基礎(chǔ)模型更好地了解用例。雖然單獨(dú)來看,結(jié)果可能令人印象深刻,但與其他方法相比,它產(chǎn)生的結(jié)果最不準(zhǔn)確。
RAG產(chǎn)生了高質(zhì)量的結(jié)果,因?yàn)樗黾恿酥苯觼碜韵蛄炕畔⒋鎯?chǔ)的特定于用例的上下文。與Prompt Engineering相比,它產(chǎn)生的結(jié)果大大改善,而且產(chǎn)生幻覺的可能性非常低。
微調(diào)也提供了相當(dāng)精確的結(jié)果,輸出的質(zhì)量與RAG相當(dāng)。因?yàn)槲覀兪窃谔囟I(lǐng)域的數(shù)據(jù)上更新模型權(quán)重,模型產(chǎn)生更多的上下文響應(yīng)。與RAG相比,質(zhì)量可能稍微好一些,但這取決于具體實(shí)例。所以評(píng)估是否值得花時(shí)間在兩者之間進(jìn)行權(quán)衡分析是很重要的。一般來說,選擇微調(diào)可能有不同的原因,而不僅僅是精度。還包括數(shù)據(jù)更改的頻率、在自己的環(huán)境中控制模型實(shí)現(xiàn)法規(guī)、遵從性和可再現(xiàn)性等目的等等。
從頭開始的訓(xùn)練產(chǎn)生了最高質(zhì)量的結(jié)果(這是肯定的)。由于模型是在用例特定數(shù)據(jù)上從零開始訓(xùn)練的,所以產(chǎn)生幻覺的幾率幾乎為零,輸出的準(zhǔn)確率也是比較中最高的。
實(shí)現(xiàn)的復(fù)雜性
除了準(zhǔn)確性以外,另外一個(gè)需要關(guān)注的就是實(shí)現(xiàn)這些方法的難易程度。
Prompt Engineering具有相當(dāng)?shù)偷膶?shí)現(xiàn)復(fù)雜性,因?yàn)樗鼛缀醪恍枰幊獭P枰邆淞己玫挠⒄Z(或其他)語言技能和領(lǐng)域?qū)I(yè)知識(shí),可以使用上下文學(xué)習(xí)方法和少樣本學(xué)習(xí)方法來創(chuàng)建一個(gè)好的提示。
RAG比Prompt Engineering具有更高的復(fù)雜性,因?yàn)樾枰幋a和架構(gòu)技能來實(shí)現(xiàn)此解決方案。根據(jù)在RAG體系結(jié)構(gòu)中選擇的工具,復(fù)雜性可能更高。
微調(diào)比上面提到的兩個(gè)更復(fù)雜,因?yàn)槟P偷臋?quán)重/參數(shù)是通過調(diào)優(yōu)腳本更改的,這需要數(shù)據(jù)科學(xué)和ML專業(yè)知識(shí)。
從頭開始訓(xùn)練肯定具有最高的實(shí)現(xiàn)復(fù)雜性,因?yàn)樗枰罅康臄?shù)據(jù)管理和處理,并且訓(xùn)練一個(gè)相當(dāng)大的模型,這需要深入的數(shù)據(jù)科學(xué)和ML專業(yè)知識(shí)。
工作量投入
實(shí)現(xiàn)的復(fù)雜性和工作量并不總是成正比的。
Prompt Engineering需要大量的迭代努力才能做到正確?;A(chǔ)模型對(duì)提示的措辭非常敏感,改變一個(gè)詞甚至一個(gè)動(dòng)詞有時(shí)會(huì)產(chǎn)生完全不同的反應(yīng)。所以需要相當(dāng)多的迭代才能使其適用于相應(yīng)的需求。
由于涉及到創(chuàng)建嵌入和設(shè)置矢量存儲(chǔ)的任務(wù),RAG也需要很多的工作量,比Prompt Engineering要高一些。
微調(diào)則比前兩個(gè)要更加費(fèi)力。雖然微調(diào)可以用很少的數(shù)據(jù)完成(在某些情況下甚至大約或少于30個(gè)示例),但是設(shè)置微調(diào)并獲得正確的可調(diào)參數(shù)值需要時(shí)間。
從頭開始訓(xùn)練是所有方法中最費(fèi)力的方法。它需要大量的迭代開發(fā)來獲得具有正確技術(shù)和業(yè)務(wù)結(jié)果的最佳模型。這個(gè)過程從收集和管理數(shù)據(jù)開始,設(shè)計(jì)模型體系結(jié)構(gòu),并使用不同的建模方法進(jìn)行實(shí)驗(yàn),以獲得特定用例的最佳模型。這個(gè)過程可能會(huì)很長(zhǎng)(幾周到幾個(gè)月)。
總成本
我們討論的不僅僅是服務(wù)/組件花費(fèi),而是完全實(shí)現(xiàn)解決方案的成本,其中包括熟練工程師(人員),用于構(gòu)建和維護(hù)解決方案的時(shí)間,其他任務(wù)的成本,如自己維護(hù)基礎(chǔ)設(shè)施,執(zhí)行升級(jí)和更新的停機(jī)時(shí)間,建立支持渠道,招聘,提高技能和其他雜項(xiàng)成本。
Prompt Engineering的成本是相當(dāng)?shù)偷?,因?yàn)樾枰S護(hù)的只是提示模板,并在基礎(chǔ)模型版本更新或新模型發(fā)布時(shí)時(shí)保持它們的最新狀態(tài)即可。除此之外,托管模型或通過API直接使用還會(huì)有一些而額外的成本。
由于架構(gòu)中涉及多個(gè)組件,RAG 的成本要比Prompt Engineering略高。這取決于所使用的嵌入模型、向量存儲(chǔ)和模型。因?yàn)樵谶@里需要為3個(gè)不同的組件付費(fèi)。
微調(diào)的成本肯定要高于前兩個(gè),因?yàn)檎{(diào)整的是一個(gè)需要強(qiáng)大計(jì)算能力的模型,并且需要深入的ML技能和對(duì)模型體系結(jié)構(gòu)的理解。并且維護(hù)這種解決方案的成本也會(huì)更高,因?yàn)槊看斡谢灸P桶姹靖禄蛐聰?shù)據(jù)批次進(jìn)入時(shí)都需要調(diào)優(yōu)。
從頭開始訓(xùn)練無疑是成本最高的,因?yàn)閳F(tuán)隊(duì)必須擁有端到端數(shù)據(jù)處理和ML訓(xùn)練、調(diào)優(yōu)和部署能力。這需要一群高技能的機(jī)器學(xué)習(xí)從業(yè)者來完成。維護(hù)這種解決方案的成本非常高,因?yàn)樾枰l繁的重新訓(xùn)練周期來保持模型與用例周圍的新信息保持同步。
靈活性
我們來看看在簡(jiǎn)化更新和更改方面的是什么情況
Prompt Engineering具有非常高的靈活性,因?yàn)橹恍枰鶕?jù)基礎(chǔ)模型和用例的變化更改提示模板。
當(dāng)涉及到架構(gòu)中的更改時(shí),RAG也具很最高程度的靈活性。可以獨(dú)立地更改嵌入模型、向量存儲(chǔ)和LLM,而對(duì)其他組件的影響最小。它還可以在不影響其他組件的情況下在復(fù)雜授權(quán)等流程中添加更多組件。
微調(diào)對(duì)更改的靈活性非常低,因?yàn)閿?shù)據(jù)和輸入的任何更改都需要另一個(gè)微調(diào)周期,這可能非常復(fù)雜且耗時(shí)。同樣,將相同的微調(diào)模型調(diào)整到不同的用例也需要很多的工作,因?yàn)橄嗤哪P蜋?quán)重/參數(shù)在其他領(lǐng)域的表現(xiàn)可能比它所調(diào)整的領(lǐng)域差。
從頭開始訓(xùn)練的靈活性最低的。因?yàn)槟P褪菑念^構(gòu)建的,對(duì)模型執(zhí)行更新會(huì)觸發(fā)另一個(gè)完整的重新訓(xùn)練周期。我們也可以微調(diào)模型,而不是從頭開始重新訓(xùn)練,但準(zhǔn)確性會(huì)有所不同。
總結(jié)
從以上所有的比較中可以明顯看出,沒有明顯的輸贏。因?yàn)樽罱K的選擇取決于設(shè)計(jì)解決方案時(shí)最重要的指標(biāo)是什么,我們的建議如下:
當(dāng)希望在更改模型和提示模板方面具有更高的靈活性,并且用例不包含大量域上下文時(shí),可以使用Prompt Engineering。
當(dāng)想要在更改不同組件(數(shù)據(jù)源,嵌入,F(xiàn)M,矢量引擎)方面具有最高程度的靈活性時(shí),使用RAG,這樣簡(jiǎn)單并且可以保持輸出的高質(zhì)量(前提是你要有數(shù)據(jù))。
當(dāng)希望更好地控制模型工件及其版本管理時(shí),可以使用微調(diào)。尤其是領(lǐng)域特定術(shù)語與數(shù)據(jù)非常特定時(shí)(如法律、生物學(xué)等),它也很有用。
當(dāng)以上都不適合的時(shí)候,可以從頭開始訓(xùn)練。既然覺得上面的方案準(zhǔn)確性都不夠高,所以就需要有足夠的預(yù)算和時(shí)間來做的更好。
總而言之,選擇正確的生成AI方法需要深入思考并評(píng)估可接受和不可接受的指標(biāo)。甚至是根據(jù)不同的時(shí)期選擇不同的方案。