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