GPT4All:本地部署的开源大语言模型

1.  GPT4All简介

1.1 开源项目

GPT4All 是由 Nomic AI 开发的一个开源项目,旨在让用户能够在个人设备上本地运行大型语言模型(LLM),无需依赖云服务。 这一项目自发布以来,已成为 GitHub 上增长最快的开源项目之一,拥有超过 7 万个 GitHub 星标。

1.2 适用场景

使用GPT4All的话有以下优势:

  • 隐私保护:处理敏感数据时,确保信息不外泄。
  • 离线使用:在没有网络连接的环境中使用 AI。
  • 教育与研究:用于教学、研究或学习目的。
  • 定制化需求:根据特定需求定制 AI 模型。

2.  核心特点

2.1. 完全本地运行,无需互联网连接

GPT4All 允许用户在 Windows、macOS 和 Linux 等操作系统上本地运行 LLM。 用户可以下载模型文件(通常为 1GB 至 8GB),并在没有网络连接的情况下使用 AI 聊天。

2.2 支持多种硬件平台

该项目支持多种硬件平台,包括支持 AVX 指令集的 CPU,以及 Apple M 系列芯片、AMD 和 NVIDIA GPU 等。 这使得用户能够在不同的设备上体验本地 LLM。

2.3 隐私优先

GPT4All 强调数据隐私,默认情况下,用户的对话数据不会离开本地设备。 如果用户选择使用远程模型或参与数据共享,系统会明确提示并征得同意。

2.4 丰富的模型支持

GPT4All 支持多种开源模型,包括 LLaMa、Mistral、DeepSeek R1、Nous-Hermes 等。 用户可以根据需求选择不同的模型进行本地部署。详情可以参考链接:https://github.com/nomic-ai/gpt4all/blob/main/gpt4all-chat/metadata/models3.json

2.5 集成本地文档支持

GPT4All 提供 LocalDocs 功能,允许用户将本地文档(如 PDF、TXT、Markdown 等)导入系统,与 AI 进行交互。 这对于处理敏感或私密信息非常有用。

3.  快速上手指南

3.1 下载并安装软件

访问下载适用于您操作系统(Windows、Mac、Linux)的安装包。

3.2 添加模型

启动应用程序后,点击“+ Add Model”按钮,选择并下载您需要的模型。

3.3 开始聊天

下载模型后,进入“Chats”界面,选择已加载的模型,开始与 AI 进行对话。并且还提供上传本地文件资料的功能,实现知识库的搜索。

3.4 使用Python的SDK

3.4.1 大语言模型

GPT4All 提供了 Python SDK,方便开发者将其集成到自己的项目中。 此外,项目采用 MIT 开源许可证,允许用户进行自定义和二次开发。

安装方法:

pip install gpt4all

使用方法:

可以按照官方提供的模板进行使用,如果模型没有提前下载的话,在第一次使用的时候,代码会自动下载模型。

from gpt4all import GPT4All
model = GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf") # downloads / loads a 4.66GB LLM
with model.chat_session():
    print(model.generate("How can I run LLMs efficiently on my laptop?", max_tokens=1024))

如果想要进行流式输出或者一次性输出,可以使用streaming这个参数进行控制,参考代码:

from gpt4all import GPT4All

def output_with_stream_control(prompt: str, model_name: str = "Meta-Llama-3-8B-Instruct.Q4_0.gguf", max_tokens: int = 1024, streaming: bool = False):
    model = GPT4All(model_name)  # 加载指定模型

    # 创建一个对话会话
    with model.chat_session() as session:
        response_buffer = ""

        if streaming:
            # 启用流式输出
            for chunk in model.generate(prompt, max_tokens=max_tokens, streaming=streaming):
                response_buffer += chunk
                print(chunk, end='', flush=True)  # 实时输出生成的文本
            print("\n\n生成的完整答案:", response_buffer)
        else:
            # 批量输出(等待完整生成后返回)
            response_buffer = model.generate(prompt, max_tokens=max_tokens, streaming=streaming)
            print("\n生成的完整答案:", response_buffer)

        return response_buffer

if __name__ == "__main__":
    prompt = "用中文回答,什么是化学?"
    result = output_with_stream_control(prompt, streaming=False)
    print('result:', result)

模型的选择范围很多,当前支持的部分模型可以参考表格:

GPT4All model nameFilesizeRAM RequiredParametersQuantizationDeveloperLicenseMD5 Sum (Unique Hash)
Meta-Llama-3-8B-Instruct.Q4_0.gguf4.66 GB8 GB8 Billionq4_0MetaLlama 3 Licensec87ad09e1e4c8f9c35a5fcef52b6f1c9
Nous-Hermes-2-Mistral-7B-DPO.Q4_0.gguf4.11 GB8 GB7 Billionq4_0Mistral & Nous ResearchApache 2.0Coa5f6b4eabd3992da4d7fb7f020f921eb
Phi-3-mini-4k-instruct.Q4_0.gguf2.18 GB4 GB3.8 billionq4_0MicrosoftMITf8347badde9bfc2efbe89124d78ddaf5
orca-mini-3b-gguf2-q4_0.gguf1.98 GB4 GB3 billionq4_0MicrosoftCC-BY-NC-SA-4.00e769317b90ac30d6e09486d61fefa26
gpt4all-13b-snoozy-q4_0.gguf7.37 GB16 GB13 billionq4_0Nomic AIGPL40388eb2f8d16bb5d08c96fdfaac6b2c

同时,SDK的所有参数可以参考链接:https://docs.gpt4all.io/gpt4all_python/ref.html#gpt4all.gpt4all.GPT4All.list_models

3.4.2 嵌入模型

除了大语言模型之外,它还提供三种嵌入模型,其本地调用的使用案例如下所示:

from nomic import embed
embeddings = embed.text(["String 1", "String 2"], inference_mode="local")['embeddings']
print("Number of embeddings created:", len(embeddings))
print("Number of dimensions per embedding:", len(embeddings[0]))

其嵌入模型有三个:

NameUsing with nomicEmbed4All model nameContext LengthEmbedding DimensionsFile Size
Nomic Embed v1embed.text(strings, model=”nomic-embed-text-v1″, inference_mode=”local”)Embed4All(“nomic-embed-text-v1.f16.gguf”)2048768262 MiB
Nomic Embed v1.5embed.text(strings, model=”nomic-embed-text-v1.5″, inference_mode=”local”)Embed4All(“nomic-embed-text-v1.5.f16.gguf”)204864-768262 MiB
SBertn/aEmbed4All(“all-MiniLM-L6-v2.gguf2.f16.gguf”)51238444 MiB

4.  参考资料:

  1. GPT4All的GitHub地址:https://github.com/nomic-ai/gpt4all
  2. GPT4All的文档:https://docs.gpt4all.io/
  3. nomic的官网:https://www.nomic.ai/
  4. 模型的选择范围:https://github.com/nomic-ai/gpt4all/blob/main/gpt4all-chat/metadata/models3.json

Leave a comment