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

回復
相關推薦