/yal-discord-bot

Yet Another LLaMA/ALPACA Discord Bot

Primary LanguagePythonOtherNOASSERTION

Yet Another LLaMA Discord Bot

What is this?

A chatbot for Discord using Meta's LLaMA model, 4-bit quantized. The 13 billion parameters model fits within less than 9 GiB VRAM.

Yet Another LLaMA Diffusion Discord Bot Splash Image

Installation

Before you do any of this, you will need a bot token. If you don't have a bot token, follow this guide to make a bot and then add the bot to your server.

Presently this is Linux only, but you might be able to make it work with other OSs.

  1. Make sure you have Python 3.10+, virtualenv (pip install virtualenv), and CUDA installed.
  2. Clone the bot and setup the virtual environment.
git clone https://github.com/AmericanPresidentJimmyCarter/yal-discord-bot/
cd yal-discord-bot
python3 -m virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Setup transformers fork and ignore any version incompatibility errors when you do this.
git clone https://github.com/huggingface/transformers/
cd transformers
git checkout 20e54e49fa11172a893d046f6e7364a434cbc04f
pip install -e .
cd ..
  1. Build 4-bit CUDA kernel.
cd bot/llama_model
python setup_cuda.py install
cd ../..
  1. Download the 4-bit quantized model to somewhere local. For bigger/smaller 4-bit quantized weights, refer to this link.
wget https://huggingface.co/Neko-Institute-of-Science/LLaMA-13B-4bit-128g/resolve/main/llama-13b-4bit-128g.safetensors
  1. Fire up the bot.
cd bot
python -m bot $YOUR_BOT_TOKEN --allow-queue -g $YOUR_GUILD --llama-model="Neko-Institute-of-Science/LLaMA-13B-4bit-128g" --groupsize=128 --load-checkpoint="path/to/llama/weights/llama-13b-4bit-128g.safetensors"

Ensure that $YOUR_BOT_TOKEN and $YOUR_GUILD are set to what they should be, --load-checkpoint=..." is pointing at the correct location of the weights, and --llama-model=... is pointing at the correct location in Huggingface to find the configuration for the weights.

Using an ALPACA model (Recommended)

You can use any ALPACA model by setting the --alpaca flag, which will allow you to add input strings as well as automatically format your prompt into the form expected by ALPACA.

Recommended 4-bit ALPACA weights are as follows:

Or GPT4 finetuned (better coding responses, more restrictive in content):

cd bot
python -m bot $YOUR_BOT_TOKEN --allow-queue -g $YOUR_GUILD --alpaca --groupsize=128 --llama-model="elinas/alpaca-30b-lora-int4" --load-checkpoint="path/to/alpaca/weights/alpaca-30b-4bit-128g.safetensors"

(c) 2023 AmericanPresidentJimmyCarter