在本文中,我们将解释开源 ChatGPT 模型的工作原理以及如何运行它们。我们将涵盖十三种不同的开源模型,即LLaMA,Alpaca,GPT4All,GPT4All-J,Dolly 2,Cerebras-GPT,GPT-J 6B,Vicuna,Alpaca GPT-4,OpenChatKit,ChatRWKV,Flan-T5和OPT。在本文结束时,您应该对这些模型有很好的了解,并且应该能够在 Python 中运行它们。

ChatGPT不是开源的。它最近有两个流行的版本GPT-3.5和GPT-4。GPT-4 比 GPT-3.5 有重大改进,并且在产生响应方面更准确。ChatGPT 不允许您查看或修改源代码,因为它不是公开可用的。因此,需要开源且免费提供的模型。通过使用这些开源模型,您无需为 OpenAI API 付费即可访问它们。

开源 ChatGPT 模型的优势

使用开源大型语言模型有很多好处,这些模型是 ChatGPT 的替代品。下面列出了其中一些。

  1. 数据隐私:许多公司都希望控制数据。这对他们来说很重要,因为他们不希望任何第三方访问他们的数据。
  2. 定制:它允许开发人员使用自己的数据训练大型语言模型,如果他们想应用某些主题,可以对某些主题进行一些过滤
  3. 经济实惠:开源 GPT 模型可让您训练复杂的大型语言模型,而无需担心昂贵的硬件。
  4. 人工智能民主化:它为进一步的研究开辟了空间,可用于解决现实世界的问题。

LLaMA

简介 : LLaMA

LLaMA 代表 大型语言模型元 AI。它包括从 7 亿到 65 亿个参数的一系列模型大小。Meta AI 研究人员专注于通过增加训练数据量而不是参数数量来扩展模型的性能。他们声称 13 亿个参数模型的性能优于 GPT-175 模型的 3 亿个参数。它使用转换器架构,并通过网络抓取维基百科,GitHub,Stack Exchange,古腾堡项目的书籍,ArXiv上的科学论文提取了1.4万亿个代币。

Python Code : LLaMA

# Install Package
pip install llama-cpp-python

from llama_cpp import Llama
llm = Llama(model_path="./models/7B/ggml-model.bin")
output = llm("Q: Name the planets in the solar system? A: ", max_tokens=128, stop=["Q:", "\n"], echo=True)
print(output)
在模型路径中,您需要具有 GGML 格式的 LLaMA 权重,然后将其存储到模型文件夹中。你可以在拥抱脸网站上搜索它。在此处查看其中之一

Alpaca

简介 : Alpaca

斯坦福大学的一组研究人员开发了一种名为 .它基于元维基的大规模语言模型。该团队使用OpenAI的GPT API(text-davinci-003)来微调LLaMA 7亿(7B)参数大小的模型。该团队的目标是让每个人都能免费获得人工智能,以便院士可以进行进一步的研究,而不必担心执行这些内存密集型算法的昂贵硬件。尽管这些开源模型不可用于商业用途,但小型企业仍然可以利用它来构建自己的聊天机器人。AlpacaLLaMA

Alpaca如何工作

斯坦福大学团队从LLaMA模型中最小的语言模型开始研究,即LLaMA 7B模型,并用1万亿个代币对其进行预训练。他们从自指令种子集中的 175 个人类编写的指令输出对开始。然后,他们使用OpenAI API要求ChatGPT使用种子集生成更多指令。它将获得大约52,000个样本对话,该团队使用这些样本来使用Hugging Face的训练框架进一步微调LLaMA模型。

 

LLaMA 有多种尺寸 - 7B、13B、30B 和 65B 参数。Alpaca也扩展到13B,30B和65B型号。

性能 : Alpaca

Alpaca 模型在电子邮件创建、社交媒体和生产力工具等任务中与 ChatGPT 进行了测试,Alpaca 赢了 90 次,而 ChatGPT 赢了 89 次。该模型可以在现实世界中用于各种目的。这将对研究人员进行道德人工智能和网络安全活动(如检测诈骗和网络钓鱼)有很大帮助。

限制:Alpaca

