gpt4all: an ecosystem of open-source chatbots trained on a massive collections of clean assistant data including code, stories and dialogue
Go to file
2023-05-05 17:20:49 +00:00
chat Merge branch 'main' into chat-windows-binary 2023-03-29 10:35:31 -04:00
configs feat: pythia 12b train 2023-05-05 17:20:49 +00:00
eval_data started eval script and added eval data 2023-03-27 21:50:08 +00:00
figs feat: wip training log 2023-04-13 18:41:39 +00:00
peft@098962fa65 chore: peft 2023-04-12 03:50:54 +00:00
.gitignore chore: ignore index related stuff 2023-05-05 01:43:20 +00:00
.gitmodules chore: remove transformers submodule 2023-04-13 20:30:01 +00:00
build_map.py fix: rename 2023-04-13 20:58:27 +00:00
clean.py fix: clean where prompt is randomly 1 char 2023-04-04 20:47:21 +00:00
create_hostname.sh feat: multinode setup 2023-04-05 02:53:04 +00:00
data.py feat: pythia 12b train 2023-05-05 17:20:49 +00:00
env.yaml feat: env for conda, pip 2023-03-25 16:16:40 +00:00
eval_figures.py feat: evals on new gptj models 2023-04-10 02:14:20 +00:00
eval_self_instruct.py feat: evals on new gptj models 2023-04-10 02:14:20 +00:00
generate.py metrics run on configs now 2023-03-28 00:09:47 +00:00
gpt4all-lora-demo.gif GIF 2023-03-28 15:54:44 -04:00
GPT-J_MAP.md fix: rename 2023-04-13 20:58:27 +00:00
inference.py fix: embeddings instead of logits!!! 2023-04-08 17:05:40 +00:00
launcher.sh Merge: main into gptj 2023-04-13 15:16:31 +00:00
LICENSE.txt Merge: main into gptj 2023-04-13 15:16:31 +00:00
read.py feat: train and clean data 2023-03-25 16:17:48 +00:00
README.md Update README.md 2023-04-30 01:07:14 +03:00
requirements.txt chore: remove transformers submodule 2023-04-13 20:30:01 +00:00
train.py fix: num training steps for lr decay 2023-04-10 02:15:31 +00:00
TRAINING_LOG.md fix: format 2023-04-13 20:30:45 +00:00

GPT4All

Demo, data, and code to train open-source assistant-style large language model based on GPT-J and LLaMa

📗 Technical Report 2: GPT4All-J

📗 Technical Report 1: GPT4All

🐍 Official Python Bindings

💻 Official Typescript Bindings

💬 Official Web Chat Interface

💬 Official Chat Interface

🦜🔗 Official Langchain Backend

Discord

GPT4All is made possible by our compute partner Paperspace.

GPT4All-J: An Apache-2 Licensed GPT4All Model

gpt4all-j-demo

Run on an M1 Mac (not sped up!)

GPT4All-J Chat UI Installers

Installs a native chat-client with auto-update functionality that runs on your desktop with the GPT4All-J model baked into it.

Mac/OSX

Windows

Ubuntu

If you have older hardware that only supports avx and not avx2 you can use these.

Mac/OSX - avx-only

Windows - avx-only

Ubuntu - avx-only

These files are not yet cert signed by Windows/Apple so you will see security warnings on initial installation. We did not want to delay release while waiting for their process to complete.

Find the most up-to-date information on the GPT4All Website

Raw Model

ggml Model Download Link

Note this model is only compatible with the C++ bindings found here. It will not work with any existing llama.cpp bindings as we had to do a large fork of llama.cpp. GPT4All will support the ecosystem around this new C++ backend going forward.

Python bindings are imminent and will be integrated into this repository. Stay tuned on the GPT4All discord for updates.

Training GPT4All-J

Please see GPT4All-J Technical Report for details.

GPT4All-J Training Data

