采用OpenAI還是DIY?揭開自托管大型語言模型的真實成本
你自豪地將你的服務(wù)標(biāo)榜為“AI驅(qū)動”,通過整合大型語言模型。你的網(wǎng)站首頁自豪地展示了你的AI驅(qū)動服務(wù)帶來的革命性影響,通過互動演示和案例研究,這也是你的公司在全球GenAI領(lǐng)域留下的第一個印記。
你的小而忠實的用戶基礎(chǔ)正在享受提升后的客戶體驗,并且你可以看到未來增長的潛力。但是,就在這個月進入第三周時,你收到了一封來自O(shè)penAI的郵件,讓你大吃一驚:
就在一周前,你還在與客戶交談,評估產(chǎn)品市場契合度(PMF),現(xiàn)在,成千上萬的用戶涌到你的網(wǎng)站(如今在社交媒體上任何事情都可能變得病毒式流傳),并使你的AI驅(qū)動服務(wù)崩潰。
結(jié)果,你曾經(jīng)可靠的服務(wù)不僅讓現(xiàn)有用戶感到沮喪,也影響了新用戶。
一個快速而顯而易見的解決辦法是通過增加使用限制立即恢復(fù)服務(wù)。
然而,這個臨時解決方案帶來了不安感。你不禁感到自己被鎖定在對單一供應(yīng)商的依賴中,對自己的AI及其相關(guān)成本控制有限。
“我應(yīng)該自己動手嗎?”你問自己。
幸運的是,你知道開源的大型語言模型(LLMs)已成為現(xiàn)實。在像Hugging Face這樣的平臺上,有成千上萬這樣的模型可供即時使用,這為自托管開啟了可能性。
然而,你遇到的最強大的LLMs擁有數(shù)十億參數(shù),達到數(shù)百千兆字節(jié),并且需要大量努力才能擴展。在一個需要低延遲的實時系統(tǒng)中,你不能像使用傳統(tǒng)模型那樣簡單地將它們插入你的應(yīng)用程序。
盡管你對團隊建設(shè)必要基礎(chǔ)設(shè)施的能力充滿信心,真正的關(guān)注點在于這種轉(zhuǎn)變的成本含義,包括:
- 微調(diào)成本
- 托管成本
- 服務(wù)成本
所以,一個重大的問題是:你是應(yīng)該增加使用限制,還是應(yīng)該走自托管,也就是所謂的“擁有”路線?
使用Llama 2做一些計算
首先,不要急。這是一個重大決定。
如果你咨詢你的機器學(xué)習(xí)(ML)工程師,他們可能會告訴你,Lama 2是一個開源LLM,看起來是一個不錯的選擇,因為在大多數(shù)任務(wù)上它的表現(xiàn)與你目前使用的GPT-3一樣好。
你還會發(fā)現(xiàn),這個模型有三種規(guī)模大小——70億、13億和7億參數(shù)——你決定使用最大的70億參數(shù)模型,以保持與你目前使用的OpenAI模型的競爭力。
LLaMA 2使用bfloat16進行訓(xùn)練,因此每個參數(shù)消耗2字節(jié)。這意味著模型大小將是140 GB。
如果你認為這個模型調(diào)整起來很大,不用擔(dān)心。使用LoRA,你不需要在部署前對整個模型進行微調(diào)。
事實上,你可能只需要微調(diào)總參數(shù)的約0.1%,即70M,這在bfloat16表示下消耗0.14 GB。
令人印象深刻,對吧?
為了在微調(diào)期間適應(yīng)內(nèi)存開銷(如反向傳播、存儲激活、存儲數(shù)據(jù)集),最好維持的內(nèi)存空間是可訓(xùn)練參數(shù)消耗的大約5倍。
讓我們來詳細分析一下:
在使用LoRA時,LLaMA 2 70B模型的權(quán)重是固定的,因此這不會導(dǎo)致內(nèi)存開銷 → 內(nèi)存需求 = 140 GB。
然而,為了調(diào)整LoRA層,我們需要維持0.14 GB * (5倍) = 0.7 GB。
這樣在微調(diào)期間總共需要約141 GB的內(nèi)存。
假設(shè)你目前還沒有培訓(xùn)基礎(chǔ)設(shè)施,我們假設(shè)你更喜歡使用AWS。根據(jù)AWS EC2按需定價,計算成本約為每小時2.8美元,因此微調(diào)的成本約為每天67美元,這并不是一個巨大的費用,因為微調(diào)不會持續(xù)很多天。
人工智能與餐廳正相反:主要成本在于服務(wù)而非準(zhǔn)備
在部署時,你需要在內(nèi)存中維護兩個權(quán)重:
- 模型權(quán)重,消耗140 GB內(nèi)存。
- LoRA微調(diào)權(quán)重,消耗0.14 GB內(nèi)存。
總共是140.14 GB。
當(dāng)然,你可以取消梯度計算,但仍然建議維持大約1.5倍的內(nèi)存 — 大約210 GB — 以應(yīng)對任何意外的開銷。
再次基于AWS EC2按需定價,GPU計算的成本約為每小時3.70美元,即保持模型在生產(chǎn)內(nèi)存中并響應(yīng)傳入請求的成本約為每天90美元。
這相當(dāng)于每月約2700美元。
另一個需要考慮的事情是,意外故障總是會發(fā)生。如果你沒有備用機制,你的用戶將停止接收模型預(yù)測。如果你想防止這種情況發(fā)生,你需要維護另一個冗余模型,以防第一個模型請求失敗。
因此,這將使你的成本達到每天180美元或每月5400美元。你幾乎接近目前使用OpenAI的成本了。
在什么情況下,OpenAI和開源模型的成本會打平?
如果你繼續(xù)使用OpenAI,以下是每天你可以處理的單詞數(shù)量,以匹配上述使用LLaMA 2的微調(diào)和服務(wù)成本。
根據(jù)OpenAI的定價,微調(diào)GPT 3.5 Turbo的成本為每1000個令牌0.0080美元。
假設(shè)大多數(shù)單詞有兩個令牌,為了匹配開源LLaMA 2 70B模型的微調(diào)成本(每天67美元),你需要向OpenAI模型提供大約415萬個單詞。
通常,A4紙上的平均字數(shù)為300,這意味著我們可以向模型提供大約14,000頁的數(shù)據(jù)以匹配開源微調(diào)成本,這是一個巨大的數(shù)字。
你可能沒有那么多的微調(diào)數(shù)據(jù),所以使用OpenAI進行微調(diào)的成本總是較低。
另一個可能很明顯的點是,這種微調(diào)成本不是與訓(xùn)練時間相關(guān),而是與模型微調(diào)的數(shù)據(jù)量相關(guān)。在微調(diào)開源模型時情況并非如此,因為成本將取決于數(shù)據(jù)量和你使用AWS計算資源的時間。
至于服務(wù)成本,根據(jù)OpenAI的定價頁面,一個經(jīng)過微調(diào)的GPT 3.5 Turbo的輸入成本為每1000個令牌0.003美元,輸出為每1000個令牌0.006美元。
我們假設(shè)平均每1000個令牌0.004美元。要達到每天180美元的成本,我們需要通過API每天處理大約2220萬個單詞。
這相當(dāng)于超過74,000頁的數(shù)據(jù),每頁300個單詞。
然而,好處是你不需要確保模型全天候運行,因為OpenAI提供了按使用付費的定價。
如果你的模型從未被使用,你就不需要支付任何費用。
總結(jié):何時擁有才真正有意義?
一開始,轉(zhuǎn)向自托管AI可能看起來是一個誘人的嘗試。但要小心隨之而來的隱藏成本和頭痛問題。
除了偶爾失眠的夜晚讓你納悶?zāi)愕腁I驅(qū)動服務(wù)為何會宕機之外,如果使用第三方提供商,幾乎所有在生產(chǎn)系統(tǒng)中管理LLMs的困難都會消失。
特別是當(dāng)你的服務(wù)不是主要依賴于“AI”,而是依賴于AI的其他東西時。
對于大企業(yè)來說,每年65,000美元的擁有成本可能只是杯水車薪,但對于大多數(shù)企業(yè)來說,這是一個不能忽視的數(shù)字。
此外,我們不應(yīng)忘記其他額外費用,如人才和維護,這些可以輕松將總成本增加到每年200,000至250,000美元以上。
當(dāng)然,從一開始就擁有模型有其好處,比如保持對你的數(shù)據(jù)和使用的控制。
但是,要使自托管變得可行,你將需要用戶請求量遠遠超過每天大約2220萬個單詞的標(biāo)準(zhǔn),并且需要同時具備管理人才和后勤的資源。
對于大多數(shù)用例來說,擁有模型而不是使用API在財務(wù)上可能并不劃算。