与ChatGPT的商业版本一样,Alpaca也有类似的局限性,即遭受幻觉,毒性和刻板印象。换言之,它可以用来生成文本,向社会弱势群体传播错误信息、种族主义和仇恨。

内存要求 : Alpaca

它不能在CPU上运行,需要GPU。对于 7B 和 13B 型号,它需要一个具有 12GB RAM 的 GPU。对于 30B 型号,您需要更多系统资源。

Python代码:Alpaca

我已经创建了Colab代码。您可以使用它作为参考。由于我使用的是 Colab 的免费版本,因此我运行的是最小的型号 7B。您可以将其更改为 13B 和 30B。

与 ChatGPT 的商业界面类似,代码的输出会在 Gradio 中创建 Web 界面。此外,您可以将此界面用于演示目的并与同事或客户共享。

使用 Python 3.9 创建环境
import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")

以下命令是用于显示有关 GPU 使用情况和性能的信息的命令。nvidia-smi

!nvidia-smi
下载 Git 存储库
!git clone https://github.com/deepanshu88/Alpaca-LoRA-Serve.git
安装所需的软件包
%cd Alpaca-LoRA-Serve
!python3.9 -m pip install -r requirements.txt
选择模型的大小
base_model = 'decapoda-research/llama-7b-hf'
finetuned_model = 'tloen/alpaca-lora-7b'
运行应用程序
!python3.9 app.py --base_url $base_model --ft_ckpt_url $finetuned_model --share
完整代码
import sys
sys.path.append("/usr/local/lib/python3.9/site-packages")

!nvidia-smi
!git clone https://github.com/deepanshu88/Alpaca-LoRA-Serve.git
  
%cd Alpaca-LoRA-Serve
!python3.9 -m pip install -r requirements.txt
  
base_model = 'decapoda-research/llama-7b-hf'
finetuned_model = 'tloen/alpaca-lora-7b'

!python3.9 app.py --base_url $base_model --ft_ckpt_url $finetuned_model --share

上面的代码支持比 7B 更大的语言模型。请参阅下面的参考资料。7B和13B可以在colab的免费版本中使用。对于30B,您需要购买高级版的colab。

可能的值为--base_url

  
- decapoda-research/llama-7b-hf
- decapoda-research/llama-13b-hf
- decapoda-research/llama-30b-hf

可能的值为--ft_ckpt_url

  
- tloen/alpaca-lora-7b
- chansung/alpaca-lora-13b
- chansung/alpaca-lora-30b

输出 : Alpaca

请参阅下面的输出,其中我问了两个相对两个相对简单的问题。一个与通用主题有关,另一个与编码有关。它正确地回答了这两个问题。


GPT4All

简介 : GPT4All

Nomic AI 团队从 Alpaca 中汲取灵感,使用 GPT-3.5-Turbo OpenAI API 收集了大约 800,000 个提示响应对,以创建 430,000 个助理式提示和世代的训练对,包括代码、对话和叙述。800K对大约是Alpaca的16倍。该模型最好的部分是它可以在CPU上运行,不需要GPU。像Alpaca一样,它也是一个开源,可以帮助个人进行进一步的研究,而无需花费商业解决方案。

GPT4All 如何工作

它的工作原理类似于Alpaca,并基于LLaMA 7B模型。该团队对LLaMA 7B的模型进行了微调,最终模型在437,605个后处理助手式提示上进行了训练。

性能 : GPT4All

在自然语言处理中,困惑用于评估语言模型的质量。它根据其训练数据衡量语言模型看到以前从未遇到过的新单词序列的惊讶程度。较低的困惑度值表示语言模型更擅长预测序列中的下一个单词,因此更准确。Nomic AI团队声称他们的模型比Alpaca具有更低的困惑度。真正的准确性取决于您的提示类型。在某些情况下,Alpaca可能具有更好的准确性。

内存要求 : GPT4All

它可以在具有8GB RAM的CPU上运行。如果您有一台具有4GB RAM的笔记本电脑,可能是时候升级到至少8G

Python 代码 : GPT4All