We have released updated versions of our GPT4All-J model and training data.

  • v1.0: The original model trained on the v1.0 dataset
  • v1.1-breezy: Trained on a filtered dataset where we removed all instances of AI language model
  • v1.2-jazzy: Trained on a filtered dataset where we also removed instances like I'm sorry, I can't answer... and AI language model

The models and data versions can be specified by passing a revision argument.

For example, to load the v1.2-jazzy model and dataset, run:

from datasets import load_dataset
from transformers import AutoModelForCausalLM

dataset = load_dataset("nomic-ai/gpt4all-j-prompt-generations", revision="v1.2-jazzy")
model = AutoModelForCausalLM.from_pretrained("nomic-ai/gpt4all-j-prompt-generations", revision="v1.2-jazzy")

GPT4All-J Training Instructions

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_gptj.json train.py --config configs/train/finetune_gptj.yaml

Original GPT4All Model (based on GPL Licensed LLaMa)

gpt4all-lora-demo

Run on M1 Mac (not sped up!)

Try it yourself

Here's how to get started with the CPU quantized GPT4All model checkpoint:

  1. Download the gpt4all-lora-quantized.bin file from Direct Link or [Torrent-Magnet].
  2. Clone this repository, navigate to chat, and place the downloaded file there.
  3. Run the appropriate command for your OS:
    • M1 Mac/OSX: cd chat;./gpt4all-lora-quantized-OSX-m1
    • Linux: cd chat;./gpt4all-lora-quantized-linux-x86
    • Windows (PowerShell): cd chat;./gpt4all-lora-quantized-win64.exe
    • Intel Mac/OSX: cd chat;./gpt4all-lora-quantized-OSX-intel

For custom hardware compilation, see our llama.cpp fork.


Find all compatible models in the GPT4All Ecosystem section.

Secret Unfiltered Checkpoint - [Torrent]

This model had all refusal to answer responses removed from training. Try it with:

  • M1 Mac/OSX: cd chat;./gpt4all-lora-quantized-OSX-m1 -m gpt4all-lora-unfiltered-quantized.bin
  • Linux: cd chat;./gpt4all-lora-quantized-linux-x86 -m gpt4all-lora-unfiltered-quantized.bin
  • Windows (PowerShell): cd chat;./gpt4all-lora-quantized-win64.exe -m gpt4all-lora-unfiltered-quantized.bin
  • Intel Mac/OSX: cd chat;./gpt4all-lora-quantized-OSX-intel -m gpt4all-lora-unfiltered-quantized.bin

Note: the full model on GPU (16GB of RAM required) performs much better in our qualitative evaluations.

Python Client

CPU Interface

To run GPT4All in python, see the new official Python bindings.

The old bindings are still available but now deprecated. They will not work in a notebook environment. To get running using the python client with the CPU interface, first install the nomic client using pip install nomic Then, you can use the following script to interact with GPT4All:

from nomic.gpt4all import GPT4All
m = GPT4All()
m.open()
m.prompt('write me a story about a lonely computer')

GPU Interface

There are two ways to get up and running with this model on GPU. The setup here is slightly more involved than the CPU model.

  1. clone the nomic client repo and run pip install .[GPT4All] in the home dir.
  2. run pip install nomic and install the additional deps from the wheels built here

Once this is done, you can run the model on GPU with a script like the following:

from nomic.gpt4all import GPT4AllGPU
m = GPT4AllGPU(LLAMA_PATH)
config = {'num_beams': 2,
          'min_new_tokens': 10,
          'max_length': 100,
          'repetition_penalty': 2.0}
out = m.generate('write me a story about a lonely computer', config)
print(out)

Where LLAMA_PATH is the path to a Huggingface Automodel compliant LLAMA model. Nomic is unable to distribute this file at this time. We are working on a GPT4All that does not have this limitation right now.

You can pass any of the huggingface generation config params in the config.

GPT4All Compatibility Ecosystem

Edge models in the GPT4All Ecosystem. Please PR as the community grows. Feel free to convert this to a more structured table.

