gpt4all/README.md

167 lines
6.4 KiB
Markdown
Raw Normal View History

2023-03-27 20:20:59 -04:00
<h1 align="center">GPT4All</h1>
2023-03-28 17:06:53 -04:00
<p align="center">Demo, data and code to train an assistant-style large language model with ~800k GPT-3.5-Turbo Generations based on LLaMa</p>
2023-03-28 16:04:18 -04:00
<p align="center">
2023-03-28 16:12:30 -04:00
<a href="https://s3.amazonaws.com/static.nomic.ai/gpt4all/2023_GPT4All_Technical_Report.pdf">:green_book: Technical Report</a>
2023-03-28 16:04:18 -04:00
</p>
2023-03-28 21:07:04 -04:00
<p align="center">
<a href="https://discord.gg/kvmy6dQB">Discord</a>
</p>
2023-03-28 16:04:18 -04:00
2023-03-28 15:55:45 -04:00
![gpt4all-lora-demo](https://user-images.githubusercontent.com/13879686/228352356-de66ca7a-df70-474e-b929-2e3656165051.gif)
2023-03-28 17:25:06 -04:00
2023-03-28 17:06:28 -04:00
Run on M1 Mac (not sped up!)
2023-03-25 12:43:27 -04:00
2023-03-27 20:20:59 -04:00
# Try it yourself
2023-03-28 15:55:45 -04:00
2023-03-29 10:47:19 -04:00
Download the CPU quantized gpt4all model checkpoint: [gpt4all-lora-quantized.bin](https://the-eye.eu/public/AI/models/nomic-ai/gpt4all/gpt4all-lora-quantized.bin).
2023-03-29 10:38:17 -04:00
2023-03-27 20:20:59 -04:00
2023-03-28 22:29:19 -04:00
Clone this repository down and place the quantized model in the `chat` directory and start chatting by running:
2023-03-28 16:38:17 -04:00
- `cd chat;./gpt4all-lora-quantized-OSX-m1` on M1 Mac/OSX
2023-03-29 06:48:13 -04:00
- `cd chat;./gpt4all-lora-quantized-linux-x86` on Linux
- `cd chat;./gpt4all-lora-quantized-win64.exe` on Windows (PowerShell)
2023-03-29 04:15:08 -04:00
- `cd chat;./gpt4all-lora-quantized-OSX-intel` on Intel Mac/OSX
2023-03-25 12:43:27 -04:00
2023-03-28 16:31:53 -04:00
To compile for custom hardware, see our fork of the [Alpaca C++](https://github.com/zanussbaum/gpt4all.cpp) repo.
2023-03-25 12:43:27 -04:00
2023-03-28 17:05:03 -04:00
Note: the full model on GPU (16GB of RAM required) performs much better in our qualitative evaluations.
2023-03-28 11:56:16 -04:00
# Reproducibility
2023-03-28 12:26:23 -04:00
2023-03-28 16:21:09 -04:00
Trained LoRa Weights:
- gpt4all-lora (four full epochs of training): https://huggingface.co/nomic-ai/gpt4all-lora
- gpt4all-lora-epoch-2 (three full epochs of training) https://huggingface.co/nomic-ai/gpt4all-lora-epoch-2
2023-03-28 16:21:09 -04:00
Raw Data:
- [Training Data Without P3](https://s3.amazonaws.com/static.nomic.ai/gpt4all/2022_03_27/gpt4all_curated_data_without_p3_2022_03_27.tar.gz)
2023-03-28 17:24:46 -04:00
- Explorer: https://atlas.nomic.ai/map/gpt4all_data_clean_without_p3
2023-03-28 16:21:09 -04:00
- [Full Dataset with P3](https://s3.amazonaws.com/static.nomic.ai/gpt4all/2022_03_27/gpt4all_curated_data_full_2022_03_27.tar.gz)
2023-03-28 17:24:46 -04:00
- Explorer: https://atlas.nomic.ai/map/gpt4all_data_clean
2023-03-28 12:26:23 -04:00
2023-03-28 15:39:03 -04:00
We are not distributing a LLaMa 7B checkpoint.
2023-03-28 12:26:23 -04:00
2023-03-28 15:32:48 -04:00
You can reproduce our trained model by doing the following:
2023-03-28 11:56:16 -04:00
## Setup
2023-03-25 12:43:27 -04:00
Clone the repo
`git clone --recurse-submodules https://github.com/nomic-ai/gpt4all.git`
2023-03-25 12:43:27 -04:00
2023-03-27 20:46:14 -04:00
`git submodule configure && git submodule update`
2023-03-27 20:46:24 -04:00
2023-03-25 12:43:27 -04:00
Setup the environment
```
python -m pip install -r requirements.txt
cd transformers
pip install -e .
cd ../peft
pip install -e .
```
2023-03-28 16:11:43 -04:00
## Training
2023-03-25 12:43:27 -04:00
2023-03-28 14:52:27 -04:00
```bash
2023-03-28 16:11:43 -04:00
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
2023-03-28 14:52:27 -04:00
```
2023-03-25 17:57:01 -04:00
2023-03-28 16:11:43 -04:00
## Generate
2023-03-25 17:57:01 -04:00
2023-03-28 14:52:27 -04:00
```bash
2023-03-28 20:40:34 -04:00
python generate.py --config configs/generate/generate.yaml --prompt "Write a script to reverse a string in Python"
2023-03-28 14:52:27 -04:00
```
2023-03-28 12:00:25 -04:00
2023-03-28 17:24:46 -04:00
# Sample Generations
2023-03-28 17:22:11 -04:00
### 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.
2023-03-28 12:00:25 -04:00
2023-03-28 17:31:35 -04:00
### 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:
> ```python
> 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 Ceasar into a ceasar salad in iambic pentameter.
>The fall of Julius Ceasar into a ceasar 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 Ceasar into a ceasar 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
2023-03-28 12:00:25 -04:00
If you utilize this reposistory, models or data in a downstream project, please consider citing it with:
```
@misc{gpt4all,
2023-03-28 14:50:27 -04:00
author = {Yuvanesh Anand and Zach Nussbaum and Brandon Duderstadt and Benjamin Schmidt and Andriy Mulyar},
2023-03-28 12:00:25 -04:00
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}},
}
```
2023-03-29 10:47:19 -04:00
### Alternative Download Locations
#### gpt4all-lora-quantized.bin Backup Torrent Link
magnet:?xt=urn:btih:1F11A9691EE06C18F0040E359361DCA0479BCB5A&dn=gpt4all-lora-quantized.bin&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fopentracker.i2p.rocks%3A6969%2Fannounce