Colab 代码可供您使用。您可以将其用作参考,根据需要对其进行修改,甚至可以按原样运行。完全由您决定如何使用代码来最好地满足您的要求。

克隆 Git 存储库
!git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git
安装所需的软件包
cd /content/gpt4all
!python -m pip install -r requirements.txt

cd transformers
!pip install -e .

cd ../peft
!pip install -e .
训练
!accelerate launch --dynamo_backend=inductor --num_processes=8 --num_machines=1 --machine_rank=0 --deepspeed_multinode_launcher standard --mixed_precision=bf16  --use_deepspeed --deepspeed_config_file=configs/deepspeed/ds_config.json train.py --config configs/train/finetune.yaml
下载 CPU 量化 gpt4all 模型检查点
cd /content/gpt4all/chat
!wget https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin
运行会话系统
!./gpt4all-lora-quantized-linux-x86

如果您在运行在 linux 以外的任何其他操作系统上的本地计算机上运行此功能,请使用以下命令而不是上面的行。

  
Windows (PowerShell): ./gpt4all-lora-quantized-win64.exe
Mac (M1): ./gpt4all-lora-quantized-OSX-m1
Mac (Intel): ./gpt4all-lora-quantized-OSX-intel
完整代码
!git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git

cd /content/gpt4all
!python -m pip install -r requirements.txt

cd transformers
!pip install -e .

cd ../peft
!pip install -e .

!accelerate launch --dynamo_backend=inductor --num_processes=8 --num_machines=1 --machine_rank=0 --deepspeed_multinode_launcher standard --mixed_precision=bf16  --use_deepspeed --deepspeed_config_file=configs/deepspeed/ds_config.json train.py --config configs/train/finetune.yaml

cd /content/gpt4all/chat
!wget https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin

!./gpt4all-lora-quantized-linux-x86

输出 : GPT4All

GPT4All 无法正确回答与编码相关的问题。这只是一个例子,无法根据它判断准确性。它可能在其他提示中运行良好,因此模型的准确性取决于您的使用情况。此外,当我在 2 天后再次运行它时,它适用于与编码相关的问题。他们似乎进一步完善了模型。


错误调试

Distributed package doesn't have NCCL

如果您在 Mac 操作系统上遇到此问题,那是因为您的计算机上未安装 CUDA。

Windows 10/11 上的问题

一些用户报告说他们在Windows平台上遇到了一些奇怪的错误。作为最后的手段,您可以安装适用于Linux的Windows子系统,它允许您在Windows机器上安装Linux发行版,然后可以按照上面的代码进行操作。

GPT4All-J

您一定想知道这个模型除了后缀“J”之外的名称与前一个模型相似。这是因为这两个模型都来自Nomic AI的同一团队。唯一的区别是它现在在 GPT-J 上训练,而不是 LLaMa。在 GPT-J 上训练它的好处是 GPT4All-J 现在是 Apache-2 许可的,这意味着您可以将其用于商业目的,也可以轻松地在您的机器上运行。

下载安装程序文件

根据您的操作系统下载以下安装程序文件。安装完成后,您需要在进行安装的文件夹中导航“bin”目录。要启动 GPT4All 聊天应用程序,请在“bin”文件夹中执行“聊天”文件。该文件将在Linux上命名为“chat”,在Windows上命名为“chat.exe”,在macOS上命名为“chat.app”

  1. 窗户
  2. Linux目录
  3. 苹果操作系统

Dolly 2

Databricks团队基于EleutherAI的Pythia模型创建了大型语言模型,后来他们对大约15,000个记录指令语料库进行了微调。它属于Apache 2许可证,这意味着训练它的模型,训练代码,数据集和模型权重都可以作为开源提供,因此您可以将其用于商业用途来创建自己的自定义大型语言模型。

它有三种尺寸 - 12B、7B 和 3B 参数。

  
databricks/dolly-v2-12b on pythia-12b
databricks/dolly-v2-7b  on pythia-6.9b
databricks/dolly-v2-3b  on pythia-2.8b

内存要求 : Dolly 2

对于具有 10 位量化的 7B 型号,它需要一个具有大约 8GB RAM 的 GPU。对于 12B 型号,它至少需要 18GB GPU vRAM。