Roadmap

Short Term

Medium Term

  • (NOT STARTED) Integrate GPT4All with Atlas to allow for document retrieval.
    • BLOCKED by GPT4All based on GPTJ
  • (Done) Integrate GPT4All with Langchain.
  • (IN PROGRESS) Build easy custom training scripts to allow users to fine tune models.

Long Term

  • (NOT STARTED) Allow anyone to curate training data for subsequent GPT4All releases using Atlas.
  • (IN PROGRESS) Democratize AI.

Reproducibility

Trained Model Weights:

Raw Data:

We are not distributing a LLaMa 7B checkpoint.

You can reproduce our trained model by doing the following:

Setup

Clone the repo

git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git
git submodule update --init

Setup the environment

python -m pip install -r requirements.txt

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"

Need Help?

Join the Discord and ask for help in #gpt4all-help

Sample Generations

Provide instructions for the given exercise. Leg Raises

Leg Raises

  1. Stand with your feet shoulder-width apart and your knees slightly bent.
  2. Raise your arms straight out in front of you.
  3. Slowly bend your knees and raise your heels off the ground.
  4. Hold this position for a count of 3, then slowly lower your heels back to the ground.
  5. Repeat the exercise 10 times.
  6. Do not let your knees go beyond your toes.
  7. Keep your back straight and your abdominal muscles engaged.
  8. Do not let your hips sag or your back arch.
  9. Keep your arms straight and your elbows locked.
  10. Do not let your head drop or your shoulders rise.
  11. Breathe normally throughout the exercise.
  12. Rest for 30 seconds before repeating the exercise.
  13. Gradually increase the number of repetitions as you become stronger.

A color description has been provided. Find the CSS code associated with that color. A light red color with a medium light shade of pink

The CSS code associated with the color provided is: #FF6347

Come up with an interesting idea for a new movie plot. Your plot should be described with a title and a summary.

  1. The title of your movie plot should be "The Last Stand".
  2. The summary of your movie plot should be: A group of mercenaries are hired to protect a small town from a dangerous criminal who is on the run. However, the town's sheriff is not willing to let them take over and decides to take matters into his own hands.

Reverse a string in python.

In Python, you can reverse a list or tuple by using the reversed() function on it. Here's an example of how to use this method with strings:

my_string = "Hello World" # Define your original string here
reversed_str = my_string[::-1]   # Use a slice and negative index for reverse order
print(reversed_str)     # Output will be reversed version of the inputted string.

List 10 dogs.

  1. Labrador Retriever
  2. Golden Retriever
  3. Beagle
  4. Poodle
  5. German Shepherd
  6. Bulldog
  7. Rottweiler
  8. Boxer
  9. Shih Tzu
  10. Pug

Write me a poem about the fall of Julius Caesar into a caesar salad in iambic pentameter.

The fall of Julius Caesar into a caesar salad
In iambic pentameter,
The mighty Roman emperor
Fell into a salad of lettuce and croutons,
His empire crumbling around him,
As he was devoured by the hungry diners.
The once mighty emperor
Was now just a salad topping,
His legacy reduced to a mere garnish,
As he was consumed by the masses.
The fall of Julius Caesar into a caesar salad,
In iambic pentameter,
Was a tragic end to a great man,
Who had once ruled the world with an iron fist.
But now, he was just a salad topping,
His legacy reduced to a mere garnish,
As he was consumed by the masses.

What is a three word topic describing the following keywords: baseball, football, soccer:

Sports, athletics, games

Citation

If you utilize this repository, models or data in a downstream project, please consider citing it with:

@misc{gpt4all,
  author = {Yuvanesh Anand and Zach Nussbaum and Brandon Duderstadt and Benjamin Schmidt and Andriy Mulyar},
  title = {GPT4All: Training an Assistant-style Chatbot with Large Scale Data Distillation from GPT-3.5-Turbo},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/nomic-ai/gpt4all}},
}