一、相关项目汇总
简单罗列下ChatGPT的平替开源项目(更多信息可到https://github.com/nichtdax/awesome-totally-open-chatgpt),如下:
简单介绍下其中比较出名的项目,
ChatGLM
ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化。该模型基于 General Language Model (GLM) 架构,具有 62 亿参数。
和OpenAI烧了十几万张A100显卡相比,ChatGLM结合模型量化技术,用户可以在消费级的显卡上进行本地部署,INT4 量化级别下最低只需 6GB 显存!
开源地址:https://github.com/THUDM/ChatGLM-6B
Alpaca
为了提高LLaMA 模型性能,来自斯坦福的研究者帮助其完成了指令微调的工作,基于 LLaMA 7B训练了一个 70 亿参数新模型--Alpaca。
实验结果表明,Alpaca 的很多行为都与 text-davinci-003 类似。也就是说,只有 7B 参数的轻量级模型 Alpaca 性能可媲美 GPT-3.5 这样的超大规模语言模型。
alpaca相关项目如下:
- 项目地址:https://github.com/tatsu-lab/stanford_alpaca 算力需求:相对较高(8 个 80GB A100 上微调了 3 个小时)
- 项目地址:https://github.com/tloen/alpaca-lora 使用 LoRA技术;算力需求:只需消费级显卡
- 项目地址:https://github.com/LC1332/Chinese-alpaca-lora 中文语言模型;算力需求:只需消费级显卡
即便上述的模型效果已经很不错,但这些大模型项目对硬件要求并不(足够)低..,再者有些配置相当复杂。
几经周折,我找到了能在笔记本上面就能运行的GPT模型--GPT4ALL
二、GPT4ALL介绍及配置
GPT4All,也是一种基于 LLaMA-7B 语言模型(如下论文)。它基于从公开可用的数据源收集各种问题和提示的样本,然后将它们交给ChatGPT(更具体地说是GPT-3.5-Turbo)生成806,199个高质量提示生成对。接下来,编辑数据并删除低多样性回答,确保数据涵盖各种主题。以此训练数据,他们发现他们的模型比同类型的模型表现更好。
项目地址:https://github.com/nomic-ai/gpt4all
GPT4All,按照官网配置只要3步!
1、下载gpt4all-lora-quantized.bin文件, 大小4GB ,地址:https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin
2、下载项目文件,地址:https://github.com/nomic-ai/gpt4all,将上面的文件放入chat文件夹。(如果网络速度不佳,可以weixin关注“算法进阶”后台回复“GPT”,获取完整gpt4all项目及模型文件。)
3、打开电脑终端,运行如下命令。切换到chat目录,运行程序聊天
如下,开始在windows上面运行gpt4all聊天,在小破笔记本上面运行还是不卡的,
需要注意的是,模型不支持中文对话,中文的理解能力很有限,此外还是容易犯一些理解性的错误。
代码生成的功能,问了几次如何用python倒排字符串,可以发现有些小错误,但回答提出的方法还是比较全面的。
训练模型
此外,还可以通过如下步骤重新训练模型,
Setup
Clone the repo
git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git
git submodule configure && git submodule update
配置环境
python -m pip install -r requirements.txt
cd transformers
pip install -e .
cd ../peft
pip install -e .
Training
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-7b.yaml
Generate
python generate.py --config configs/generate/generate.yaml --prompt "Write a script to reverse a string in Python"