從 GPT4All 體驗 LLM
推薦:使用NSDT場景編輯器助你快速搭建可編輯的3D應用場景什么是 GPT4All?
術語“GPT”源自 Radford 等人 2018 年論文的標題“通過生成預訓練提高語言理解”。本文描述了如何證明變壓器模型能夠理解人類語言。
從那時起,許多人嘗試使用轉換器架構開發語言模型,并且已經發現足夠大的模型可以給出出色的結果。但是,開發的許多模型都是專有的。有付費訂閱的服務或具有某些限制條款的許可證。由于尺寸的原因,有些甚至無法在商用硬件上運行。
GPT4All項目試圖在通用硬件上向公眾提供LLM。它允許你訓練和部署模型。還提供預訓練模型,其尺寸較小,可以在 CPU 上合理運行。
如何獲取 GPT4All讓我們只關注使用預先訓練的模型。
在撰寫本文時,GPT4All 可從 https://gpt4all.io/index.html 獲得,您可以將其作為桌面應用程序或使用 Python 庫運行。您可以下載操作系統的安裝程序以運行桌面客戶端。客戶端只有幾百MB。您應該會看到一個安裝屏幕,如下所示:
安裝客戶端后,首次啟動它將提示您安裝模型,該模型可以大至數 GB。首先,您可以選擇“”(GPT4All-J 型號)。這是一個相對較小但流行的模型。gpt4all-j-v1.3-groovy
客戶端和模型準備就緒后,您可以在輸入框中鍵入消息。該模型可能期望特定形式的輸入,例如,特定的語言或樣式。該模型需要對話風格(如 ChatGPT),并且通常可以很好地處理英語。例如,下面是它如何響應輸入“給我 10 種顏色及其 RGB 代碼的列表”:
GPT4All 的關鍵組件是模型。桌面客戶端只是它的接口。除了客戶端,您還可以通過 Python 庫調用模型。
不出所料,該庫被命名為“”,“,您可以使用以下命令安裝它:gpt4allpip
1 | pip install gpt4all |
之后,您只需幾行代碼即可在 Python 中使用它:
1 2 3 4 5 6 | import gpt4all gptj = gpt4all.GPT4All("ggml-gpt4all-j-v1.3-groovy") messages = [{"role": "user", "content": "Give me a list of 10 colors and their RGB code"}] ret = gptj.chat_completion(messages) print(ret) |
運行上述代碼將下載模型文件(如果尚未下載)。之后,加載模型,提供輸入,并將響應作為 Python 字典返回,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | {'model': 'ggml-gpt4all-j-v1.3-groovy', 'usage': {'prompt_tokens': 272, 'completion_tokens': 301, 'total_tokens': 573}, 'choices': [ {'message': {'role': 'assistant', 'content': ' Here is a list of 10 colors and their RGB code:Red (255, 0, 0) Green (0, 255, 0) Blue (0, 0, 255) Yellow (255, 255, 0) Orange (255, 127, 0) Purple (0, 128, 255) Pink (255, 192, 203) Blue-Green (0, 0, 255) Green-Blue (0, 0, 255) Blue-Purple (0, 0, 255) Blue-Green (0, 0, 255) Blue-Purple (0, 0' } } ] } |
上面的示例使用輸入作為一個字典的列表。更復雜的輸入是許多字典的列表,每個字典都包含鍵和 .可以是 、 或 ,而 是文本字符串。如果您使用的是 GPT4All-J 模型(如示例所示),則您的角色是在計算機 .輸入應該是這兩方之間的一系列對話。以下是逐步構建對話的方法:rolecontentrole"system""assistant""user"content"user""assistant"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import json import gpt4all gptj = gpt4all.GPT4All("ggml-gpt4all-j-v1.3-groovy") messages = [{"role": "user", "content": "Can you explain what is a large language model?"}] ret = gptj.chat_completion(messages) messages.append(ret["choices"][0]["message"]) messages.append({"role": "user", "content": "Can you give some examples applications?"}) ret = gptj.chat_completion(messages) messages.append(ret["choices"][0]["message"]) messages.append({"role": "user", "content": "Are there any limitations?"}) ret = gptj.chat_completion(messages) 消息。append(ret[“choices”][0][“message”]) 消息。append({“role”: “user”, “content”: “用兩句話總結上述內容。}) RET = GPTJ。chat_completion(消息) 打印(JSON.轉儲(消息,縮進 = 4)) 打印(JSON.轉儲(ret, 縮進=4)) |
請注意,您多次調用了該模型。每次它響應時,您都會獲取輸出并將其附加到消息列表中,以便累積上下文。然后,添加新對話框并再次調用該模型。您需要收集消息,因為每次調用模型時,它都會在不知道上一個對話的情況下重新開始。因此,您的工作是保留歷史記錄以提醒模型其先前的反應。
下面是上述代碼輸出的示例,其中打印了模型的最后一個輸入消息及其響應。您可能會從另一個模型中獲得更好的結果。由于模型中的隨機性,您還可能會得到不同的結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | [ { “角色”: “用戶”, “內容”:“你能解釋一下什么是大型語言模型嗎? }, { “角色”: “助理”, “內容”:“大型語言模型是一種可以處理和理解自然語言(如語音或文本)的人工智能。它經過大量數據的訓練,可以執行語言翻譯、情感分析甚至回答問題等任務。大型語言模型在包括金融和醫療保健在內的各個行業中越來越受歡迎。 }, { “角色”: “用戶”, “內容”: “你能舉一些例子嗎? }, { “角色”: “助理”, “內容”: “ 大型語言模型被用于各種應用,例如:- 語言翻譯和機器翻譯,其中大型語言模型在大量數據上進行訓練以提高準確性和速度.- 情感分析,其中大型語言模型被訓練以分析社交媒體數據并識別用戶意見中的模式.- 問答, 其中大型語言模型被訓練以基于大量數據來回答問題.- 醫療保健,其中大型語言模型用于分析患者數據并識別健康趨勢中的模式.- 金融,其中大型語言模型用于分析財務數據并識別模式” }, { “角色”: “用戶”, “內容”:“有什么限制嗎? }, { “角色”: “助理”, “內容”:“是的,大型語言模型有一些限制。主要挑戰之一是它們需要大量數據來訓練,這可能既昂貴又耗時。此外,大型語言模型的計算成本可能很高,并且可能需要專門的硬件才能運行。另一個限制是大型語言模型可能無法理解人類語言的細微差別,這可能會使它們在某些情況下效率降低。最后,大型語言模型可能無法理解對話或文本的上下文,這可能會使它們在某些應用程序中的效果降低。 }, { “角色”: “用戶”, “內容”:“用兩句話概括以上內容。 } ] { “model”: “ggml-gpt4all-j-v1.3-groovy”, “用法”:{ “prompt_tokens”:2113, “completion_tokens”:542, “total_tokens”:2655 }, “選擇”:[ { “消息”:{ “角色”: “助理”, “內容”:“大型語言模型是一種可以處理和理解自然語言(如語音或文本)的人工智能。他們接受過大量數據的培訓,可以執行語言翻譯、情感分析甚至回答問題等任務。它們在金融和醫療保健等各個行業越來越受歡迎。然而,存在一些限制,例如昂貴的數據和專用硬件,計算費用,缺乏對人類語言和上下文細微差別的理解。 } } ] } |
GPT4All 是一個不錯的工具,您可以在計算機上使用。它允許您探索與大型語言模型的交互,并幫助您更好地了解模型的功能和限制。在這篇文章中,您了解到:
GPT4All 有一個桌面客戶端,您可以將其安裝在計算機上
GPT4All有一個Python接口,允許您在代碼中與語言模型進行交互
有多種語言模型可用
原文鏈接:從 GPT4All 體驗 LLM (mvrlink.com)
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。