2023-06-19 17:43:57 +02:00
# LoRA
2023-04-22 07:34:13 +02:00
2023-06-19 17:43:57 +02:00
LoRA (Low-Rank Adaptation) is an extremely powerful method for customizing a base model by training only a small number of parameters. They can be attached to models at runtime.
2023-04-22 07:34:13 +02:00
2023-06-19 17:43:57 +02:00
For instance, a 50mb LoRA can teach LLaMA an entire new language, a given writing style, or give it instruction-following or chat abilities.
This is the current state of LoRA integration in the web UI:
|Loader | Status |
|--------|------|
| Transformers | Full support in 16-bit, `--load-in-8bit` , `--load-in-4bit` , and CPU modes. |
| ExLlama | Single LoRA support. Fast to remove the LoRA afterwards. |
| AutoGPTQ | Single LoRA support. Removing the LoRA requires reloading the entire model.|
## Downloading a LoRA
The download script can be used. For instance:
2023-04-22 07:34:13 +02:00
```
python download-model.py tloen/alpaca-lora-7b
```
2023-06-19 17:43:57 +02:00
The files will be saved to `loras/tloen_alpaca-lora-7b` .
## Using the LoRA
The `--lora` command-line flag can be used. Examples:
2023-04-22 07:34:13 +02:00
```
2023-04-27 17:03:02 +02:00
python server.py --model llama-7b-hf --lora tloen_alpaca-lora-7b
python server.py --model llama-7b-hf --lora tloen_alpaca-lora-7b --load-in-8bit
2023-06-01 16:32:41 +02:00
python server.py --model llama-7b-hf --lora tloen_alpaca-lora-7b --load-in-4bit
2023-04-27 17:03:02 +02:00
python server.py --model llama-7b-hf --lora tloen_alpaca-lora-7b --cpu
2023-04-22 07:34:13 +02:00
```
2023-06-19 17:43:57 +02:00
Instead of using the `--lora` command-line flag, you can also select the LoRA in the "Parameters" tab of the interface.
2023-04-22 07:34:13 +02:00
## Prompt
For the Alpaca LoRA in particular, the prompt must be formatted like this:
```
Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
Write a Python script that generates text using the transformers library.
### Response:
```
Sample output:
```
Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
Write a Python script that generates text using the transformers library.
### Response:
import transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForCausalLM.from_pretrained("bert-base-uncased")
texts = ["Hello world", "How are you"]
for sentence in texts:
sentence = tokenizer(sentence)
print(f"Generated {len(sentence)} tokens from '{sentence}'")
output = model(sentences=sentence).predict()
print(f"Predicted {len(output)} tokens for '{sentence}':\n{output}")
```
## Training a LoRA
2023-04-23 17:54:41 +02:00
You can train your own LoRAs from the `Training` tab. See [Training LoRAs ](Training-LoRAs.md ) for details.