Python代码:Dolly2

from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
  
baseModel = "databricks/dolly-v2-12b"
load_8bit = True  
tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-12b")
model = AutoModelForCausalLM.from_pretrained(baseModel, load_in_8bit=load_8bit, torch_dtype=torch.float16, device_map="auto")
generator = pipeline(task='text-generation', model=model, tokenizer=tokenizer)

print(generator("Python code to remove duplicates from dataframe"))

Vicuna

简介 : Vicuma

来自加州大学伯克利分校,CMU,斯坦福大学和加州大学圣地亚哥分校的研究人员团队开发了这个模型。它使用从ShareGPT网站提取的聊天数据集在LLaMA上进行微调。研究人员声称该模型在90%的质量上得分超过OpenAI ChatGPT-4。值得注意的是,它的性能几乎与Bard相当。他们使用了Alpaca的训练计划,并在两个方面进一步改进 - 多轮对话和长序列。

Python代码:Vicuna

您可以参考这篇文章 - LLaMA详细指南来访问python代码和Vicuna模型的详细说明。

Alpaca GPT-4 Model

简介 : Alpaca GPT-4

您已经在本文的上一节中了解了Alpaca。在这里,一些研究人员通过在 GPT-4 数据集上训练它来改进原始的 Alpaca 模型。请记住,斯坦福大学研究人员的原始Alpaca模型是基于GPT-3模型的。此 GPT-4 模型在 LLaMA 13 亿 (13B) 参数大小的模型上进行训练。

Python代码:Alpaca GPT-4

Alpaca GPT-4模型的Python程序在这里解释 - Alpaca GPT-4详细指南

Cerebras-GPT

简介 : Cerebras-GPT

你们中的一些人以前可能没有听说过。他们不像以制造GPU而闻名的NVIDIA那样出名,但他们也是一家专门制造高性能计算系统的技术公司。他们最近发布了包含七个基于 GPT 的语言模型的开源项目,大小分别为 111.256 亿、590.1 亿、3.2 亿、7 亿、6 亿、7 亿和 13 亿个参数。Cerebras Systems

这些模型最好的部分是它们是免费提供的,并且可以将其用于商业目的,因为它属于Apache 2.0许可证,而LLaMA带有“非商业”许可证,这意味着它们是免费的,但只能用于研究目的。

此外,它们还有 7 种不同尺寸的型号可供选择,这意味着您可以根据硬件配置选择很多型号。如果您的硬件不允许试验大型模型,请选择较小的模型。

内存要求 : Cerebras-GPT

它需要具有 12GB RAM 的 GPU 来运行 1.3B 参数大小的 Cerebras-GPT 模型。

Python 代码:Cerebras-GPT

在下面的程序中,我们使用由随机公司团队开发的python包。它允许开发人员有效地微调不同的大型语言模型。它们还使语法非常易读且易于理解。xTuring

在这里,我们使用Alpaca dataset

可以参考此 Colab 代码进行测试。在下面的代码中,我们使用Cerebras-GPT 1.3B模型

安装xturing
!pip install xturing --upgrade
生成数据集
!wget https://d33tr4pxdm6e2j.cloudfront.net/public_content/tutorials/datasets/alpaca_data.zip
!unzip alpaca_data.zip
加载数据集并初始化模型
from xturing.datasets.instruction_dataset import InstructionDataset
from xturing.models.base import BaseModel

instruction_dataset = InstructionDataset("/content/alpaca_data")
# Initializes the model
model = BaseModel.create("cerebras_lora_int8")
微调模型
model.finetune(dataset=instruction_dataset)
构建聊天机器人
output = model.generate(texts=["prime minister of India?"])
print("Generated output by the model: {}".format(output))
微调模型需要大量的处理时间,因此必须非常耐心。微调完成后,您可以保存模型以供将来参考。
# Save Model
model.save("/path_directory")

# Load a fine-tuned model
finetuned_model = BaseModel.load("/path_directory")

In case the loading model returns error AssertionError: We were not able to find the xturing.json file in this directory, use the code below.
model = BaseModel.create("cerebras",weights_path="/path_directory")

