譯者 | 劉濤
審校 | 重樓
如今,AI工具已變得司空見慣,你可能每天都在使用它們。保護(hù)你的個(gè)人和商業(yè)機(jī)密數(shù)據(jù)的關(guān)鍵途徑之一,就是在自己的基礎(chǔ)配置上運(yùn)行自己的AI。
本指南將向你介紹如何在自己的計(jì)算機(jī)上托管一個(gè)開源大語言模型(LLM)。這樣做有助于確保你不會(huì)通過基于云的AI解決方案將數(shù)據(jù)泄露給第三方公司。
前提條件
- 一定的AI知識(shí):我將在文章中介紹與我們操作相關(guān)的主要概念,具備一些關(guān)于大語言模型(LLMs)的基礎(chǔ)知識(shí)將有助于你更好地理解這些內(nèi)容。不過,即使你一無所知,也不用擔(dān)心——你仍然會(huì)發(fā)現(xiàn)這很有趣。
- 一臺(tái)性能不錯(cuò)的電腦:系統(tǒng)至少需要配備16GB的內(nèi)存、多核CPU,以及為獲得最佳性能而配備的GPU。(如果你的電腦配置較低,操作可能會(huì)相當(dāng)緩慢)
- 網(wǎng)絡(luò)連接:需要網(wǎng)絡(luò)連接來下載和安裝模型。
- 時(shí)間和耐心:由于下載、安裝和配置過程可能較為復(fù)雜且耗時(shí),因此你需要具備足夠的時(shí)間和耐心來完成這些步驟。
什么是LLM?
大語言模型(LLMs),即Large Language Models,是先進(jìn)的人工智能系統(tǒng),經(jīng)過訓(xùn)練能夠理解并生成自然的人類可讀語言。它們利用算法來處理和理解自然語言,并通過大量信息的訓(xùn)練來掌握數(shù)據(jù)中的模式和關(guān)系。
像OpenAI、Anthropic和Meta這樣的公司已經(jīng)開發(fā)出了LLMs,你可以利用它們來執(zhí)行諸如內(nèi)容生成、代碼分析、旅行規(guī)劃等任務(wù)。
云端AI與自托管AI的比較
在決定是否在本地托管AI模型之前,了解這種模式與云端AI解決方案的差異至關(guān)重要。這兩種選項(xiàng)各有優(yōu)勢(shì),適用于不同的應(yīng)用場(chǎng)景。
云端AI解決方案
這些服務(wù)由OpenAI、Google或AWS等提供商托管和維護(hù)。例如,OpenAI的GPT模型、Google Bard和AWS SageMaker等。你可以通過互聯(lián)網(wǎng)使用API或其端點(diǎn)訪問這些模型。
關(guān)鍵特性:
- 易用性:設(shè)置簡(jiǎn)便,你只需通過API集成或通過網(wǎng)頁訪問即可。
- 可擴(kuò)展性:由于由公司管理,因此能更好地處理大量工作負(fù)載和并發(fā)請(qǐng)求。
- 前沿模型:云端通常提供最新且功能最強(qiáng)大的模型。
- 數(shù)據(jù)依賴性:你的數(shù)據(jù)會(huì)被發(fā)送到云端進(jìn)行處理,這可能會(huì)引發(fā)隱私擔(dān)憂。
- 持續(xù)成本:盡管一些模型是免費(fèi)的,但其他大部分模型通常會(huì)根據(jù)請(qǐng)求或使用情況(如更強(qiáng)大或最新的模型)進(jìn)行收費(fèi),從而成為一項(xiàng)運(yùn)營(yíng)成本。
自托管AI
采用這種模式,你可以在自己的硬件上運(yùn)行模型??梢允褂肙llama等工具下載并托管Llama 2、GPT-J或Mistral等開源LLM。
關(guān)鍵特性:
- 數(shù)據(jù)隱私:你的數(shù)據(jù)保留在你的基礎(chǔ)配置上,使你能夠?qū)ζ溥M(jìn)行完全控制。
- 長(zhǎng)期成本效益:雖然需要前期投資硬件,但可以避免重復(fù)的API費(fèi)用。
- 可定制性:你可以對(duì)模型進(jìn)行微調(diào),使其適應(yīng)特定需求。
- 技術(shù)要求:需要功能強(qiáng)大的硬件、設(shè)置工作和技術(shù)知識(shí)。
- 可擴(kuò)展性有限:最適合的應(yīng)用場(chǎng)景是個(gè)人或小規(guī)模使用。
你應(yīng)該選擇哪種方案?
如果你需要快速且可擴(kuò)展地訪問高級(jí)模型,并且不介意將數(shù)據(jù)與第三方共享,那么云端AI解決方案可能是更好的選擇。另一方面,如果數(shù)據(jù)安全、定制需求或成本節(jié)約是你的首要考慮因素,那么在本地托管LLM(大語言模型)可能是更好的選擇。
如何在你的機(jī)器上本地運(yùn)行LLM(大語言模型)?
有多種解決方案可以讓你在自有的基礎(chǔ)配置上運(yùn)行特定的開源LLM。
盡管大多數(shù)本地托管解決方案都聚焦于開源LLM,如Llama 2、GPT-J或Mistral,但根據(jù)使用條款,某些專有或授權(quán)模型也可以在本地運(yùn)行。
- 開源模型:這些模型可免費(fèi)獲取,無需許可限制即可下載、修改和托管。例如,Llama 2(由Meta開發(fā))、GPT-J和Mistral等。
- 提供本地選項(xiàng)的專有模型:有些公司可能會(huì)提供其模型的可下載版本以供離線使用,但這通常需要特定的許可或硬件。例如,英偉達(dá)(NVIDIA)的NeMo框架提供了在其基礎(chǔ)配置上托管模型的工具,而一些較小的公司可能會(huì)為企業(yè)客戶提供其專有LLM的可下載版本。
請(qǐng)記住,如果你要運(yùn)行自己的LLM,你將需要一臺(tái)功能強(qiáng)大的計(jì)算機(jī)(配備良好的GPU和CPU)。如果你的計(jì)算機(jī)性能不夠強(qiáng)大,你可以嘗試運(yùn)行更小、更輕量級(jí)的模型,盡管這可能會(huì)降低系統(tǒng)的運(yùn)行速度。
以下是我為本指南使用的一個(gè)合適系統(tǒng)配置的示例:
- CPU:Intel Core i7 13700HX
- 內(nèi)存:16GB DDR5
- 存儲(chǔ):512GB SSD
- 顯卡:Nvidia RTX 3050(6GB顯存)在本指南中,你將使用Ollama來下載并在你的電腦上運(yùn)行AI模型。
什么是Ollama?
Ollama是一款旨在簡(jiǎn)化直接在計(jì)算機(jī)上運(yùn)行開源大型語言模型(LLMs)過程的工具。它充當(dāng)本地模型管理器和運(yùn)行時(shí)環(huán)境,負(fù)責(zé)從下載模型文件到設(shè)置可與模型交互的本地環(huán)境等一切事務(wù)。
Ollama可幫助你完成以下任務(wù):
- 管理模型:Ollama提供了一種簡(jiǎn)單的方法來瀏覽、下載和管理不同的開源模型。你可以在其官方網(wǎng)站上查看支持的模型列表。
- 輕松部署:只需幾條命令,你就可以設(shè)置一個(gè)功能齊全的環(huán)境來運(yùn)行和與LLMs進(jìn)行交互。
- 本地托管:模型完全在你的基礎(chǔ)配置上運(yùn)行,確保你的數(shù)據(jù)保持私密和安全。
- 集成不同模型:它支持使用Python或JavaScript等編程語言將模型集成到你自己的項(xiàng)目中。
通過使用Ollama,你無需深入了解設(shè)置機(jī)器學(xué)習(xí)框架或管理依賴項(xiàng)的復(fù)雜性。它簡(jiǎn)化了該過程,特別是對(duì)于那些希望嘗試LLMs而無需深厚技術(shù)背景的人來說。
你可以通過其網(wǎng)站上的“下載”按鈕非常方便地安裝Ollama。
如何使用Ollama安裝/運(yùn)行你的模型
在安裝完Ollama之后,請(qǐng)遵循以下步驟來安裝并使用你的模型:
1.開你的瀏覽器,并訪問localhost:11434以確保Ollama正在運(yùn)行。
2.接下來,打開命令提示符,并輸入ollama run <model_name>。在這里,將<model_name>替換為Ollama所支持的你想要運(yùn)行的模型名稱,例如Meta的Llama2或Mistral。
3.等待安裝過程完成。
4.在出現(xiàn)>>> Send a message (/? for help)的提示符時(shí),向AI輸入一條消息,并按下Enter鍵。
你已經(jīng)成功安裝了模型,現(xiàn)在可以與它進(jìn)行聊天了!
用新安裝的模型創(chuàng)建聊天機(jī)器人
在你個(gè)人的基礎(chǔ)架構(gòu)中運(yùn)行開源模型,你可以隨意更改和使用它。甚至可以利用Python、JavaScript和其他語言中的ollama模塊,為個(gè)人應(yīng)用而創(chuàng)建本地聊天機(jī)器人或應(yīng)用程序。
現(xiàn)在,讓我們來了解一下如何在幾分鐘內(nèi)使用它在Python中構(gòu)建一個(gè)聊天機(jī)器人。
步驟1:安裝Python
如果尚未安裝Python,請(qǐng)從Python官方網(wǎng)站下載并安裝。為確保最佳兼容性,請(qǐng)避免使用最新的Python版本,因?yàn)槟承┠K可能尚未完全支持它。相反,請(qǐng)選擇最新的穩(wěn)定版本(通常是最新發(fā)布版本之前的版本),以確保所有必需模塊都能順暢運(yùn)行。
在安裝Python時(shí),請(qǐng)確保為安裝程序提供管理員權(quán)限,并勾選“添加到PATH”復(fù)選框。
步驟2:安裝Ollama
接下來,你需要在保存文件的目錄中打開一個(gè)新的終端窗口,在文件資源管理器中打開該目錄,右鍵單擊后選擇“在終端中打開”(如果你使用的是Windows 10或更早版本,則點(diǎn)擊“使用命令提示符或PowerShell打開”)。
輸入pip install ollama并按Enter鍵。這將為Python安裝ollama模塊,以便你可以從Python訪問模型以及該工具提供的函數(shù)。請(qǐng)等待該過程完成。
步驟3:添加Python代碼
在你的文件系統(tǒng)中容易訪問的位置創(chuàng)建一個(gè)帶有.py擴(kuò)展名的Python文件。使用你喜歡的代碼編輯器打開該文件,如果沒有安裝代碼編輯器,可以使用瀏覽器中的VS Code在線版本。
現(xiàn)在,在你的Python文件中添加以下代碼:
from ollama import chat
def stream_response(user_input):
"""Stream the response from the chat model and display it in the CLI."""
try:
print("\nAI: ", end="", flush=True)
stream = chat(model='llama2', messages=[{'role': 'user', 'content': user_input}], stream=True)
for chunk in stream:
content = chunk['message']['content']
print(content, end='', flush=True)
print()
except Exception as e:
print(f"\nError: {str(e)}")
def main():
print("Welcome to your CLI AI Chatbot! Type 'exit' to quit.\n")
while True:
user_input = input("You: ")
if user_input.lower() in {"exit", "quit"}:
print("Goodbye!")
break
stream_response(user_input)
if __name__ == "__main__":
main()
如果你不理解Python代碼,這里基本上解釋了它的功能:
- 首先,從ollama庫中導(dǎo)入聊天模塊,該模塊包含與計(jì)算機(jī)上的Ollama應(yīng)用程序集成的預(yù)寫代碼。
- 然后聲明一個(gè)stream_response函數(shù),該函數(shù)將你的提示傳遞給指定的模型,并以流式傳輸(即生成時(shí)逐塊提供響應(yīng))的方式將實(shí)時(shí)響應(yīng)返回給你。
- 接著在主函數(shù)中,向終端打印歡迎文本。它獲取用戶輸入,并將其傳遞給stream_response函數(shù),所有這些都被包裹在一個(gè)while True或無限循環(huán)中。這允許我們向AI提問,而不會(huì)中斷執(zhí)行過程。我們還指定,如果用戶輸入包含“exit”或“quit”,代碼將停止執(zhí)行。
第4步:編寫提示
現(xiàn)在回到終端窗口,輸入python filename.py,將filename替換為你設(shè)置的實(shí)際文件名,然后按Enter鍵。
你應(yīng)該會(huì)看到一個(gè)提示說“You:”,就像我們?cè)诖a中提到的那樣。輸入你的提示并按Enter鍵。你應(yīng)該能看到AI響應(yīng)正在被流式傳輸。要停止執(zhí)行,請(qǐng)輸入提示“exit”,或關(guān)閉終端窗口。
你甚至可以安裝JavaScript或其他支持語言的模塊,并在你的代碼中集成AI。請(qǐng)隨意查閱Ollama官方文檔,了解你可以使用AI模型編寫什么代碼。
如何通過微調(diào)自定義模型
什么是微調(diào)?
微調(diào)是指將一個(gè)預(yù)訓(xùn)練的語言模型在特定且自定義的數(shù)據(jù)集上進(jìn)行進(jìn)一步訓(xùn)練,以滿足特定需求的過程。雖然大型語言模型(LLMs)已經(jīng)在大規(guī)模數(shù)據(jù)集上進(jìn)行了訓(xùn)練,但它們可能并不總是完全符合你的需求,這時(shí)可以通過微調(diào)讓模型更適合你的特定用例。
如何微調(diào)模型
微調(diào)模型需要以下要素:
- 預(yù)訓(xùn)練模型:建議從強(qiáng)大的開源LLM開始,如LLaMA、Mistral或Falcon。
- 優(yōu)質(zhì)數(shù)據(jù)集:數(shù)據(jù)集是用于訓(xùn)練、測(cè)試或評(píng)估機(jī)器學(xué)習(xí)模型(包括LLMs)的數(shù)據(jù)集合。數(shù)據(jù)集的質(zhì)量和相關(guān)性直接影響模型在給定任務(wù)上的表現(xiàn)。請(qǐng)使用與你領(lǐng)域或任務(wù)相關(guān)的數(shù)據(jù)集。例如,如果你希望用AI撰寫博客文章,那么就用它訓(xùn)練高質(zhì)量博客內(nèi)容。
- 充足的資源:微調(diào)涉及重新訓(xùn)練模型,這需要大量的計(jì)算資源(最好是配有強(qiáng)大GPU的計(jì)算機(jī))。
你可以使用多種工具來微調(diào)你的模型。Unsloth就是這樣一個(gè)快速選項(xiàng),它可用于使用任何數(shù)據(jù)集來微調(diào)模型。
自托管LLMs的好處是什么?
如上所述,自托管LLMs有多種原因。簡(jiǎn)而言之,以下是其中一些主要好處:
- 增強(qiáng)的數(shù)據(jù)隱私和安全:因?yàn)?/span>你的數(shù)據(jù)不會(huì)離開你的計(jì)算機(jī),你可以完全控制它。
- 節(jié)省成本:你無需定期支付API訂閱費(fèi)用。相反,這是一次性付費(fèi),足夠獲得強(qiáng)大的基礎(chǔ)配置,從而在長(zhǎng)期內(nèi)幫助你運(yùn)行。
- 高度可定制性:你可以通過微調(diào)或在自己的數(shù)據(jù)集上訓(xùn)練來根據(jù)特定需求定制模型。
- 更低的延遲
何時(shí)不應(yīng)使用自托管AI?
出于多種原因,自托管AI可能并不適合你。首先,你或許不具備運(yùn)行模型所需的系統(tǒng)資源,或者你不原也無法對(duì)系統(tǒng)進(jìn)行升級(jí)。
其次,你可能缺乏設(shè)置自身模型以及對(duì)其進(jìn)行微調(diào)所必需的技術(shù)知識(shí),亦或也沒有足夠的時(shí)間投入其中。雖然這并非難以完成之事,但確實(shí)也需要一些背景知識(shí)和特定技能。如果你不了解如何排除可能出現(xiàn)的錯(cuò)誤,這也會(huì)成為一個(gè)棘手的問題。
此外,如果你需要模型全天候不間斷運(yùn)行,而你可能缺乏處理其基礎(chǔ)配置的能力。
上述這些問題并非無法解決,但它們很可能會(huì)對(duì)你在選擇使用基于云的解決方案還是托管自己的模型這一決策上產(chǎn)生影響。
結(jié)論
如果你高度重視數(shù)據(jù)隱私、成本效益以及定制化,那么自行托管大型語言模型(LLMs)或許會(huì)帶來顛覆性的變化。
諸如Ollama之類的工具,使得將強(qiáng)大的AI模型部署到你的個(gè)人基礎(chǔ)配置上變得前所未有的簡(jiǎn)單。盡管自行托管也面臨一些挑戰(zhàn),但它能讓你掌控自己的數(shù)據(jù),并靈活地根據(jù)需求調(diào)整模型。
只是在決定采用這種方式之前,請(qǐng)務(wù)必評(píng)估你的技術(shù)能力、硬件資源和項(xiàng)目需求。倘若你需要可靠性、可擴(kuò)展性以及快速訪問前沿功能的能力,那么基于云的大型語言模型或許仍然是更優(yōu)的選擇。
如果你喜歡這篇文章,千萬別忘了表達(dá)你的支持,并在X平臺(tái)和LinkedIn上關(guān)注我,以便與我保持聯(lián)系。此外,我還會(huì)在YouTube上發(fā)布簡(jiǎn)短但信息豐富的技術(shù)內(nèi)容,別忘了查看我的視頻。
譯者介紹
劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測(cè)管控負(fù)責(zé)人。
原文標(biāo)題:How to Run Open Source LLMs on Your Own Computer Using Ollama,作者:Krishna Sarathi Ghosh