點擊參加51CTO網(wǎng)站內(nèi)容調(diào)查問卷
作者 | Sam Stone
譯者 | 朱先忠
審校 | 重樓
什么?要求GPT-4在提示語押韻的同時,證明存在無窮多的素數(shù),那么它的確能夠?qū)崿F(xiàn)(https://arxiv.org/pdf/2303.12712.pdf)!
但是,如果問一下GPT-4:你們公司上個季度的表現(xiàn)如何?結(jié)果一定是慘?。∵@說明了當(dāng)前的大型語言模型(“LLM”)普遍面臨一個根本挑戰(zhàn):它們雖然能夠很好地掌握一般的公共知識,但是卻完全不知道專有的非公開信息(參考補注[1])。而另一方面,專有信息對于絕大多數(shù)企業(yè)應(yīng)用工作流都是至關(guān)重要的。一個了解公共互聯(lián)網(wǎng)的模型固然很可愛;但對大多數(shù)組織來說,它的原始形式用處并不大。
在過去的一年里,我有幸與許多將LLM應(yīng)用于企業(yè)用例的組織合作過。本文將詳細介紹任何踏上這段旅程的人都應(yīng)該知道的關(guān)鍵概念和關(guān)注點,以及我認為LLM將如何發(fā)展以及其對ML產(chǎn)品戰(zhàn)略的影響。
本文面向的是產(chǎn)品經(jīng)理、設(shè)計師、工程師和其他讀者,并假設(shè)他們對LLM如何“在引擎蓋下”工作知之甚少或一無所知,但是對學(xué)習(xí)LLM有關(guān)概念卻很感興趣,只是不涉及技術(shù)細節(jié)。
一、四個概念
1.提示工程、上下文窗口和嵌入
使LLM對專有數(shù)據(jù)進行推理的最簡單方法是在模型的提示中提供專有數(shù)據(jù)。大多數(shù)LLM都會正確回答以下問題:“我們有兩個客戶,A和B,他們分別花了10萬美元和20萬美元。誰是我們最大的客戶,他們花了多少錢?”我們剛剛測試完類似于這樣的一些基本提示工程——通過在查詢(第二句)前加上上下文(第一句)。
嵌入(Embeddings)可以獲得在上下文中回答問題所需的信息。嵌入是一種將文本轉(zhuǎn)換為數(shù)字向量的方法,其中相似的文本會生成相似的向量(在N維空間中“緊密存儲在一起”的向量)(參考補注[2])。我們可能會嵌入網(wǎng)站文本、文檔,甚至可能是SharePoint、Google Docs或Notion的整個語料庫。然后,對于每個用戶提示,我們嵌入它,在提示向量和矢量化文本語料庫之間進行相似性搜索。例如,如果我們在維基百科上嵌入了關(guān)于動物的頁面,而用戶問了一個關(guān)于狩獵的問題,我們的相似性搜索會對維基百科上關(guān)于獅子、斑馬和長頸鹿的文章進行高度排名。這使我們能夠識別與提示最相似的文本塊,從而最有可能回答它(參考補注[3])。我們將這些最相似的文字塊包含在提示前的上下文中,這樣提示就有望包含LLM回答問題所需的所有信息。
2.微調(diào)
嵌入的一個缺點是,對LLM的每次調(diào)用都需要在傳遞提示時傳遞所有上下文。LLM甚至連最基本的企業(yè)特定概念都沒有“記憶”。由于大多數(shù)基于云的LLM提供商對每個提示令牌收費,這可能會導(dǎo)致有關(guān)費用很快變得昂貴(參考補注[4])。
微調(diào)有助于LLM理解特定于企業(yè)的概念,而無需在每個提示中都包含這些概念。我們采用了一個基礎(chǔ)模型,該模型已經(jīng)對數(shù)十億個學(xué)習(xí)參數(shù)中的一般知識進行了編碼,并調(diào)整這些參數(shù)以反映特定的企業(yè)知識,同時仍然保留基本的一般知識(參考補注[5])。當(dāng)我們使用新的微調(diào)模型生成推論時,我們可以“免費”獲得企業(yè)知識。
與嵌入/提示工程(底層模型是第三方黑盒)相比,微調(diào)更接近于經(jīng)典的機器學(xué)習(xí)——ML團隊可以從頭開始創(chuàng)建自己的模型。微調(diào)需要一個帶有標記觀測值的訓(xùn)練數(shù)據(jù)集;微調(diào)模型對訓(xùn)練數(shù)據(jù)的質(zhì)量和數(shù)量高度敏感。我們還需要做出配置決策(迭代次數(shù)、學(xué)習(xí)率等),安排長期的訓(xùn)練工作,并跟蹤模型版本。目前,一些基礎(chǔ)模型提供程序提供了一些抽象掉這種復(fù)雜性的API,有些則沒有。
雖然微調(diào)模型的推斷可能更便宜,但昂貴的訓(xùn)練工作可能會超過這一點(參考補注[6])。
一些基礎(chǔ)模型提供商(如OpenAI)只支持對滯后邊緣模型進行微調(diào),因此不支持ChatGPT或GPT-4:
https://platform.openai.com/docs/guides/fine-tuning。
3.Evals框架
LLM提出的一個新穎而重大的挑戰(zhàn)是測量復(fù)雜輸出的質(zhì)量。經(jīng)典的ML團隊已經(jīng)嘗試了通過真實的方法來測量簡單輸出的準確性,比如數(shù)字預(yù)測或分類。但LLM的大多數(shù)企業(yè)用例都涉及生成數(shù)萬到數(shù)千個單詞的響應(yīng)。復(fù)雜到需要十多個單詞的概念通常可以用多種方式表達。因此,即使我們有一個經(jīng)過人工驗證的“專家”響應(yīng),將模型響應(yīng)與專家響應(yīng)進行精確的字符串匹配也是一個過于嚴格的測試,并且會低估模型響應(yīng)的質(zhì)量。
幸運的是,由OpenAI開源的Evals框架(https://github.com/openai/evals)為解決這個問題提供了一種方法。該框架需要一個標記的測試集(其中提示與“專家”響應(yīng)相匹配),但它允許在模型和專家響應(yīng)之間進行廣泛類型的比較。例如,是模型生成的答案(專家答案的子集或超集;事實上與專家的答案相當(dāng))比專家的答案簡潔多少?需要注意的是,Evals使用LLM執(zhí)行這些檢查。如果“checker”LLM中存在缺陷,則Evals的返回結(jié)果本身可能不準確。
4.對抗性例子
如果您在生產(chǎn)中使用LLM,您需要確信它能夠安全地處理被誤導(dǎo)或惡意的用戶輸入。對于大多數(shù)企業(yè)來說,出發(fā)點是確保該模式不會傳播假新聞。這意味著,一個系統(tǒng)知道自己的局限性,知道什么時候該說“我不知道”。這里有很多戰(zhàn)術(shù)方法。它可以通過提示工程來完成,并使用提示語言,如“如果無法用上面提供的上下文回答問題,請回答‘我不知道’”??梢酝ㄟ^提供范圍外的訓(xùn)練示例進行微調(diào),專家的回答是“我不知道”。
企業(yè)還需要防范惡意用戶輸入,例如即時黑客攻擊。限制系統(tǒng)可接受的輸入和輸出的格式和長度可以是一個簡單有效的開始。如果你只為內(nèi)部用戶服務(wù),那么預(yù)防措施是個好主意,如果你為外部用戶服務(wù),預(yù)防措施也是必不可少的。
二、三個關(guān)注點
1.偏見對齊
最受歡迎的LLM(OpenAI/GPT-4、Google/Bard)的開發(fā)人員已經(jīng)努力使他們的模型與人類偏見相一致,并部署了復(fù)雜的調(diào)節(jié)層。如果你讓GPT-4或Bard給你講一個種族主義或厭惡女性者的笑話,他們會禮貌地拒絕(參考補注[7])。
這是個好消息。壞消息是,這種針對社會偏見的溫和并不一定能防止制度偏見。想象一下,我們的客戶支持團隊有對特定類型客戶無禮的歷史。如果歷史上的客戶支持對話被天真地用來構(gòu)建一個新的人工智能系統(tǒng)(例如,通過微調(diào)),該系統(tǒng)很可能會復(fù)制這種偏見。
如果你正在使用過去的數(shù)據(jù)來訓(xùn)練人工智能模型(無論是經(jīng)典模型還是生成模型),請仔細檢查哪些過去的情況你想延續(xù)到未來,哪些不想。有時,在不直接使用過去的數(shù)據(jù)的情況下,設(shè)置原則并根據(jù)這些原則工作更容易(例如,通過提示工程)。
2.模型鎖定
除非你一直生活與世隔絕,否則你知道生成式人工智能模型的發(fā)展速度非???。給定一個企業(yè)用例,目前最好的LLM可能不是六個月內(nèi)的最佳解決方案,幾乎可以肯定也不會是六年內(nèi)的最佳方案。聰明的ML團隊知道他們在某個時刻需要切換模型。
但是,還存在另外兩個主要的原因來構(gòu)建簡單的LLM“交換”。首先,許多基礎(chǔ)模型提供商一直在努力支持呈指數(shù)級增長的用戶量,導(dǎo)致服務(wù)中斷和降級。在系統(tǒng)中構(gòu)建后備基礎(chǔ)模型是個好主意。其次,在系統(tǒng)中測試多個基礎(chǔ)模型(類似于賽馬比賽)以了解哪一個表現(xiàn)最好是非常有用的。根據(jù)上面關(guān)于Evals框架知識,通常很難通過分析來衡量模型質(zhì)量,所以有時你只想運行兩個模型,并對響應(yīng)進行定性比較。
3.數(shù)據(jù)泄露
建議閱讀您正在考慮使用的任何基礎(chǔ)模型的條款和條件。如果模型提供者有權(quán)在未來的模型訓(xùn)練中使用用戶輸入,那就令人擔(dān)憂了。LLM如此之大,以至于特定的用戶查詢/響應(yīng)可能會直接編碼在未來的模型版本中,然后該版本的任何用戶都可以訪問。想象一下,您所在組織的一位用戶詢問“我如何清理執(zhí)行XYZ的代碼?[此處為您的專有機密代碼]”。如果模型提供商隨后使用此查詢來重新訓(xùn)練他們的LLM,則LLM的新版本可能會了解到您的專有代碼是解決用例XYZ的好方法。如果競爭對手詢問如何執(zhí)行XYZ,LLM可能會“泄露”您的源代碼或類似內(nèi)容。
OpenAI現(xiàn)在允許用戶選擇不使用他們的數(shù)據(jù)來訓(xùn)練模型,這是一個很好的先例,但并不是每個模型提供商都效仿了他們。一些組織也在探索在自己的虛擬私有云中運行LLM;這是人們對開源LLM感興趣的一個關(guān)鍵原因。
三、兩個熱門話題
1.提示工程將主導(dǎo)微調(diào)
當(dāng)我第一次開始將LLM應(yīng)用于企業(yè)時,我對微調(diào)比對提示工程更感興趣。使用微調(diào)讓我們感覺它遵守了我習(xí)慣的經(jīng)典ML系統(tǒng)的原則:爭論一些數(shù)據(jù),生成訓(xùn)練/測試數(shù)據(jù)集,開始訓(xùn)練工作,等待一段時間,根據(jù)一些指標評估結(jié)果。
但我逐漸相信,對于大多數(shù)企業(yè)用例來說,提示工程(使用嵌入)是一種更好的方法。首先,提示工程的迭代周期遠比微調(diào)快,因為沒有模型訓(xùn)練,這可能需要數(shù)小時或數(shù)天的時間。更改提示和生成新的響應(yīng)可以在幾分鐘內(nèi)完成。相反,就模型訓(xùn)練而言,微調(diào)是一個不可逆轉(zhuǎn)的過程;如果您使用了不正確的訓(xùn)練數(shù)據(jù)或出現(xiàn)了更好的基礎(chǔ)模型,則需要重新啟動微調(diào)工作。其次,提示工程所需的ML概念知識要少得多,如神經(jīng)網(wǎng)絡(luò)超參數(shù)優(yōu)化、訓(xùn)練作業(yè)編排或數(shù)據(jù)爭論。微調(diào)通常需要經(jīng)驗豐富的ML工程師,而提示工程通??梢杂蓻]有ML經(jīng)驗的軟件工程師完成。第三,提示工程更適用于快速增長的模型鏈接策略,在該策略中,復(fù)雜的請求被分解為更小的組成請求,每個請求都可以分配給不同的LLM。有時,最好的“組成模型”是經(jīng)過微調(diào)的模型(參考補注[8])。
但企業(yè)的大部分增值工作是(i)弄清楚如何分解他們的問題;(ii)為每個組成部分編寫提示,以及(iii)為每個部分確定最佳的現(xiàn)成模型;這不在于創(chuàng)建自己的微調(diào)模型。
提示工程的優(yōu)勢可能會隨著時間的推移而擴大。如今,提示工程需要長而昂貴的提示(因為每個提示中都必須包含上下文)。但我敢打賭,隨著模型提供商空間變得更有競爭力,提供商想出了如何更便宜地訓(xùn)練LLM,每個代幣的成本會迅速下降。提示工程今天也受到最大提示大小的限制。如今,OpenAI在GPT-4的每個提示中最多可接受32K個令牌(約平均40頁英文文本)。我敢打賭在不久的將來會出現(xiàn)更大的上下文窗口。
2.數(shù)據(jù)不再是曾經(jīng)的護城河
隨著LLM越來越善于產(chǎn)生人類可解釋的推理,考慮人類如何使用數(shù)據(jù)進行推理以及這對LLM意味著什么是有用的(參考補注[9])。人類實際上并不使用太多數(shù)據(jù)!大多數(shù)時候,我們進行“零鏡頭學(xué)習(xí)”,這只是意味著我們在回答問題時不附帶一組示例問答。提問者只是提供了問題,我們根據(jù)邏輯、原則、啟發(fā)法、偏見等進行回答。
這與幾年前的LLM不同,后者只擅長少數(shù)鏡頭學(xué)習(xí),在那里你需要在提示中包括一些示例問答。它與經(jīng)典ML非常不同,在經(jīng)典ML中,模型需要在數(shù)百、數(shù)千或數(shù)百萬個問答上進行訓(xùn)練。
我堅信,LLM用例中越來越多的主導(dǎo)份額將是“零樣本”。LLM將能夠在沒有任何用戶提供的示例的情況下回答大多數(shù)問題。他們需要以指令、策略、假設(shè)等形式進行及時的工程設(shè)計。例如,這篇文章使用GPT-4來審查代碼中的安全漏洞;該方法不需要關(guān)于易受攻擊代碼的過去實例的數(shù)據(jù)。擁有明確的指示、政策和假設(shè)將變得越來越重要,但擁有大量高質(zhì)量、有標簽的專有數(shù)據(jù)將變得不那么重要。
如果您正在積極地將LLM應(yīng)用于您的企業(yè)數(shù)據(jù),我很想聽聽您發(fā)現(xiàn)哪些有效,哪些無效。歡迎您留言評論!
四、補注
【1】直到最近,LLM還不知道最近的公共知識——例如,GPT-4是根據(jù)截至2021年9月收集的信息進行訓(xùn)練的。然而,GPT-4和Bard的消費者界面現(xiàn)在能夠查詢開放的互聯(lián)網(wǎng)并收集有關(guān)最近事件的信息。因此,最近性(recency)作為LLM的知識限制正在迅速消失。
【2】嵌入可以處理所有類型的數(shù)據(jù)結(jié)構(gòu),而不僅僅是文本。
【3】整個嵌入工作流發(fā)生在調(diào)用LLM之前。例如,OpenAI建議使用其ada-002模型進行嵌入,該模型比任何領(lǐng)先的GPT模型都更便宜、更快。
【4】標記(tokens)是單詞或單詞的構(gòu)成。鏈接https://blog.quickchat.ai/post/tokens-entropy-question.處提供的文章很好地解釋了為什么語言模型使用標記而不是單詞。
【5】學(xué)習(xí)參數(shù)數(shù)量可能在數(shù)百萬到數(shù)萬億之間。如今,最廣泛使用的大型數(shù)據(jù)模型通常都擁有數(shù)十億學(xué)習(xí)參數(shù)。
【6】便宜的推斷服務(wù)并不是必然的。例如,對于具有8K上下文窗口的GPT-4,OpenAI(https://docs.google.com/document/d/1iJRm5vmT3Udv2mGTD4LsLobYaHEj2OaBywIzI83WdQo/edit#)
每1k代幣收取0.03–0.06美元(分別取決于代幣是輸入還是輸出)。Davinci(一種滯后模型)的微調(diào)版本每1k代幣收費0.12美元。
【7】當(dāng)然,這些都是OpenAI和谷歌雇傭的人。由于許多人不同意這些組織的價值觀,他們不同意節(jié)制政策。
【8】例如,GOAT(https://huggingface.co/papers/2305.14201)是針對算術(shù)進行微調(diào)的開源模型LLaMA的一個版本。它在許多算術(shù)基準測試上都優(yōu)于GPT-4。大多數(shù)企業(yè)的工作流程都需要算術(shù)運算;在鏈式方法下,工作流中涉及算術(shù)的部分將被識別并路由到GOAT。對于這樣一家企業(yè)來說,大力投資于良好的路由和與GOAT進行集成是很有道理的;但在我看來,不要微調(diào)他們自己的算術(shù)LLM。
【9】關(guān)于今天的LLM是否真的能推理,以及實際推理的含義(它需要意識嗎?自我意識嗎?代理?)還存在很多爭論。撇開這場更具哲學(xué)意義而非實證意義的辯論不談,值得注意的是,LLM顯然越來越善于做出符合人們普遍認為的良好推理概念的解釋;鏈接https://arxiv.org/pdf/2303.12712.pdf處的這篇論文提供了許多很好的例子。
——譯者介紹——
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文鏈接:https://towardsdatascience.com/applying-llms-to-enterprise-data-concepts-concerns-and-hot-takes-e19ded4bde88