GPT-J 6B

简介 : GPT-J 6B

GPT-J 6B由EleutherAI的研究人员开发。这不是一个新模型,因为它是在 2021 年下半年发布的。它有 6 亿个参数。它没有 Meta 的 LLaMA 那么大,但它在各种自然语言处理任务(如聊天、摘要和问答)上表现良好。模型尺寸大并不一定意味着更准确。它在 TPU v402-3 Pod 上训练了 256 亿个代币。

与 Cerebras-GPT 一样,GPT-J 6B 也根据 Apache 2.0 许可证获得许可,该许可证允许您将其用于商业目的。

Python代码:GPT-J 6B

您可以参考 colab 笔记本进行尝试。

GPT-J 6B 的 Python 代码类似于 Cerebras-GPT 的代码。唯一的变化是初始化基本模型,而不是BaseModel.create("gptj_lora_int8")BaseModel.create("cerebras_lora_int8")

OpenChatKit Model

简介 : OpenChatKit

OpenChatKit是一个用于创建聊天机器人的开源大型语言模型,由Together开发。他们与LAION和Ontocord合作创建了训练数据集。它采用 Apache-2.0 许可证,可以完全访问源代码、模型权重和训练数据集。该项目的目的是促进开源基础模型的包容性、透明度和健壮性。它擅长执行各种任务,包括上下文中的摘要和问答,信息提取和文本分类。

它有 20 亿个参数在 43 万个指令大小的训练数据集上训练。它被称为它还有一个基于ElutherAI的Pythia-7B模型的模型,称为7B参数语言模型。GPT-NeoXT-Chat-Base-20BPythia-Chat-Base-7B

演示 : OpenChatKit

您可以在Hugging Face网站上查看该模型的演示

内存要求 : OpenChatKit

Pythia-Chat-Base-7B可以在具有12GB RAM的单个GPU上运行。

Python 代码:Pythia-chat-base-7B

您可以将 colab notebook 用于 Pythia-Chat-Base-7B

# GPU Configuration
!nvidia-smi

# Install conda
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && chmod +x Miniconda3-latest-Linux-x86_64.sh && ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local

# Setting up conda environment
!conda install mamba -n base -c conda-forge -y

!git clone https://github.com/orangetin/OpenChatKit.git --branch colab-example && cd OpenChatKit && mamba env create -f environment.yml
!source activate OpenChatKit && pip install bitsandbytes

# Download and run model
!source activate OpenChatKit && python OpenChatKit/inference/bot.py --model togethercomputer/Pythia-Chat-Base-7B --load-in-8bit

ChatRWKV

简介 : ChatRWKV

ChatRWKV由RWKV(100%RNN)语言模型提供支持,这是唯一可以在质量和缩放方面与变压器相匹配的RNN,同时速度更快并节省VRAM。该模型在 Alpaca,代码Alpaca数据集上进行了微调。

演示 : ChatRWKV

该模型的演示可在拥抱脸网站上找到

Python 代码 : ChatRWKV

您可以使用 github 上可用的代码构建 Web 界面

弗兰-T5

谷歌发布了开源LLM模型Flan-T5。它是多语言的,并使用指令微调来提高预训练语言模型的性能和可用性。它是 T5 的一种变体,在许多自然语言处理任务中可以更好地概括并优于 T5。

选择

OPT是Meta在LLaMA之前发布的语言模型。当LLaMA发布时,它的表现优于OPT.OPT是一个现在不应该考虑的模型,因为市场上已经有许多更好的开源模型,如上所示。

GPT 模型的比较

Alpaca GPT-4 和LLaMA模型是所有开源模型中最准确、最一致的模型。如果您可以使用高功率机器,则建议使用这两种型号。在内存要求方面,GPT4ALL 不需要昂贵的硬件,可以在具有 8GB RAM 的 CPU 上运行。如果您有预算/低端机器,那就去吧。它在准确性方面也不妥协。如果您想将该模型用于商业目的,请选择GPT4All-J,Dolly 2,OpenChatKit,Cerebras-GPT和GPT-J 6B。它们允许您分发软件以供商业使用。