什么是LLMOps?
1.概念
自2018年GPT-2的問(wèn)世以來(lái),大語(yǔ)言模型(LLM)如GPT系列逐漸發(fā)展壯大,尤其是GPT-3及其后續(xù)版本的推出,性能方面顯著提升。這些模型的強(qiáng)大能力催生了眾多應(yīng)用,如客戶服務(wù)的聊天機(jī)器人、多語(yǔ)言翻譯服務(wù)和輔助寫(xiě)作編程的工具等。面對(duì)LLM在實(shí)際應(yīng)用中的獨(dú)特挑戰(zhàn),業(yè)界發(fā)展出了新的工具和最佳實(shí)踐,以更有效地管理這些模型的整個(gè)應(yīng)用生命周期,這一進(jìn)程的集合即為“LLMOps”。
LLMOps(Large Language Model Operations)定義為大語(yǔ)言模型運(yùn)維,其縮寫(xiě)LLMOps的意思是面向LLM的MLOps,涵蓋了大語(yǔ)言模型(如GPT系列)開(kāi)發(fā)、部署、維護(hù)和優(yōu)化的一整套流程。其目標(biāo)是確保高效、可擴(kuò)展和安全地使用這些強(qiáng)大的 AI 模型來(lái)構(gòu)建和運(yùn)行實(shí)際應(yīng)用程序。它涉及到模型訓(xùn)練、部署、監(jiān)控、更新、安全性和合規(guī)性等方面。
要理解LLMOps,關(guān)鍵在于掌握大語(yǔ)言模型(LLMs)作為服務(wù)的運(yùn)作流程。這包括用戶輸入(綠色部分),在輸入到模型之前會(huì)經(jīng)歷一些處理步驟;模型輸出(紅色部分),在展示給用戶之前也會(huì)經(jīng)歷幾輪轉(zhuǎn)換??梢钥闯?,提示在傳遞給模型之前需經(jīng)過(guò)多個(gè)階段,這些步驟雖有差異,但基本的目的相同:確保輸入被正確理解,并且模型的輸出與上下文相匹配。
2.LLMOps Cookbook
- LLMOps的關(guān)鍵組成部分
LLMOp配置中應(yīng)該使用哪種模型,市面上有各種類(lèi)型的模型可供選擇,每種模型都針對(duì)特定的用例進(jìn)行了優(yōu)化,且有不同的大小選項(xiàng)等,選擇合適的模型主要取決于應(yīng)用和可用資源。
- 選擇合適的基礎(chǔ)模型
LLM模型和提供商可以分為以下幾類(lèi):
專(zhuān)有模型:這一類(lèi)別包括像OpenAI(GPT模型)、Google(PaLM模型)和Anthropic(Claude模型)這樣的公司,它們訓(xùn)練專(zhuān)有的LLM,并通過(guò)Web界面或API端點(diǎn)將它們作為服務(wù)提供。
開(kāi)源模型:這一類(lèi)別由社區(qū)、學(xué)術(shù)界或像Eleuther AI和Big Science這樣的組織開(kāi)發(fā)的免費(fèi)模型。理想情況下,我們可以采用一個(gè)開(kāi)源模型,并自行構(gòu)建服務(wù),包括LLMOps基礎(chǔ)設(shè)施。
提供基礎(chǔ)設(shè)施的公司:這些公司為開(kāi)源LLM提供LLMOps基礎(chǔ)設(shè)施,他們通過(guò)提供部署服務(wù)來(lái)實(shí)現(xiàn)盈利,如Together AI這樣的公司,提供了輕松定制LLMOps基礎(chǔ)設(shè)施的機(jī)會(huì)。
專(zhuān)有模型是由擁有大型專(zhuān)家團(tuán)隊(duì)和大量預(yù)算的公司擁有的閉源基礎(chǔ)模型,通常比開(kāi)源模型更大,因此具有更好的性能,由于是現(xiàn)成的模型,因此很容易使用。專(zhuān)有模型的主要缺點(diǎn)是API費(fèi)用昂貴。此外,閉源基礎(chǔ)模型為開(kāi)發(fā)人員提供的靈活性很少或者根本沒(méi)有靈活性。
開(kāi)源模型通常在Hugging Face、魔搭上以社區(qū)形式組織和托管,通常比專(zhuān)有模型功能更少。但從好的方面來(lái)看,比專(zhuān)有模型更具成本效益,并為開(kāi)發(fā)人員提供了更大的靈活性。
- 選擇合適的微調(diào)策略
大語(yǔ)言模型(LLM)無(wú)論是專(zhuān)有還是開(kāi)源,通常都需要經(jīng)過(guò)微調(diào)才能適應(yīng)特定的應(yīng)用場(chǎng)景。市面上已有針對(duì)特定任務(wù)預(yù)微調(diào)的LLM,如聊天機(jī)器人、文本摘要和情感分析模型。此外,針對(duì)長(zhǎng)文本處理的需求,一些模型提供了能夠處理更多上下文(如GPT 3.5的16k上下文大小變體)的長(zhǎng)上下文版本。
如果現(xiàn)有的模型無(wú)法滿足特定需求,可以選擇對(duì)模型進(jìn)行微調(diào)或從頭開(kāi)始訓(xùn)練,而選擇合適的數(shù)據(jù)集對(duì)于后者尤為關(guān)鍵,它決定了模型對(duì)目標(biāo)任務(wù)的理解和適應(yīng)能力。
如果我們的應(yīng)用程序需要對(duì)現(xiàn)有模型進(jìn)行微調(diào),相關(guān)步驟也應(yīng)成為L(zhǎng)LMOps設(shè)置的一部分,現(xiàn)在將這個(gè)定制步驟添加到原始的圖表中:
LLMOps工作流程將模型定制步驟(橙色部分)納入通用工作流程中。擁有一個(gè)一致的微調(diào)流程可以幫助開(kāi)發(fā)者隨著更多數(shù)據(jù)的可用性,擴(kuò)展模型的知識(shí),允許輕松升級(jí)LLM版本或進(jìn)行其他修改。當(dāng)依賴第三方模型時(shí),要注意這些模型可能在可用性到成本方面發(fā)生變化,這可能會(huì)迫使我們切換到不同的基礎(chǔ)模型。一個(gè)健壯的LLMOps配置支持,將使我們能夠通過(guò)簡(jiǎn)單地用不同的LLM替換“模型”框來(lái)順利處理這種關(guān)鍵情況。
然后為了確保在LLMOps基礎(chǔ)設(shè)施中有效地進(jìn)行訓(xùn)練、微調(diào)和模型優(yōu)化,保持訓(xùn)練數(shù)據(jù)與后續(xù)推理數(shù)據(jù)格式的一致性至關(guān)重要。通常,采用JSON Lines(.jsonl)格式來(lái)組織訓(xùn)練數(shù)據(jù),這種格式得益于其結(jié)構(gòu)特點(diǎn),非常適合用于LLM的微調(diào),并且能夠高效地處理大規(guī)模數(shù)據(jù)集。
典型的用于微調(diào)的.jsonl文件像這樣:
{"prompt": "問(wèn)題:法國(guó)的首都是什么?", "completion": "法國(guó)的首都是巴黎。"}
{"prompt": "問(wèn)題:誰(shuí)寫(xiě)了《麥克白》?", "completion": "《麥克白》是由威廉·莎士比亞寫(xiě)的。"}
文件中的每一行都是一個(gè)獨(dú)立的JSON對(duì)象,代表一個(gè)單一的訓(xùn)練示例,其中prompt和completion鍵分別指示輸入文本和預(yù)期的模型響應(yīng)。此外,這種格式便于向模型的知識(shí)庫(kù)中增量添加或?qū)С鲂聰?shù)據(jù)。
最后,在設(shè)置LLMOps基礎(chǔ)設(shè)施時(shí),模型參數(shù)也很重要,因?yàn)樗鼈儠?huì)影響模型大小和資源消耗等特性。
關(guān)于訓(xùn)練參數(shù),優(yōu)化訓(xùn)練參數(shù)以平衡模型的復(fù)雜性與部署的限制(如內(nèi)存使用)至關(guān)重要。這種優(yōu)化對(duì)于在資源容量不同的多樣化環(huán)境中部署模型非常重要,確保模型不僅先進(jìn),而且適用于現(xiàn)實(shí)世界的應(yīng)用。
關(guān)于推理參數(shù),調(diào)整最大token參數(shù)可以控制響應(yīng)的長(zhǎng)度和隨機(jī)性。這些設(shè)置作為L(zhǎng)LMOps過(guò)程的一部分進(jìn)行管理,以使模型的輸出與特定應(yīng)用要求和用戶意圖保持一致。
- 如何進(jìn)行模型的評(píng)估
在經(jīng)典MLOps中,ML模型在保留的驗(yàn)證集上進(jìn)行驗(yàn)證,并基于模型性能度量進(jìn)行評(píng)估。但是如何評(píng)價(jià)LLM的表現(xiàn)呢?如何判斷回應(yīng)是好是壞?目前,相關(guān)組織正在對(duì)模型進(jìn)行A/B測(cè)試,為了幫助評(píng)估LLM,出現(xiàn)了HoneyHive、HumanLoop等工具。
- 如何進(jìn)行模型部署和監(jiān)控
當(dāng)基礎(chǔ)模型訓(xùn)練或微調(diào)完成,并且對(duì)成果滿意后,接下來(lái)就是部署模型的階段。在LLMOps中,部署意味著將語(yǔ)言模型從訓(xùn)練狀態(tài)轉(zhuǎn)移到生產(chǎn)環(huán)境,使其能夠在實(shí)際工作中發(fā)揮作用。
部署還包括設(shè)置我們與生產(chǎn)中的模型通信的接口。通常,接口取決于處理模式:
- 實(shí)時(shí)處理:對(duì)于需要實(shí)時(shí)交互的應(yīng)用,如聊天應(yīng)用,部署模型的方式必須允許立即處理數(shù)據(jù)并生成輸出。這通常通過(guò)創(chuàng)建與模型接口的應(yīng)用程序編程接口(API)來(lái)實(shí)現(xiàn)。如今,有許多庫(kù),如Flask,允許我們通過(guò)簡(jiǎn)單的步驟創(chuàng)建API接口。 API可以部署在Web服務(wù)器或云平臺(tái)上,確保用戶或需要與模型交互的系統(tǒng)可以訪問(wèn)它們。我們的LLMOps設(shè)置應(yīng)確保API能夠處理預(yù)期的負(fù)載,并考慮擴(kuò)展性、負(fù)載均衡和故障轉(zhuǎn)移機(jī)制。
- 批量預(yù)測(cè):在許多用例中,實(shí)時(shí)預(yù)測(cè)并不必要。例如,如果有一批客戶評(píng)論,需要每周分類(lèi)一次,我們可以使用訓(xùn)練好的模型批量處理這些評(píng)論。這種方法對(duì)于時(shí)間不敏感的任務(wù)來(lái)說(shuō)是高效且資源友好的。對(duì)于批量用例,可以使用cron(在類(lèi)Unix系統(tǒng))或基于云的任務(wù)調(diào)度服務(wù)等工具來(lái)安排批量作業(yè)。這些作業(yè)將在指定的時(shí)間間隔內(nèi)運(yùn)行模型處理新數(shù)據(jù),處理數(shù)據(jù)并存儲(chǔ)結(jié)果。
- 模型打包:包括將模型及其依賴項(xiàng)包裝成可以輕松部署和在生產(chǎn)環(huán)境中使用的格式。這可能涉及容器化技術(shù),如Docker,它封裝了模型及其環(huán)境,以確保在不同平臺(tái)間的一致性。
- 模型版本控制:跟蹤模型的不同版本至關(guān)重要,特別是當(dāng)您更新或重新訓(xùn)練模型時(shí)。版本控制有助于保持模型迭代、訓(xùn)練數(shù)據(jù)和提示模板的清晰記錄。
在不同版本更新或切換模型,需要監(jiān)控LLM驅(qū)動(dòng)的應(yīng)用程序?qū)?yīng)底層API模型的變化。目前已經(jīng)出現(xiàn)了監(jiān)控LLM的工具,如Whylabs、HumanLoop等。
4.總結(jié)與展望
使用LLMOps(Large Language Model Operations)可以顯著提升開(kāi)發(fā)和運(yùn)維大語(yǔ)言模型(LLM)應(yīng)用的效率和效果。但是仍然面臨著以下的挑戰(zhàn):
- 模型大小與計(jì)算資源挑戰(zhàn):大規(guī)模預(yù)訓(xùn)練模型通常體積龐大,需要大量的參數(shù)以達(dá)到優(yōu)秀的性能,這給模型的部署和使用帶來(lái)了挑戰(zhàn)。模型的訓(xùn)練和推理要求巨大的計(jì)算資源,對(duì)企業(yè)和研究機(jī)構(gòu)造成了壓力。
- 數(shù)據(jù)隱私和安全挑戰(zhàn):大規(guī)模預(yù)訓(xùn)練模型需要使用海量數(shù)據(jù)進(jìn)行無(wú)監(jiān)督學(xué)習(xí),可能引發(fā)數(shù)據(jù)隱私和安全問(wèn)題。在特定領(lǐng)域如醫(yī)療領(lǐng)域應(yīng)用時(shí),敏感數(shù)據(jù)的暴露可能造成隱私泄露的風(fēng)險(xiǎn)。同時(shí),預(yù)訓(xùn)練過(guò)程中存在惡意注入攻擊的風(fēng)險(xiǎn),可能導(dǎo)致模型被篡改和損壞。
- 特定領(lǐng)域知識(shí)與遷移學(xué)習(xí)的挑戰(zhàn):預(yù)訓(xùn)練模型在無(wú)標(biāo)注數(shù)據(jù)上訓(xùn)練,其特征具有一定的通用性,但在特定領(lǐng)域應(yīng)用中可能缺乏相關(guān)知識(shí),導(dǎo)致性能下降。將預(yù)訓(xùn)練模型遷移到具體任務(wù)上需要額外的標(biāo)注數(shù)據(jù),增加了應(yīng)用的成本和困難。
- 技術(shù)更新和持續(xù)學(xué)習(xí)的挑戰(zhàn):隨著技術(shù)的不斷進(jìn)步,LMMOps需要不斷跟進(jìn)最新的技術(shù)趨勢(shì),以保持模型的競(jìng)爭(zhēng)力和性能。持續(xù)學(xué)習(xí)對(duì)于模型的優(yōu)化和改進(jìn)至關(guān)重要,但這也需要相應(yīng)的資源和策略支持。
- 軟件依賴和兼容性的挑戰(zhàn):LMMOps可能依賴于特定的軟件庫(kù)或框架,而這些依賴可能會(huì)隨著時(shí)間的推移而發(fā)生變化,導(dǎo)致兼容性問(wèn)題。不同的系統(tǒng)和環(huán)境可能對(duì)模型的部署和運(yùn)行產(chǎn)生影響,需要確保在各種環(huán)境下的穩(wěn)定性和性能。
- 團(tuán)隊(duì)協(xié)作和溝通的挑戰(zhàn):LMMOps往往涉及多個(gè)團(tuán)隊(duì)和成員的協(xié)作,如何有效溝通和協(xié)調(diào)各個(gè)團(tuán)隊(duì)的工作是一個(gè)重要挑戰(zhàn)。團(tuán)隊(duì)成員可能具有不同的專(zhuān)業(yè)背景和技能水平,需要找到一種有效的方式來(lái)共享知識(shí)和經(jīng)驗(yàn)。
綜上所述,LMMOps面臨的挑戰(zhàn)涵蓋了技術(shù)、安全、資源、團(tuán)隊(duì)協(xié)作等多個(gè)方面。為了克服這些挑戰(zhàn),需要綜合考慮技術(shù)創(chuàng)新、團(tuán)隊(duì)協(xié)作、數(shù)據(jù)安全和隱私保護(hù)等多個(gè)因素。
自O(shè)penAI的ChatGPT發(fā)布以來(lái),LLM是目前AI領(lǐng)域的熱門(mén)話題。這些深度學(xué)習(xí)模型可以生成人類(lèi)語(yǔ)言輸出,使其成為會(huì)話AI、寫(xiě)作助手和編程助手等任務(wù)的強(qiáng)大工具。隨著LLM在AI行業(yè)的普及,我們認(rèn)為:
- 內(nèi)置LLM關(guān)鍵技術(shù)棧,包括對(duì)開(kāi)源社區(qū)模型的支持、直觀的 Prompt編排界面、高質(zhì)量的RAG引擎、靈活的Agent框架,并同時(shí)提供支持應(yīng)用構(gòu)建、提示詞、發(fā)布的易用界面和API等。這為開(kāi)發(fā)者節(jié)省了許多重復(fù)造輪子的時(shí)間,使其可以專(zhuān)注在創(chuàng)新和業(yè)務(wù)需求上。
- 更多理念融合,如后端即服務(wù)(Backend as Service)和 LLMOps的大語(yǔ)言模型應(yīng)用開(kāi)發(fā)平臺(tái),使開(kāi)發(fā)者可以快速搭建生產(chǎn)級(jí)的生成式AI應(yīng)用。即使你是非技術(shù)人員,也能參與到 AI 應(yīng)用的定義和數(shù)據(jù)運(yùn)營(yíng)過(guò)程中。
- 大語(yǔ)言模型與已有小模型工具的有機(jī)結(jié)合,是大模型應(yīng)用落地的值得嘗試的方向。
- AI Agent,基于智能體編排多個(gè)工具完成復(fù)雜任務(wù),將徹底改變?nèi)祟?lèi)使用計(jì)算機(jī)的方式,智能體有可能成為 LLM 應(yīng)用程序架構(gòu)的核心部分,甚至接管整個(gè)技術(shù)棧。
總體而言,LLM和LLMOps的興起代表了構(gòu)建和維護(hù)AI產(chǎn)品的重大轉(zhuǎn)變。
參考文獻(xiàn)
[1].???https://zhuanlan.zhihu.com/p/682932255??
[2].???https://zhuanlan.zhihu.com/p/629589593??
[3].???https://mp.weixin.qq.com/s/-VUoKU3lKGi1TkV1c_-rxg??
[4].???https://zhuanlan.zhihu.com/p/645327750??
[5].???https://www.cnblogs.com/charlieroro/p/18051187??
[6].???https://blog.csdn.net/csdn1561168266/article/details/137406086??
[7].???https://cloud.tencent.com/developer/article/2301085??
[8].???https://zhuanlan.zhihu.com/p/631630717??
[9].???https://zhuanlan.zhihu.com/p/640725385??
[10].???https://dify.ai/zh??
[11].???https://python.langchain.com/docs/get_started/introduction/??
[12].???https://docs.flowiseai.com/??
[13].???https://docs.vllm.ai/en/latest/dev/kernel/paged_attention.html??
[14].???https://www.hugging-face.org/models/??
[15].ModelScope:??https://modelscope.cn/home??
[16].???https://www.honeyhive.ai/evaluation??
[17].???https://humanloop.com/??
[18].???https://arxiv.org/abs/2307.03109??
本文轉(zhuǎn)載自??AI遇見(jiàn)云??,作者: 王欽 ????
