像ChatGPT、Claude.ai和phind這樣的聊天機(jī)器人非常有用,但可能并不總是希望的問(wèn)題或敏感數(shù)據(jù)由外部應(yīng)用程序處理。在平臺(tái)上尤其如此,在這些平臺(tái)上,你的互動(dòng)可能會(huì)被人類審查,并以其他方式用于幫助訓(xùn)練未來(lái)的模型。
一種解決方案是下載一個(gè)大型語(yǔ)言模型(LLM)并在自己的機(jī)器上運(yùn)行它。這樣一來(lái),外部公司就永遠(yuǎn)無(wú)法訪問(wèn)的數(shù)據(jù)。這也是嘗試一些新專業(yè)模型的一個(gè)快速選擇,如Meta最近宣布的Code Llama系列模型,這些模型經(jīng)過(guò)了編碼調(diào)整,以及Seamless M4T,旨在實(shí)現(xiàn)文本到語(yǔ)音和語(yǔ)言翻譯。
運(yùn)行自己的LLM聽(tīng)起來(lái)可能很復(fù)雜,但有了正確的工具,它會(huì)出奇地容易。而且許多型號(hào)的硬件要求并沒(méi)有想象中那么瘋狂。我已經(jīng)在兩個(gè)系統(tǒng)上測(cè)試了本文中提供的選項(xiàng):一個(gè)是帶有英特爾i9處理器、64GB RAM和英偉達(dá)GeForce 12GB GPU(可能沒(méi)有參與運(yùn)行該軟件的大部分工作)的戴爾PC,另一個(gè)是只有16GB RAM的M1芯片的Mac。
請(qǐng)注意,可能需要一點(diǎn)研究才能找到一個(gè)在的任務(wù)中運(yùn)行良好并在桌面硬件上運(yùn)行的模型。而且,很少有人能像你習(xí)慣的ChatGPT(尤其是GPT-4)或Claude.ai這樣的工具那樣好。命令行工具LLM的創(chuàng)建者Simon Willison在上個(gè)月的一次演示中認(rèn)為,即使本地模型的響應(yīng)是錯(cuò)誤的,運(yùn)行它也是值得的:
在你的筆記本電腦上運(yùn)行的[一些]會(huì)產(chǎn)生瘋狂的幻覺(jué)——我認(rèn)為這實(shí)際上是運(yùn)行它們的一個(gè)很好的理由,因?yàn)樵谀愕碾娔X上運(yùn)行弱型號(hào)是了解這些東西如何工作及其局限性的一種更快的方式。
同樣值得注意的是,開(kāi)源模型可能會(huì)不斷改進(jìn),一些行業(yè)觀察人士預(yù)計(jì),它們與商業(yè)領(lǐng)袖之間的差距會(huì)縮小。
1.使用GPT4All運(yùn)行本地聊天機(jī)器人
如果你想要一個(gè)在本地運(yùn)行、不會(huì)在其他地方發(fā)送數(shù)據(jù)的聊天機(jī)器人,?GPT4All?提供了一個(gè)易于設(shè)置的桌面客戶端供下載。它包括在自己的系統(tǒng)上運(yùn)行的型號(hào)的選項(xiàng),還有Windows、macOS和Ubuntu的版本。
當(dāng)?shù)谝淮未蜷_(kāi)GPT4All桌面應(yīng)用程序時(shí),將看到下載大約10個(gè)(截至本文撰寫之時(shí))可以在本地運(yùn)行的模型的選項(xiàng)。其中包括Meta AI的模型Llama-2-7B聊天。如果你有API密鑰,你也可以設(shè)置OpenAI的GPT-3.5和GPT-4(如果你有訪問(wèn)權(quán)限)供非本地使用。
GPT4All接口的模型下載部分一開(kāi)始有點(diǎn)令人困惑。在我下載了幾個(gè)模型后,我仍然可以選擇全部下載。這表明下載不起作用。然而,當(dāng)我檢查下載路徑時(shí),模型就在那里。
GPT4All中模型下載接口的一部分。一旦我打開(kāi)應(yīng)用程序的使用部分,我下載的模型就會(huì)自動(dòng)出現(xiàn)。
一旦建立了模型,聊天機(jī)器人界面本身就很干凈,易于使用。方便的選項(xiàng)包括將聊天復(fù)制到剪貼板并生成響應(yīng)。
還有一個(gè)新的測(cè)試版LocalDocs插件,可以讓你在本地與自己的文檔“聊天”??梢栽谥袉⒂肧ettings > Plugins 選項(xiàng)卡,將看到“LocalDocs插件(BETA)設(shè)置”標(biāo)題和在特定文件夾路徑創(chuàng)建集合的選項(xiàng)。
該插件正在進(jìn)行中,并且?文檔? 警告說(shuō),即使LLM可以訪問(wèn)添加的專家信息,它仍可能“產(chǎn)生幻覺(jué)”(編造)。盡管如此,這是一個(gè)有趣的功能,隨著開(kāi)源模型變得更加強(qiáng)大,它可能會(huì)得到改進(jìn)。
除了聊天機(jī)器人應(yīng)用程序,GPT4All還綁定了Python、Node和命令行界面(CLI)。還有一種服務(wù)器模式,可以讓你通過(guò)一個(gè)結(jié)構(gòu)非常像OpenAI的HTTP API與本地LLM交互。目標(biāo)是通過(guò)更改幾行代碼,讓你用本地LLM交換OpenAI的LLM。
2.命令行啟動(dòng)LLM
Simon Willison的LLM是我見(jiàn)過(guò)的在自己的機(jī)器上本地下載和使用開(kāi)源LLM的更簡(jiǎn)單的方法之一。雖然確實(shí)需要安裝Python來(lái)運(yùn)行它,但不應(yīng)該接觸任何Python代碼。如果你在Mac電腦上使用Homebrew,只需使用:
brew install llm
如果在Windows計(jì)算機(jī)上,請(qǐng)使用最喜歡的安裝Python庫(kù)的方式,例如:
pip install llm
LLM默認(rèn)使用OpenAI模型,但可以使用插件在本地運(yùn)行其他模型。例如,如果安裝gpt4all插件,將可以從gpt4all訪問(wèn)其他本地模型。還有用于llama、MLC項(xiàng)目和MPT-30B的插件,以及其他遠(yuǎn)程模型。
在命令行上安裝一個(gè)插件,名稱為llm Install model:
llm install llm-gpt4all
可以使用命令llm-models-list查看所有可用的型號(hào)——遠(yuǎn)程和已安裝的型號(hào),包括每種型號(hào)的簡(jiǎn)要信息。
當(dāng)要求LLM列出可用型號(hào)時(shí)顯示。
要將查詢發(fā)送到本地LLM,語(yǔ)法如下:
llm -m the-model-name "Your query"
如何選擇正確的模型?可以前往?GPT4All主頁(yè)?并向下滾動(dòng)到與GPT4All兼容的模型的模型資源管理器。falcon-q4_0選項(xiàng)是一款評(píng)級(jí)較高的相對(duì)較小的型號(hào),具有允許商業(yè)使用的許可證,所以我從那里開(kāi)始。
然后,我問(wèn)了它一個(gè)類似于ChatGPT的問(wèn)題,但沒(méi)有發(fā)出單獨(dú)的命令下載模型:
llm -m ggml-model-gpt4all-falcon-q4_0 "Tell me a joke about computer programming"
這是LLM用戶體驗(yàn)如此優(yōu)雅的一點(diǎn):如果本地系統(tǒng)上不存在GPT4All模型,LLM工具會(huì)在運(yùn)行查詢之前自動(dòng)為下載它。下載模型時(shí),將在終端中看到進(jìn)度條。
LLM自動(dòng)下載了我在查詢中使用的模型
這里有一個(gè)笑話:“程序員為什么關(guān)掉電腦?因?yàn)樗肟纯此欠襁€在工作!”——但事實(shí)上,這個(gè)查詢確實(shí)起了作用。如果結(jié)果令人失望,那是因?yàn)槟P托阅芑蛴脩籼崾静蛔?,而不是LLM工具。
還可以為L(zhǎng)LM中的模型設(shè)置別名,以便可以使用較短的名稱來(lái)引用它們:
llm aliases set falcon ggml-model-gpt4all-falcon-q4_0
要查看所有可用的別名,請(qǐng)輸入:llm aliases。
這個(gè)?Meta的Llama模型的LLM插件?需要比GPT4All多一點(diǎn)的設(shè)置。閱讀上的詳細(xì)信息?LLM插件的GitHub回購(gòu)。請(qǐng)注意,通用llama-2-7b-chat確實(shí)設(shè)法在我的工作Mac上運(yùn)行了M1 Pro芯片,只有16GB的RAM。與為沒(méi)有GPU的小型機(jī)器優(yōu)化的GPT4All型號(hào)相比,它運(yùn)行得相當(dāng)慢,在我更健壯的家用電腦上表現(xiàn)更好。
LLM還有其他功能,例如argument標(biāo)志,使可以從以前的聊天中繼續(xù),并能夠在Python腳本中使用它。9月初,該應(yīng)用程序獲得了?用于生成文本嵌入的工具,可用于搜索相關(guān)文檔的文本含義的數(shù)字表示??梢栽贚LM網(wǎng)站上看到更多信息。Willison是流行的Python Django框架的聯(lián)合創(chuàng)建者,他希望社區(qū)中的其他人能為L(zhǎng)LM生態(tài)系統(tǒng)貢獻(xiàn)更多插件。
3.桌面上調(diào)用模型:Ollama
Ollama是一種比LLM更容易下載和運(yùn)行模型的方法。然而,該項(xiàng)目?jī)H限于macOS和Linux,直到2月中旬,Windows的預(yù)覽版終于問(wèn)世。我測(cè)試了Mac版本。
通過(guò)點(diǎn)擊安裝是一種優(yōu)雅的體驗(yàn)。盡管Ollama是一個(gè)命令行工具,但只有一個(gè)命令具有以下語(yǔ)法ollama run model-name名稱。與LLM一樣,如果模型還沒(méi)有在的系統(tǒng)上,它將自動(dòng)下載。
可以在上查看可用型號(hào)的列表?https://ollama.ai/library,截至本文撰寫之時(shí),它包括基于Llama的模型的幾個(gè)版本,如通用Llama 2、Code Llama、針對(duì)某些編程任務(wù)進(jìn)行微調(diào)的DeepSE的CodeUp,以及針對(duì)回答醫(yī)學(xué)問(wèn)題進(jìn)行微調(diào)的meddlama2。
這個(gè)?Ollama GitHub repo's README 文件包括一些型號(hào)規(guī)格的有用列表和建議,“你應(yīng)該至少有8GB的RAM來(lái)運(yùn)行3B型號(hào),16GB來(lái)運(yùn)行7B型號(hào),32GB來(lái)運(yùn)行13B型號(hào)。”在我的16GB RAM Mac上,7B Code Llama的性能出奇地快。它將回答有關(guān)的問(wèn)題?bash/zsh?shell命令以及Python和JavaScript等編程語(yǔ)言。
盡管它是家族中最小的模型,但如果不完美地回答了一個(gè)R編碼問(wèn)題,這會(huì)讓一些更大的模型感到困惑,那它還是很好的:“為ggplot2圖寫R代碼,其中的條形圖是鋼藍(lán)色的。”代碼是正確的,只是其中兩行代碼中有兩個(gè)額外的右括號(hào),這很容易在我的IDE中找到。我懷疑更大的Code Llama本可以做得更好。
Ollama還有一些附加功能,例如?LangChain?集成和使用PrivateGPT運(yùn)行的能力,除非檢查?GitHub repo的教程頁(yè)面。
如果你在Mac電腦上,想使用Code Llama,你可以在終端窗口中運(yùn)行它,每次有問(wèn)題時(shí)都會(huì)把它拉出來(lái)。我期待著在我的家用電腦上使用Ollama Windows版本。
4.與自己的文檔聊天:H2OGPT
H2O.ai?一段時(shí)間以來(lái),該公司一直致力于自動(dòng)化機(jī)器學(xué)習(xí),因此很自然地進(jìn)入了聊天LLM領(lǐng)域。它的一些工具最好由熟悉該領(lǐng)域的人使用,但安裝其測(cè)試版本的說(shuō)明?h20GPT?聊天桌面應(yīng)用程序快速而直接,即使對(duì)于機(jī)器學(xué)習(xí)新手來(lái)說(shuō)也是如此。
你可以訪問(wèn)web上的演示版本(顯然不是使用系統(tǒng)本地的LLM),網(wǎng)址:?gpt.h2o.ai。
本地LLaMa模型基于VS代碼文檔回答問(wèn)題
無(wú)需添加自己的文件,就可以將該應(yīng)用程序用作通用聊天機(jī)器人?;蛘?,可以上傳一些文檔并詢問(wèn)有關(guān)這些文件的問(wèn)題。兼容的文件格式包括PDF、Excel、CSV、Word、文本、標(biāo)記等。測(cè)試應(yīng)用程序在我的16GB Mac上運(yùn)行良好,盡管較小型號(hào)的結(jié)果無(wú)法與帶GPT-4的付費(fèi)ChatGPT相比(一如既往,這是型號(hào)的函數(shù),而不是應(yīng)用程序的函數(shù))。H2OGPT UI為知道自己在做什么的用戶提供了一個(gè)專家選項(xiàng)卡,其中包含許多配置選項(xiàng)。這為更有經(jīng)驗(yàn)的用戶提供了嘗試改進(jìn)其結(jié)果的選項(xiàng)。
如果你想對(duì)流程進(jìn)行更多控制,并為更多型號(hào)提供選項(xiàng),請(qǐng)下載完整的應(yīng)用程序。對(duì)于帶有GPU或僅帶有CPU的系統(tǒng),有適用于Windows和macOS的一鍵安裝程序。請(qǐng)注意,我的Windows防病毒軟件對(duì)Windows版本不滿意,因?yàn)樗鼪](méi)有簽名。我熟悉H2O.ai的其他軟件,代碼在GitHub上也有,所以我愿意下載并安裝它。
Rob Mulla,現(xiàn)在在H2O.ai,發(fā)布了一個(gè)?YouTube視頻?關(guān)于在Linux上安裝該應(yīng)用程序。盡管該視頻已經(jīng)發(fā)布了幾個(gè)月,應(yīng)用程序用戶界面似乎也發(fā)生了變化,但該視頻仍然有有用的信息,包括關(guān)于H2O.ai LLM的有用解釋。
5.輕松但緩慢的數(shù)據(jù)聊天:PrivateGPT
PrivateGPT?還設(shè)計(jì)用于讓使用自然語(yǔ)言查詢自己的文檔,并獲得生成的人工智能響應(yīng)。此應(yīng)用程序中的文檔可以包括幾十種不同的格式。README確保數(shù)據(jù)“100%私有,任何時(shí)候都不會(huì)有數(shù)據(jù)離開(kāi)的執(zhí)行環(huán)境??梢栽跊](méi)有互聯(lián)網(wǎng)連接的情況下獲取文檔并提出問(wèn)題!”
PrivateGPT的特點(diǎn)是腳本可以攝取數(shù)據(jù)文件,將其分割成塊,創(chuàng)建“embeddings”(文本含義的數(shù)字表示),并將這些嵌入存儲(chǔ)在本地Chroma矢量存儲(chǔ)中。當(dāng)你提出問(wèn)題時(shí),該應(yīng)用程序會(huì)搜索相關(guān)文檔,并將其發(fā)送給LLM以生成答案。
如果熟悉Python以及如何設(shè)置Python項(xiàng)目,可以克隆完整的PrivateGPT存儲(chǔ)庫(kù)并在本地運(yùn)行它。