如何創建LLM應用程式的框架

2024-09-06     51CTO

你在考慮在產品中使用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。

文章來源: https://twgreatdaily.com/zh-hk/93824b2028cb32367f8995dc499efa47.html