譯者 | 李睿
審校 | 重樓
你在考慮在產(chǎn)品中使用LLM時,可以使用具有三個階段的框架。這個框架將幫助定義問題、選擇適合的模型、創(chuàng)建有效的提示,并確保整個流程在投入生產(chǎn)時有效。
有許多研究和演示表明,大型語言模型(LLM)可以執(zhí)行令人印象深刻的任務(wù)。雖然并沒有一種萬能的方法,但可以嘗試創(chuàng)建一些指南,以幫助人們更好地在LLM所帶來的創(chuàng)新和困惑中導(dǎo)航。
在考慮是否以及如何在產(chǎn)品中使用LLM時,可以使用具有以下三個階段的框架。它可以幫助定義問題,選擇適合的模型,創(chuàng)建正確的提示,并確保流程在投入生產(chǎn)時有效。
第一階段:準(zhǔn)備
這個階段的目標(biāo)是,開發(fā)人員能夠很好地理解自己想要完成什么任務(wù),以及最好從哪里開始。
- 定義任務(wù):隨著對LLM的宣傳和炒作,很容易認(rèn)為它們是一般問題的解決者,可以承擔(dān)復(fù)雜的任務(wù)并提出解決方案。但是,如果希望獲得更好的結(jié)果,應(yīng)該選擇一個特定的任務(wù),并嘗試將其表述為一個輸入-輸出問題,該問題可以被分類到已知的類別中(分類、回歸、問答、摘要、翻譯、文本生成等)。
- 選擇一個與想要解決的問題密切相關(guān)的基準(zhǔn):這將幫助開發(fā)人員確定良好的提示技巧和模型。例如,如果開發(fā)人員正在解決一個推理問題,HellaSwag就是一個很好的基準(zhǔn)。對于語言任務(wù),MMLU可以很好地展示不同LLM的表現(xiàn)。來自Confidence AI的指南很好地概述了不同的LLM基準(zhǔn)。
- 創(chuàng)建一個基本的測試集:至少創(chuàng)建五個示例以描述想要解決的問題。示例應(yīng)該人工創(chuàng)建,并且與其產(chǎn)品或行業(yè)直接相關(guān)。開發(fā)人員可以使用基準(zhǔn)示例作為如何格式化示例的指南。
- 選擇一個模型:查看LLM排行榜,選擇與任務(wù)相關(guān)的基準(zhǔn)測試中表現(xiàn)最好的三個模型。
- 創(chuàng)建基本提示模板:為測試集創(chuàng)建提示。使用非常簡單的提示技術(shù)來了解每個模型的基準(zhǔn)性能?;咎崾就ǔ0ń巧⒄f明和問題。
第二階段:細(xì)化
這一階段的目標(biāo)是,讓所選LLM在準(zhǔn)備集上具有最佳性能。這里對快速推理或低成本不感興趣,只是想讓LLM發(fā)揮作用。
- 使用高級提示技術(shù):如果模型在基本提示上的表現(xiàn)不令人滿意,可以嘗試采用更高級的技術(shù),例如小樣本示例、思維鏈推理、附加指令和場景學(xué)習(xí)。嘗試將問題與回復(fù)分開,并逐一解決。
- 添加場景信息:如果應(yīng)用程序需要關(guān)于產(chǎn)品的專有信息,例如代碼和文檔,可以將其添加到提示中。對于當(dāng)今的長場景LLM,無需開始就設(shè)置檢索-增強(qiáng)生成(RAG)管道,只需將知識作為單獨(dú)的部分轉(zhuǎn)儲到提示中。
- 使用提示管道:如果任務(wù)太復(fù)雜,嘗試將其分解為幾個子任務(wù),其中一個子任務(wù)的輸出成為另一個子任務(wù)的輸入。這能夠?yàn)槊總€子任務(wù)創(chuàng)建和優(yōu)化單獨(dú)的提示,并獲得更好的結(jié)果。
- 創(chuàng)建更大的測試集:生成至少50~100個例子來測試模型和提示。嘗試創(chuàng)建盡可能多的人工提示。邀請將成為產(chǎn)品最終用戶的同事幫助創(chuàng)建更多樣化的數(shù)據(jù)集。還可以使用前沿模型通過小樣本學(xué)習(xí)來生成示例。
- 在大數(shù)據(jù)集上不斷優(yōu)化提示:對于更大的數(shù)據(jù)集,可能會看到更多的錯誤。重復(fù)優(yōu)化過程,直到提示達(dá)到可接受的性能。
第三階段:擴(kuò)展
這個階段的前提是已經(jīng)有了一個高性能的提示管道。其目標(biāo)是通過降低成本、提高速度和持續(xù)改進(jìn)性能,使基于LLM的產(chǎn)品具有可擴(kuò)展性。
- 減少提示符的大?。?/strong>使用RAG和提示優(yōu)化等技術(shù)減少提示中的令牌數(shù)量。當(dāng)每天需要處理數(shù)千或數(shù)百萬個請求時,即使將每個請求的令牌數(shù)量減少一小部分,也會產(chǎn)生很大的影響。
- 提高推理速度:使用提示緩存、高級硬件或更好的推理算法等技術(shù)來減少生成第一個令牌的時間和應(yīng)用程序每秒生成的令牌數(shù)量。更快的響應(yīng)速度通常會帶來更好的用戶體驗(yàn)。
- 在運(yùn)行時收集數(shù)據(jù):在遵守隱私法律的前提下,當(dāng)在生產(chǎn)中部署該模式時,嘗試收集更多的輸入-輸出示例。這些數(shù)據(jù)對于分析用戶如何與應(yīng)用程序交互、發(fā)現(xiàn)痛點(diǎn)以及在未來創(chuàng)建更好版本的應(yīng)用程序的寶貴資源。
- 微調(diào)小型模型:有了足夠的例子,可以訓(xùn)練更小的模型,使其在特定任務(wù)上的表現(xiàn)與大型LLM一樣出色。這有助于將成本降低幾個數(shù)量級,同時提高速度。
- 盡可能移除LLM:在很多情況下,LLM并不是解決問題的最佳解決方案。例如,如果使用LLM進(jìn)行分類,則可以通過使用線性分類模型或BERT分類器獲得更準(zhǔn)確且成本更低的結(jié)果。如果正在使用該模型進(jìn)行推薦,那么可以嘗試更經(jīng)典的推薦模型。有時,一個簡單的正則表達(dá)式或基于規(guī)則的函數(shù)可以取代LLM所執(zhí)行的任務(wù)。當(dāng)收集到更多的數(shù)據(jù)并優(yōu)化管道,需要嘗試找出可以移除LLM的地方。
注意事項
- LLM并不是靈丹妙藥:在許多情況下,LLM不是解決問題的最佳方案。在某些情況下,即使是最先進(jìn)的LLM也不能提供合理的結(jié)果。正如在擴(kuò)展階段的最后一部分所提到的,一旦應(yīng)用程序成熟,需要嘗試用更可靠的工具替換LLM。
- 為什么要用LLM?在某些領(lǐng)域,LLM是無與倫比的,例如文本生成。而在其他領(lǐng)域,LLM可以起到很大的促進(jìn)作用,例如設(shè)計和編碼。因此,了解想要完成的任務(wù)和最終目標(biāo)至關(guān)重要。在許多情況下,即使有一個減少10%~20%勞動力的解決方案也能帶來生產(chǎn)力的提升。LLM在需要人工參與的任務(wù)中尤其有用,它們可以幫助減少專家在篩選數(shù)據(jù)方面所需的精力。
- 使用LLM進(jìn)行原型設(shè)計。LLM是測試假設(shè)和創(chuàng)建原型的理想工具。沒有技術(shù)能力創(chuàng)建機(jī)器學(xué)習(xí)模型的產(chǎn)品經(jīng)理可以使用LLM來創(chuàng)建所需產(chǎn)品和應(yīng)用程序的原型,對其進(jìn)行改進(jìn),并找到產(chǎn)品與市場的契合點(diǎn)。一旦進(jìn)入擴(kuò)展和部署階段,他們就可以聘請專家來幫助他們優(yōu)化應(yīng)用程序的組件,并采用更有效的解決方案替代LLM。
原文標(biāo)題:A framework for creating LLM applications,作者:Ben Dickson